這裏用HttpClient發包模擬百度登陸和發帖,驗證碼部分採用機器下載人工識別。java
登錄百度的原理:
1.json
訪問https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=false,生成一個cookie。關鍵值爲BAIDUID
2.api
再次訪問https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=false,獲取Token並保存cookie 關鍵得到tokencookie
3.svn
https://passport.baidu.com/v2/api/?logincheck&callback=bdPass.api.login._needCodestringCheckCallback&tpl=mn&charset=utf-8&index=0&username=test@baidu.com&time=1345429566039google
訪問logincheck傳入本身的用戶名,確認是否須要驗證碼,如須要得到codestring.net
4.code
根據codestring 結合blog
https://passport.baidu.com/cgi-bin/genimage?得到驗證碼圖片token
5.
構造Post參數(主要是用戶名、密碼和Token,codestring和verifycode),訪問http://passport.baidu.com/v2/api/?login登陸上百度
自動發帖原理:
1.
http://tieba.baidu.com/f/user/json_vcode?lm=1177&rs10=2&rs1=1&t=0.45910384411207794 得到vcodestr
lm爲貼吧編號
2.
http://tieba.baidu.com/cgi-bin/genimg?得到驗證碼圖片
3.
結合驗證碼發送表單到(各個參數在頁面源碼中均可以得到)
http://tieba.baidu.com/f/commit/thread/add
支持圖片上傳
參考連接http://code.google.com/p/robotarm/source/browse/trunk/ssl/src/baidu/Baidu.java?spec=svn501&r=501 感謝google!!!!
(轉自:http://blog.csdn.net/chengsimin/article/details/9155729)