模拟登陆百度的基本流程。(2016.6.10.运用IE9的F12分析)
1.访问地址:https://passport.baidu.com/passApi/js/uni_login_wrapper.js?
cdnversion=1465555928630&_=1465555894377
访问方式:GET
从cookie中获得BAIDUID的值
2.访问地址:https://passport.baidu.com/v2/api/?getapi&tpl=mn&apiver=v3&tt=1465555928990&class=login&gid=1951A70-04F4-4F3D-A29E-
353DB75ECD34&logintype=dialogLogin&callback=bd__cbs__2l3f0h
访问方式:GET
从返回的响应标头(Response Body)即HTML中获得token的值
3.访问地址:https://passport.baidu.com/v2/api/?
loginhistory&token=3cd06701e02dc22826b7610e8e7d8bb0&tpl=mn&apiver=v3&tt=1465555929038&gid
=1951A70-04F4-4F3D-A29E-353DB75ECD34&callback=bd__cbs__pl6i4n
访问方式:GET 须发送cookie,包含BAIDUID,HOSUPORT
从发回的cookie中获得UBI.
4.访问地址:https://passport.baidu.com/v2/getpublickey?
token=3cd06701e02dc22826b7610e8e7d8bb0&tpl=mn&apiver=v3&tt=1465555937995&gid=1951A70-
04F4-4F3D-A29E-353DB75ECD34&callback=bd__cbs__8v6z4g
访问方式:GET 须发送cookie,包含BAIDUIN,HOSUPPORT、UBI
从返回的响应正文中获得rsakey。cookie 表现为("key":"值")
5.访问地址:https://passport.baidu.com/v2/api/?login
访问方式:POST 须发送post data 和cookie
然后,如果上面都正确,从返回的cookie中验证是否模拟登陆成功
其中:
post data{
照写的参数与其值
staticpage=https%3A%2F%2Fwww.baidu.com%2Fcache%2Fuse%2Fhtml%2Fv3Jump.html
charset=utf8
tpl=mn
apiver=v3
safeflg=0
u=https%3A%2F%2Fwww.baidu.com%2F&
detect=1
quick_user=0
logintype=dialogLogin
logLoginType=pc_loginDialog
loginmerge=true
splogin=rate
username=
password= 注释:password是经过加密的,不知直接发送不经加密的密码可行不
crypttype=12
可忽略的参数(没有验证过)
tt(有值的)
gid(有值的)
ppui_logintime(有值的,但可以忽略)
callback(有值的,但可以忽略)
callback=(有值,但不是固定的,也不是从其他地方得到的,忽略。parent.bd__pcbs__poq4nv)
subpro=
codestring=
isPhone=
idc=
countrycode=
需要先访问其他URL才能得到的参数
token
rsakey
}
cookie{
HOSUPPORT=1
须访问其他URL得到的参数
BAIDUID
UBI
}
参考:http://www.crifan.com/use_ie9_f12_to_analysis_the_internal_logical_process_of_login_baidu_main_page_website/
再写的原因:百度登陆流程已经改变,原代码不能使用。也请有经验的大神,分析一下我这个分析对不对,提点意见,帮助改进。