前言
文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者: python社区
源自: https:// mp.weixin.qq.com/s? src=11×tamp=1573190455&ver=1961&signature=uNF6dCQnbOrci0-uQiuH7xvH0n7FnyCMMQvUHBHfV6-*lPQ27qVrNPsH5IgLVrupPLJe2rAKJl8NhB0S2SiIamnpE86z6FmAQQx5aUC6gZ5h*oOTfKIdOFC51F*5Bynt&new=1
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
http
经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持。
温馨提示
现在淘宝换成了滑块验证了,比较难解决这个问题,以下的代码没法用了,仅作学习参考研究之用吧。
本篇内容
- python模拟登录淘宝网页
- 获取登录用户的所有订单详情
- 学会应对出现验证码的情况
- 体会一下复杂的模拟登录机制
探索部分成果
- 淘宝的密码用了AES加密算法,最终将密码转化为256位,在POST时,传输的是256位长度的密码。
- 淘宝在登录时必须要输入验证码,在经过几次尝试失败后最终获取了验证码图片让用户手动输入来验证。
- 淘宝另外有复杂且每天在变的 ua 加密算法,在程序中我们需要提前获取某一 ua 码才可进行模拟登录。
- 在获取最后的登录 st 码时,历经了多次请求和正则表达式提取,且 st 码只可使用一次。
整体思路梳理
- 手动到浏览器获取 ua 码以及 加密后的密码,只获取一次即可,一劳永逸。
- 向登录界面发送登录请求,POST 一系列参数,包括 ua 码以及密码等等,获得响应,提取验证码图像。
- 用户输入手动验证码,重新加入验证码数据再次用 POST 方式发出请求,获得响应,提取 J_Htoken。
- 利用 J_Htoken 向 alipay 发出请求,获得响应,提取 st 码。
- 利用 st 码和用户名,重新发出登录请求,获得响应,提取重定向网址,存储 cookie。
- 利用 cookie 向其他个人页面如订单页面发出请求,获得响应,提取订单详情。
是不是没看懂?没事,下面我将一点点说明自己模拟登录的过程,希望大家可以理解。
前期准备
由于淘宝的 ua 算法和 aes 密码加密算法太复杂了,ua 算法在淘宝每天都是在变化的,不过,这个内容你获取之后一直用即可,经过测试之后没有问题,一劳永逸。
那么 ua 和 aes 密码怎样获取呢?
我们就从浏览器里面直接获取吧,打开浏览器,找到淘宝的登录界面,按 F12 或者浏览器右键审查元素。
在这里我用的是火狐浏览器,首先记得在浏览器中设置一下显示持续日志,要不然页面跳转了你就看不到之前抓取的信息了。在这里截图如下
好,那么接下来我们就从浏览器中获取 ua 和 aes 密码
点击网络选项卡,这时都是空的,什么数据也没有截取。这时你就在网页上登录一下试试吧,输入用户名啊,密码啊,有必要时需要输入验证码,点击登录。
等跳转成功后,你就可以看到好多日志记录了,点击图中的那一行 http://login.taobo.com,然后查看参数,你就会发现表单数据了,其中就包括 ua 还有下面的 password2,把这俩复制下来,我们之后要用到的。这就是我们需要的 ua 还有 aes 加密后的密码。
输入验证码并获取J_HToken
代码如下:
import
利用J_HToken获取st
#通过token获得st
最终运行结果
.