点击上方[Python与人工智能社区]右上角[...][设为星标⭐]

经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持。

温馨提示

现在淘宝换成了滑块验证了,比较难解决这个问题,以下的代码没法用了,仅作学习参考研究之用吧。

本篇内容

1. python模拟登录淘宝网页

2. 获取登录用户的所有订单详情

3. 学会应对出现验证码的情况

4. 体会一下复杂的模拟登录机制

探索部分成果

1. 淘宝的密码用了AES加密算法,最终将密码转化为256位,在POST时,传输的是256位长度的密码。

2. 淘宝在登录时必须要输入验证码,在经过几次尝试失败后最终获取了验证码图片让用户手动输入来验证。

3. 淘宝另外有复杂且每天在变的 ua 加密算法,在程序中我们需要提前获取某一 ua 码才可进行模拟登录。

4. 在获取最后的登录 st 码时,历经了多次请求和正则表达式提取,且 st 码只可使用一次。

整体思路梳理

1. 手动到浏览器获取 ua 码以及 加密后的密码,只获取一次即可,一劳永逸。

2. 向登录界面发送登录请求,POST 一系列参数,包括 ua 码以及密码等等,获得响应,提取验证码图像。

3. 用户输入手动验证码,重新加入验证码数据再次用 POST 方式发出请求,获得响应,提取 J_Htoken。

4. 利用 J_Htoken 向 alipay 发出请求,获得响应,提取 st 码。

5. 利用 st 码和用户名,重新发出登录请求,获得响应,提取重定向网址,存储 cookie。

6. 利用 cookie 向其他个人页面如订单页面发出请求,获得响应,提取订单详情。

是不是没看懂?没事,下面我将一点点说明自己模拟登录的过程,希望大家可以理解。

前期准备

由于淘宝的 ua 算法和 aes 密码加密算法太复杂了,ua 算法在淘宝每天都是在变化的,不过,这个内容你获取之后一直用即可,经过测试之后没有问题,一劳永逸。

那么 ua 和 aes 密码怎样获取呢?

我们就从浏览器里面直接获取吧,打开浏览器,找到淘宝的登录界面,按 F12 或者浏览器右键审查元素。

在这里我用的是火狐浏览器,首先记得在浏览器中设置一下显示持续日志,要不然页面跳转了你就看不到之前抓取的信息了。在这里截图如下:

好,那么接下来我们就从浏览器中获取 ua 和 aes 密码

点击网络选项卡,这时都是空的,什么数据也没有截取。这时你就在网页上登录一下试试吧,输入用户名啊,密码啊,有必要时需要输入验证码,点击登录。

等跳转成功后,你就可以看到好多日志记录了,点击图中的那一行 login.taobo.com,然后查看参数,你就会发现表单数据了,其中就包括 ua 还有下面的 password2,把这俩复制下来,我们之后要用到的。这就是我们需要的 ua 还有 aes 加密后的密码。

恩,读到这里,你应该获取到了属于自己的 ua 和 password2 两个内容。

输入验证码并获取J_HToken

经过博主本人亲自验证,有时候,在模拟登录时你并不需要输入验证码,它直接返回的结果就是前面所说的下一步用到的 J_Token,而有时候你则会需要输入验证码,等你手动输入验证码之后,重新请求登录一次。

博主是边写程序边更新文章的,现在写完了是否有必要输入验证码的检验以及在浏览器中呈现验证码。

代码如下

'CQC'

恩,请把里面的 ua 和 password2 还有用户名换成自己的进行尝试,用我的可能会产生错误的。

运行结果

然后会蹦出浏览器,显示了验证码的内容,这个需要你来手动输入。

在这里有小伙伴向我反映有这么个错误

经过查证,竟然是版本问题,博主本人用的是 2.7.7,而小伙伴用的是 2.7.9。后来换成 2.7.7 就好了…,我也是醉了,希望有相同错误的小伙伴,可以尝试换一下版本…

好啦,运行时会弹出浏览器,如图

那么,我们现在需要手动输入验证码,重新向登录界面发出登录请求,之前的post数据内容加入验证码这一项,重新请求一次,如果请求成功,则会返回下一步我们需要的 J_HToken,如果验证码输入错误,则会返回验证码输入错误的选项。好,下面,我已经写到了获取J_HToken的进度,代码如下,现在运行程序,会蹦出浏览器,然后提示你输入验证码,用户手动输入之后,则会返回一个页面,我们提取出 J_Htoken即可。

注意,到现在为止,你还没有登录成功,只是获取到了J_HToken的值。

目前写到的代码如下

现在的运行结果是这样的,我们已经可以得到 J_HToken 了,离成功又迈进了一步。

好,到现在为止,我们应该可以获取到J_HToken的值啦。

利用J_HToken获取st

st也是一个经计算得到的code,可以这么理解,st是淘宝后台利用J_HToken以及其他数据经过计算之后得到的,可以利用st和用户名直接用get方式登录,所以st可以理解为一个秘钥。这个st值只会使用一次,如果第二次用get方式登录则会失效。所以它是一次性使用的。

下面J_HToken计算st的方法如下

#通过token获得st

直接利用st登录

得到st之后,基本上就大功告成啦,一段辛苦终于没有白费,你可以直接构建get方式请求的URL,直接访问这个URL便可以实现登录。

'https://login.taobao.com/member/vst.htm?st=%s&TPL_username=%s' % (st,username)

比如

https:

另外还有页码的参数。

重新构建一个带有cookie的opener,将上面的带有st的URL打开,保存它的cookie,然后再利用这个opener打开已买到的宝贝的页面,你就会得到已买到的宝贝页面详情了。

#获得已买到的宝贝页面

正则表达式提取信息

这是我的已买到的宝贝界面,审查元素可以看到,每一个宝贝都是tbody标签包围着。

我们现在想获取订单时间,订单号,卖家店铺名称,宝贝名称,原价,购买数量,最后付款多少,交易状态这几个量,具体就不再分析啦,正则表达式还不熟悉的同学请参考前面所说的正则表达式的用法,在这里,正则表达式匹配的代码是

#u'\u8ba2\u5355\u53f7'是订单号的编码

最终运行结果

看一下运行结果吧~

好啦,运行结果就是上面贴的图片,可以成功获取到自己的商品列表,前提是把你们的 用户名,ua,password2这三个设置好。

以上均为博主亲身所敲,代码写的不好,谨在此贴出和大家一起分享经验~

小伙伴们试一下吧,希望对大家有帮助。

崔庆才,Python社区专栏作者

博客:https://zhuanlan.zhihu.com/pythoncoder

觉得本文对你有帮助?请分享给更多人

关注「Python爬虫与人工智能社区」加星标,提升全栈技能

本公众号会不定期给大家发福利,包括送书、学习资源等,敬请期待吧!

如果感觉推送内容不错,不妨右下角点个在看转发朋友圈或收藏,感谢支持。

好文章,我在看❤️

python fastapi 获取所有header信息_Python爬虫实战五之模拟登录淘宝并获取所有订单...相关推荐

  1. python淘宝爬虫登陆功能和下单功能_Python爬虫实战五之模拟登录淘宝并获取所有订单 | 静觅...

    经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持. 温馨提示 更新时间,2016-02-01,现在淘宝换成了滑块验证了 ...

  2. Python爬虫实战五之模拟登录淘宝并获取所有订单

    本篇内容 python模拟登录淘宝网页 获取登录用户的所有订单详情 学会应对出现验证码的情况 体会一下复杂的模拟登录机制 探索部分成果 淘宝的密码用了AES加密算法,最终将密码转化为256位,在POS ...

  3. Python爬虫实战(5):模拟登录淘宝并获取所有订单(1)

    经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持. 本篇内容 1. python模拟登录淘宝网页 2. 获取登录用户的 ...

  4. python淘宝爬虫登陆功能和下单功能_Python 爬虫实战5 模拟登录淘宝并获取所有订单...

    经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持. 本篇内容 python模拟登录淘宝网页 获取登录用户的所有订单详情 ...

  5. Python爬虫实战(5):模拟登录淘宝并获取所有订单

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  6. Python 爬虫实战5 模拟登录淘宝并获取所有订单

    经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持. 本篇内容 python模拟登录淘宝网页 获取登录用户的所有订单详情 ...

  7. Selenium 模拟登录淘宝,获取cookies给requests使用

    文章目录 前言 代码 总结 前言 今天爬取淘宝商品图片,遇到登录拦截,看了淘宝的登录 url 里的请求参数,好多加密,果断放弃. 不过可以用selenium模拟登录,然后获取cookies给reque ...

  8. python模拟登录网站_Python模拟登录淘宝都实现了,你还怕模拟登录?

    文章转载自公众号 :裸睡的猪 , 作者 猪哥66 最近想爬取淘宝的一些商品,但是发现如果要使用搜索等一些功能时基本都需要登录,所以就想出一篇模拟登录淘宝的文章! 看了下网上有很多关于模拟登录淘宝,但是 ...

  9. python requests模拟登录淘宝购物车下单_Python使用requests库模拟登录淘宝账号(上)...

    学好Python这款编程语言,我们能够设计出很多程序要帮助我们完成数据采集等工作,ET代理今天要跟大家介绍如何用Python模拟登录淘宝账号? 看了下网上有很多关于模拟登录淘宝,但是基本都是使用scr ...

最新文章

  1. iOS 图片处理-图片旋转和裁剪
  2. 设计模式学习笔记--Strategy 策略模式
  3. hibernate主配置文件的配置
  4. 快逸报表参数查询前报表不显示
  5. uni-app组件之间的传值
  6. 这是东西:jUnit:动态测试生成
  7. 详解Ubuntu Server下启动/停止/重启MySQL数据库的三种方式(ubuntu 16.04)
  8. AFNetworking 3.0源码阅读 - AFURLResponseSerialization
  9. js中组装拼接json对象,通过java后端接收并解析
  10. jenkins发送邮件
  11. 编码原理(附一)--算术编码
  12. win7下DS、KS、ASIO、WASAPI输出比较
  13. 开机时出现:reboot and select proper boot 、关于IDE与AHCI
  14. antd option宽度自适应_前端基础:自适应布局之rem布局基础
  15. msys2编译ffmpeg:ERROR: libx264 not found
  16. OSChina 周一乱弹 ——为什么非洲人短跑长跑都强
  17. 学习Hibernate框架笔记-第3天
  18. 2020年6月六级作文和翻译三国演义
  19. php的seeder是什么,使用Laravel框架的Seeder实现自动填充数据功能
  20. 百钱买小鸡/*公鸡5文钱1只,母鸡三文钱一只,小鸡一文钱三只。现在用100文钱共买了100只鸡,问这100只鸡中,公鸡,母鸡,小鸡各是多少只?

热门文章

  1. 线性回归实战之分析汽车油耗效率8.18
  2. erlang c erl_interface
  3. STM32CubeMX配置freertos配置任务(一)
  4. 《领导梯队》:4星。企业中六个层级的领导的必知必会和必须不能做的事情。...
  5. 【金融项目】尚融宝项目(五)
  6. php图片涂鸦,IOS_详解iOS App中图片的线段涂鸦功能的添加方法,接下来我们要讲图片的涂鸦, - phpStudy...
  7. STC15单片机 固定翼无人机/航模 飞控程序
  8. Cadence网表导入PADS9.5
  9. xCrash 捕获ANR异常
  10. 含琥珀酰亚胺酯的荧光素6-FAM SE 6-FAM-NHS,92557-81-8