python3下使用requests模拟用户登录 —— 中级篇(百度云俱乐部)

python3下使用requests模拟用户登录 —— 中级篇(百度云俱乐部)

1. 背景

2. 环境

  • 系统:win7
  • python 3.6.1
  • requests 2.14.2 (通过pip list查看)

3. 模拟登录百度云俱乐部

3.1. 分析用户登录必要的信息

  • 值得一提的是,在分析这种复杂登录请求时,需要保存登录过程中,所有的页面请求和响应情况,这样才方便找到所有的登录参数,回溯查找,寻找来源。 如果之前的信息丢失了,那重新打开的请求和上一次请求的参数是对不上的,就不方便查找数据来源了。
    这里写图片描述

  • 点击登录,提取到的信息如下:

# General:
Request URL:http://www.51baiduyun.com/member.php?mod=logging&action=login&loginsubmit=yes&handlekey=login&loginhash=LyqBH&inajax=1
Request Method:POST
Status Code:200 OK
Remote Address:47.91.148.25:80
Referrer Policy:no-referrer-when-downgrade

# Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.9
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:216
Content-Type:application/x-www-form-urlencoded
Cookie:L3em_2132_saltkey=geeeP9NE; L3em_2132_lastvisit=1521177080; UM_distinctid=1622d6bb6c589-07e7bc1d9d570b-454c092b-1fa400-1622d6bb6c6609; L3em_2132_lastcheckfeed=1315026%7C1521180699; L3em_2132_nofavfid=1; L3em_2132_ulastactivity=406fKQfd1L5Bpyfb%2BwxJVkSKEP%2FeA%2FE0EKi0tL5iIiN0sPTQgPK7; L3em_2132_smile=1D1; Hm_lvt_79316e5471828e6e10f2df47721ce150=1521508740,1521515152,1521516204,1521712944; Hm_lvt_eaefab1768d285abfc718a706c1164f3=1521508740,1521515152,1521516204,1521712944; L3em_2132_st_p=0%7C1521785655%7C706b59df71621dff8c64747f9df9e6a1; L3em_2132_visitedfid=38D66D68D37D44D41D45; L3em_2132_viewid=tid_480044; CNZZDATA1253365484=727141784-1521177990-null%7C1521783379; CNZZDATA1253863031=1430494274-1521176587-null%7C1521787718; Hm_lpvt_79316e5471828e6e10f2df47721ce150=1521787672; Hm_lpvt_eaefab1768d285abfc718a706c1164f3=1521787672; L3em_2132_sid=AHqj37; L3em_2132_seccode=79666.06fdbff670d881c68f; L3em_2132_lastact=1521787976%09misc.php%09seccode
Host:www.51baiduyun.com
Origin:http://www.51baiduyun.com
Referer:http://www.51baiduyun.com/
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36

# Query String Parameters
mod:logging
action:login
loginsubmit:yes
handlekey:login
loginhash:LyqBH
inajax:1

# Form Data
formhash:7736cc00
referer:http://www.51baiduyun.com/
loginfield:username
username:aaaaaaaaaa
password:bbb12345678
questionid:0
answer:
seccodehash:cSAAHqj37
seccodemodid:member::logging
seccodeverify:eB3X
  • 我们尝试用不同的用户名登陆几次,还记得之前说过,使用错误的密码登录吧,防止登陆成功,造成页面跳转,干扰分析。结果发现有几个主要的登录参数需要特别留意,每次都会不同,如下所示:
    • formhash
    • username:用户名
    • password:密码
    • seccodehash
    • seccodeverify:验证码
  • 其中 formhash 和 seccodehash的来源目前还不明朗,seccodeverify的获取也需要技巧,接着看往下…

3.2. 寻找 formhash

  • 像这种类型的参数,一般来说有几个来源:
    • 第一,网页源代码中携带。
    • 第二,藏在服务器返回过来的cookie中。
    • 第三,网页js脚本计算生成。
    • 第四,登录时,请求js脚本生成,或者同步产生的其他网页中。
  • 比较幸运的是,直接在登录页的源代码中找到了(同时找到的还有referer):
    这里写图片描述
# Request URL:http://www.51baiduyun.com/member.php?mod=logging&action=login&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login

<form method="post" autocomplete="off" name="login" id="loginform_LyqBH" class="cl" onsubmit="pwdclear = 1;ajaxpost('loginform_LyqBH', 'returnmessage_LyqBH', 'returnmessage_LyqBH', 'onerror');return false;" action="member.php?mod=logging&amp;action=login&amp;loginsubmit=yes&amp;handlekey=login&amp;loginhash=LyqBH">
<
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值