核心信息:请求网址: /v2/api/?login
请求方法: POST
状态码: HTTP/1.1200OK
请求头//用户代理UserAgent,是指浏览器,它的信息包括硬件平台、系统软件、应用软件和用户个人偏好。在X.400电子系统中,用户代理是一种对数据打包、创造分组头,以及编址、传递消息的部件。用户代理并不是仅指浏览器,还包括搜索引擎。 User-Agent: Mozilla/5.0(WindowsNT6.1;WOW64;rv:40.0)Gecko/0101Firefox/40.0 //引用地址
Referer: /?location=http%3A%2F%%2F //指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。
Pragma: no-cache //初始URL中的主机和端口。
Host:
//禁止追踪
DNT: 1
Connection: keep-alive //缓存方式
Cache-Control:no-cache //浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 //浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。
Accept-Encoding: gzip,deflate //浏览器可接受的MIME类型。
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
发送Cookie
UBI: fi_PncwhpxZ~TaKAZJs2KmY1aj~eJSAy5waoThqofQDTY~GMYKTqMLZwI855qbp5KfkoVWSLWDm426-o6Za
PSTM: 1440874285
HOSUPPORT: 1
H_PS_PSSID: 16716_1435_16710_16975_17012_12867_16937_16800_16935_17003_15310_11732_13932_16969_10634_16866_17051
BIDUPSID: F2D05C9CD65A4B08A3398B45DCCE79FA
BDRCVFR[gltLrB7qNCt]: mk3SLVN4HKm
BAIDUID: F2D05C9CD65A4B08A3398B45DCCE79FA:FG=1
发送表单数据//验证码verifycode:
username: 13543452240
u: /sendbduss.do?source=0&location=http%3A%2F%%2F&_t=1440874289725
tt: 1440874310669
tpl: zongheng
token: ba24e21e7854ca8ff0c97d3374f3cd67
subpro:
staticpage: /v3Jump.html
safeflg: 0
rsakey: Qa94r9ecjnjSIN8kwVwGearzOG7Sjco9
quick_user: 0
ppui_logintime: 20266
password: QzfsW8bF6OMeq9cYgOH/eZDdUGsRkmmCCpczv/z4WFK7xTOWmtAfd2oOaS64YzhghDqYRKxPwmyEOP9NW+/Tj3t3gr73SR7oDh71HtXWd/h+pSWyG1K/y8ZplEz2Ud8ed0JyK03i/lLOvrVO4IXVoRuSNs5tXlfPm/VpbZGwh6s=
mem_pass: on
logLoginType: pc_loginBasic
logintype: basicLogin
loginmerge: true
isPhone: false
idc:
gid: 2CAD7C5-2890-4E73-9EF4-7D4884DD7BE5
detect: 1
crypttype: 12
codestring:
charset: utf-8
callback: parent.bd__pcbs__ok0875
apiver: v3
响应头Δ328ms
Vary: Accept-Encoding
Transfer-Encoding: chunked
Pragma: public
P3p: CP="OTIDSPCORIVAOURINDCOM"
Last-Modified: Sat,29Aug18:52:0718AugGMT
Expires: 0
Etag: w/"NWCZSRAtTJuAKSuXPTGfrybJep4Uu7Ps:1440874327"
Date: Sat,29Aug18:52:07GMT
Content-Type: text/html
Content-Encoding: gzip
Connection: keep-alive
Cache-Control: public
收到的Cookie
USERNAMETYPE: 3
UBI: fi_PncwhpxZ~TaL902PKy-dLNuHXHIXCfAoio8uSphdKLcOUgX~6tPeszSRclJGh4I2JOyHjF89eJpUNN-pSY7AWQZg9~lUka36Lzgi-vwAcSonARzzJoORX9aCMR0yze0BG9xmQd0eLHjt1HTp4MKrqisD67rt
STOKEN: 831edce8a805251f2804d16f097bc9f38df98fb3d107267581f1481eaf007029
SAVEUSERID: a619ac30812bc617e9fdea028cd957
PTOKEN: deleted
PTOKEN: d56a25169bf00e85b3526db09775ebd9
PASSID: yZuogE
HISTORY: 4ae4298bf57103aa5139faa502cd2fd4a5185c
BDUSS: GhSaWRGaEF3eTRtSTJTQU9NMndMTmkyek1NeVl2TzZ3Q0tvbm5mSExJVlhqQWxXQVFBQUFBJCQAAAAAAAAAAAEAAABF25csu6jT6s7UzP27qNPqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFf~4VVX~-FVR
响应主体Δ0ms
<!DOCTYPEhtml><html><head><metahttp-equiv=Content-Typecontent="text/html;charset=UTF-8"></head><body><script>varhref=decodeURIComponent("http:\/\/\/v3Jump.html")+"?"varaccounts='&accounts='href+="err_no=0&callback=parent.bd__pcbs__ok0875&codeString=&userName=13543452240&phoneNumber=&mail=&hao123Param=R2hTYVdSR2FFRjNlVFJ0U1RKVFFVOU5NbmRNVG1reWVrMU5lVmwyVHpaM1EwdHZibTVtU0V4SlZsaHFRV3hYUVZGQlFVRkJKQ1FBQUFBQUFBQUFBQUVBQUFCRjI1Y3N1NmpUNnM3VXpQMjdxTlBxQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRmZ%2BNFZWWH4tRlZS&u=/sendbduss.do%3Fsource%3D0%26location%3Dhttp%253A%252F%%252F%26_t%3D1440874289725&tpl=&secstate=&gotourl=&authtoken=&loginproxy=&resetpwd=&vcodetype=&lstr=<oken=&bckv=1&bcsync=DwCry5RutZZ06iU%2BuYc%2FwZrAQJnInlokriRZJWd%2FF5RI8mItiLYvSbtnU%2FVSlAywgH0ozO5vdRICJ2F%2B3Xe%2BgxuGEbPQMGeZi9dUzXCVCG%2FELi5Xtw9Nq%2BEwpSaiJeE4mcbaTIS19CYg7roJ28UN4vg6X0JL1PAC5bRU3pjzOb4NFmRa%2By8pJxELNwSKh0hl%2FwWA0YYBmT4EDr7cZiL6cDOX83kgCoH8fvcuPh%2BoTwk57lk2tCeA6l0PIm%2FUAdHh9ns2LQEr4qBL35J54REy4OLV9xGGVP8L9hCnB%2BEU2eUAEyF5J%2FGcRjy1ivrQgXcTvb1mkcLoKpMf%2FeB5NopdSQ%3D%3D&bcchecksum=1222223214&code=&bdToken=&bctime=1440874327"+accounts;if(window.location){window.location.replace(href);}else{document.location.replace(href);}</script>整合后得到(多次抓取后不相同的地方):发送Cookie
UBI: fi_PncwhpxZ~TaKAcsgiukurYX~bjBxM2Cm-d6x1bOHomipF~NPSN3xBGhD-fkwY7QKXMdGtbGGEkfH6rvQ
PSTM: 1440874509
H_PS_PSSID: 1425_16997_16975_12657_17012_12867_16800_16934_17004_15773_12342_13932_16969_10632_16866_17050
BIDUPSID: 21447B391F8874869C7BFFD4B51D8474
BAIDUID: 21447B391F8874869C7BFFD4B51D8474:FG=1
发送表单数据
u: /sendbduss.do?source=0&location=http%3A%2F%%2F&_t=1440874506320
tt: 1440874525779
token: b753754fb9ad1d985154eec7c6015320
rsakey: utuY20mVmofD3tjcZrV1uzvK4lpjPvCU
ppui_logintime: 18414
password: TsBsc8UGkjwxfd3E9BHnQ1pCoik5hfjKbbHYcMWGoocjW1/1l2RqJomIxbwhnbd5r8sWwFhheHpQoU4Ex4a+sOT3REfRV3jnwQoBaMZ2dLzI9NNne/NR1V1gL9Z0Nz3J0a6C9iHglJywzhgTVwTiOshvw3X9/idtTBGlq79Z7Tk=
gid: E42C04A-88D7-427B-AA02-0B4C2AB883F0
callback: parent.bd__pcbs__5qwpki
收到的Cookie
USERNAMETYPE: 3
UBI: fi_PncwhpxZ~TaL9xQBSBqH-3L1dTsNNQk8R8DWYT5iAPwnL4gPQEcTXh3vugMdjEblVyepe-BoSr33XpvbwLE4zSKmqQANQPWvdqGevAL6QEsMsXhit~afIK3SfiY5zmFqtxJiEPa9yJFyLnmL2d1eXWfq
STOKEN: 2d327b0913875334b2368a899f675fed2688318f8988a44914b0c0af37301fdc
PTOKEN: b9beddf75543aaf10ae721dbe744f038
PASSID: 8rH1Bp
BDUSS: UdmOX54b01FOWV6WWNkRmlWRDBSSklQanJMN3BNbDVZU2x2eGJnZlJERXVqUWxXQUFBQUFBJCQAAAAAAAAAAAEAAABF25csu6jT6s7UzP27qNPqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4A4lUuAOJVZ登录逻辑总结(直接访问登录页面): 1、先登录百度首页获取cookies PSTM: 1440874509
H_PS_PSSID: 1425_16997_16975_12657_17012_12867_16800_16934_17004_15773_12342_13932_16969_10632_16866_17050
BIDUPSID: 21447B391F8874869C7BFFD4B51D8474
BAIDUID: 21447B391F8874869C7BFFD4B51D8474:FG=1 2、利用以上获得的cookie直接访问页面 /v2/api/?getapi&tpl=zongheng&apiver=v3&tt=1441287460704&class=login&gid=26D2A76-9D6C-4EBE-8687-25C6591194B2&logintype=basicLogin&callback=bd__cbs__v9tdyy获取参数token 注:tt是一个时间戳,用以下方法生成 /// <summary>/// 获取时间戳/// </summary> public string GetTimeStamp() { TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); return Convert.ToInt64(ts.TotalSeconds).ToString(); } 3、用token访问该地址,获取raskey/v2/getpublickey?token=5d0fc87cb0de39982c06795d3356e239&tpl=zongheng&apiver=v3&tt=1441311621601&gid=59723A6-1178-4614-B7AF-779917BC4453&callback=bd__cbs__gaci47和publickey 4、利用rsa加密算法将密码加密(公钥:publickey) var pemToXml = RsaHelper.PemToXml(result_publicKey.Pubkey); pwd = RsaHelper.RSAEncrypt(pemToXml, pwd); 5、检验是否需要验证码 百度登录有一点比较好,就是他生成验证码会有一个codetype,而且这个type同一个BAIDUID申请是不变的,服务器会根据这个申请的type提供一个codestring,也就是验证码(我们是看不懂的,这个需要我们提交给服务器让它自动解析,就可以获得验证码图片) 6、提交数据登录
如果返回的Json数据显示err_0,即代表成功登陆,257为验证码错误,7为密码错误
7、获得百度提供的BDUSS,即可到想去的网站继续进行下一步分析
上面写的是编写软件时的大概步骤详细步骤,具体步骤后面会继续更新,希望能够帮助到各位有需要的童鞋~欢迎各位评论交流
PS:模拟登录最重要的步骤是抓包分析,获取对应的Cookies,如果遇上问题,请先检查代码逻辑,看看是否已经获得网站需要提供Cookie(有些不是必要的可以不传)