使用python模拟登陆腾讯微博
由于业务需要,研究了一下腾讯微博等登陆,下面分享一些经验给大家: 标题写的是腾讯微博的登陆,其实也可以隐身到腾讯旗下多个产品的登陆,比如QQ空间,webQQ等,想到这儿大伙是不是很激动呢? [TOC] 表急,等我细细道来。 数据采集 有时候简单的数据不需要这么大费周折!使用某些语言自带的web工具也是可以的!下面我以Python为例: 分析登录过程 登录过程需要抓包,我是用的HttpWatch,大体步骤如下 第一步 手动登陆,抓包,记录登录过程 当输入完账号后想服务器请求验证码 等级登陆按钮后将登录信息发送至认证服务器,实现第一次认证 服务器返回登陆成功信息,其中包含最终URL 第二次认证,获取腾讯微博的cookie 第二步 伪造登录过程 获取验证码 根据验证码计算出加密后的密码以及其他信息,发送GET请求至认证服务器 根据返回URL获取最终cookie 工作难点 本文假设读者理解http协议及数据包的发送原理,以此为基础,工作的难点就集中在数据的准备上。 密码的加密原理 cookie的处理 header的UA及refer的一致性 密码加密算法 以下提取自登录页面的c_login_2.js文件 function getEncryption(password, uin, vcode) { var str1 = hexchar2bin(md5(password)); var str2 = md5(str1 + uin); var str3 = md5(str2 + vcode.toUpperCase()); return str3 } if (b == "login") { d.u = encodeURIComponent(pt.plogin.at_accout); d.verifycode = $("verifycode").value; if (pt.plogin.needShowNewVc && pt....