首先訪問(wèn)qq.mail.com 這個(gè)url分析html代碼,發(fā)現(xiàn),里面有很多加密的js,而且配合httpwatch工具發(fā)現(xiàn),哇,靠,這個(gè)太復(fù)雜了。
如果簡(jiǎn)單的使用java模擬瀏覽器 訪問(wèn)qq mail服務(wù)器獲取 好友列表,實(shí)在是太困難了,個(gè)人能力有限實(shí)現(xiàn)不了,想了其他辦法,創(chuàng)建了
web項(xiàng)目,分析不了騰訊是怎么加密,但我可以作為一種代理,如圖:

要采用上面的方式來(lái)獲取好友,大致可以分為一下幾個(gè)步驟:
1.首先制作一個(gè)login.jsp頁(yè)面,代碼直接從騰訊郵件的登陸頁(yè)面中復(fù)制過(guò)來(lái),把頁(yè)面交互的改成我們自己的服務(wù)器.
(1)獲取驗(yàn)證碼的地址:
http://ptlogin2.qq.com/getimage?aid=23000101 后面帶個(gè)隨機(jī)數(shù),為了防止瀏覽器緩存。
(2)當(dāng)用戶輸入用戶名 密碼 和驗(yàn)證碼,點(diǎn)登陸的時(shí)候,也讓用戶提交到我們的服務(wù)器來(lái)。
2. 我這里寫(xiě)了一個(gè)servlet,該類是從qq郵件服務(wù)器中獲取驗(yàn)證碼的,如何獲取呢?我采用的是
httpclient4.0-beta2 包,該包是apache的 Apache HttpComponents project,是個(gè)開(kāi)源的,具體使用和了解可以訪問(wèn):
http://hc.apache.org/httpcomponents-client/index.html,(該項(xiàng)目功能很強(qiáng)大)
在獲取了驗(yàn)證碼之后,qq服務(wù)器他在cookie中寫(xiě)了一個(gè)verifysession,當(dāng)你點(diǎn)登陸的時(shí)候
客戶端校驗(yàn)需要。
3. 把客戶端提交過(guò)來(lái)的信息我們?nèi)フ?qǐng)求qq服務(wù)器,這樣就會(huì)登陸成功了,服務(wù)器會(huì)返回帶sid的html代碼,解析出來(lái)sid的值
然后訪問(wèn)http://m11.mail.qq.com/cgi-bin/addr_listall?sid=" +sid+"&sorttype=null&category=common,就獲取到qq中好友分組,以及每一個(gè)組的鏈接地址
4.請(qǐng)求每一個(gè)鏈接 就可以得到每一組的好友了
上面我只是寫(xiě)了實(shí)現(xiàn)的思路,有興趣的可以跟我聯(lián)系,具體代碼可以分享 給大家 。。。 qq:253041869