首先访问qq.mail.com 这个url分析html代码,发现,里面有很多加密的js,而且配合httpwatch工具发现,哇,靠,这个太复杂了。
如果简单的使用java模拟浏览器 访问qq mail服务器获取 好友列表,实在是太困难了,个人能力有限实现不了,想了其他办法,创建了web项目,分析不了腾讯是怎么加密,但我可以作为一种代理,如图:
要采用上面的方式来获取好友,大致可以分为一下几个步骤:
1.首先制作一个login.jsp页面,代码直接从腾讯邮件的登陆页面中复制过来,把页面交互的改成我们自己的服务器。
(1)获取验证码的地址:http://ptlogin2.qq.com/getimage?aid=23000101 后面带个随机数,为了防止浏览器缓存。
(2)当用户输入用户名 密码 和验证码,点登陆的时候,也让用户提交到我们的服务器来。
2. 我这里写了一个servlet,该类是从qq邮件服务器中获取验证码的,如何获取呢?我采用的是httpclient4.0-beta2 包,该包是apache的 Apache HttpComponents project,是个开源的,具体使用和了解可以访问:http://hc.apache.org/httpcomponents-client/index.html,(该项目功能很强大)
在获取了验证码之后,qq服务器他在cookie中写了一个verifysession,当你点登陆的时候客户端校验需要。
3. 把客户端提交过来的信息我们去请求qq服务器,这样就会登陆成功了,服务器会返回带sid的html代码,解析出来sid的值然后访问http://m11.mail.qq.com/cgi-bin/addr_listall?sid=" +sid+"&sorttype=null&category=common,就获取到qq中好友分组,以及每一个组的链接地址4.请求每一个链接 就可以得到每一组的好友了