C#模拟百度登录并到指定网站评论回帖(一)

核心信息:
请求网址:  https://passport.baidu.com/v2/api/?login
请求方法:  POST
状态码:  HTTP/1.1 200 OK
请求头 
//用户代理 UserAgent,是指浏览器,它的信息包括硬件平台、系统软件、应用软件和用户个人偏好。在X.400电子系统中,用户代理是一种对数据打包、创造分组头,以及编址、传递消息的部件。用户代理并不是仅指浏览器,还包括搜索引擎
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
//引用地址
Referer: http://passport.zongheng.com/?location=http%3A%2F%2Fwww.zongheng.com%2F
//指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。
Pragma: no-cache
//初始URL中的主机和端口。

Host: passport.baidu.com

//禁止追踪
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: http://zongheng.baidu.com/sendbduss.do?source=0&location=http%3A%2F%2Fwww.zongheng.com%2F&_t=1440874289725
tt: 1440874310669
tpl: zongheng
token: ba24e21e7854ca8ff0c97d3374f3cd67
subpro:
staticpage: http://passport.zongheng.com/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=" OTI DSP COR IVA OUR IND COM "
Last-Modified: Sat, 29 Aug 2015 18:52:07 18AugGMT
Expires: 0
Etag: w/"NWCZSRAtTJuAKSuXPTGfrybJep4Uu7Ps:1440874327"
Date: Sat, 29 Aug 2015 18:52:07 GMT
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
 
整合后得到(多次抓取后不相同的地方)
发送 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: http://zongheng.baidu.com/sendbduss.do?source=0&location=http%3A%2F%2Fwww.zongheng.com%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、先登录百度首页 www.baidu.com获取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直接访问页面
https://passport.baidu.com/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是一个时间戳,用以下方法生成
        ///  
       /// 获取时间戳  
       ///   
       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 https://passport.baidu.com/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(有些不是必要的可以不传)

你可能感兴趣的:(C#模拟百度登录并到指定网站评论回帖(一))