requests模拟登陆京东
环境:python 3.6.1 | requests 2.18.4 | lxml 4.0.0 | pillow 4.2.1 时间:2017-10-1 可用
-
以前在一次京东秒杀活动中使用selenium模拟登陆过京东,但最后没抢到,不知是运气不佳还是selenium太慢,这次用requests不知能否成功,以下只是模拟登陆的具体思路和代码。
模拟登陆三个要点:目标网址(是否需要构造)、post数据(包含验证信息)、头部信息
一、思路
模拟登陆大致模式分三个步骤 1、试探 打开浏览器调试工具(我用的是Firefox+chrome),在登陆页面输入账号、密码时故意输错,查看提交了那些数据,如下图
在红色方框里的就是我们要提交的数据,注意前面的字段,这些我们基本都可以从源文件里提取出来。 2、准备数据(post参数) 我们可以把提取出的数据加到请求里,这里我们要注意提交的网址,在网址后面大部分都要加参数的,这时我们就要分析再构造了;如果有验证码的话还要进行验证码图片的提取,这也是个坑,
这里我们可以利用调试工具查看验证码图片地址,对我们分析很有帮助的。 3、尝试登陆,如果没成功就检查前面的数据是否全且正确。
二、下面上代码
1 |
|
至此模拟登陆京东完毕,总结一下要注意的点
- 验证码地址和登陆提交地址都需要构造
- 获取验证码的头部信息与登陆提交时的头部信息不同
- Firebox调试工具是个好用且方便的利器,熟练使用可以更快的分析
由于需要手动输入验证码,如果要秒杀的话肯定来不及,我的思路是提前5分钟让程序先跑起来,在程序中加定时time.sleep(time),time等于秒杀时间减去当前时间。ok!但愿我有一个好运气,抢到一些什么,方不辜负我这一整天的心血。2017-10-1。