这里用HttpClient发包模拟百度登录和发帖,验证码部分采用机器下载人工识别。
登陆百度的原理:
1.
访问https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=false,生成一个cookie。关键值为BAIDUID
2.
再次访问https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=false,获取Token并保存cookie 关键获得token
3.
https://passport.baidu.com/v2/api/?logincheck&callback=bdPass.api.login._needCodestringCheckCallback&tpl=mn&charset=utf-8&index=0&username=test@baidu.com&time=1345429566039
访问logincheck传入自己的用户名,确认是否需要验证码,如需要获得codestring
4.
根据codestring 结合
https://passport.baidu.com/cgi-bin/genimage?获得验证码图片
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)