总览

使用HTTP登录百度,主要步骤

  1. 获取BAIDUID
  2. 获取APITOKEN
  3. 发送POST登录

辅助步骤

  • 检测验证码
  • 获取验证码

提示:获取验证码只有在需要验证码的情况下才是必须的。


<br/>

第一步,获取BAIDUID

以GET的方式访问

http://tieba.baidu.com/dc/common/tbs

BAIDUID包含在返回的Cookie中。

<br/>

第二步,获取APITOKEN

以GET的方式访问

https://passport.baidu.com/v2/api/?getapi&tpl=mn

并在Cookie中带上BAIDUID,返回内容如下

var bdPass=bdPass||{};
bdPass.api=bdPass.api||{};
bdPass.api.params=bdPass.api.params||{};
bdPass.api.params._token=7770f19655cb9c8cd0b30b0a514236d4;
    bdPass.api.params._tpl=mn;

其中 bdPass.api.params._token 就是 APITOKEN。

<br/>

第三步,发送POST登录

构建登录内容:

charset=utf-8&mem_pass=on&token=&tpl=mn&username=&password=&codestring=&verifycode=
  • token:APITOKEN
  • username:帐号
  • password:密码
  • codestring:验证码标识符
  • verifycode:验证码

如果没有验证码,最后两个参数是可以忽略的。

以POST方式发送登录内容到

https://passport.baidu.com/v2/api/?login

并在Cookie中带上BAIDUID,返回内容如下

#此处略去#
var url = encodeURI(#此处内容略去#&codeString=&error=0);
#此处略去#

error是错误码,如果 error=0 表明登录成功。在Cookie中可以获取到BDUSS,此时登录操作全部完成。

<br/>

检测验证码

以GET方式请求

https://passport.baidu.com/v2/api/?logincheck&charset=utf-8&username=你的帐号

返回的内容中codestring如果有值,表明登录时需要验证码。
在登录时,带上codestring和识别后的验证码,就可以以有验证码的方式进行登录。

<br/>

获取验证码

验证码图片地址

https://passport.baidu.com/cgi-bin/genimage?验证码的codestring

<br/>
<br/>

python版DEMO代码(暂未处理中文帐号)

标签: none

添加新评论