今天跟大家出的Python学习教程,Python模拟登录淘宝,我知道,肯定是吸引了你,一起来看看吧!

最近想爬取淘宝的一些商品,但是发现如果要使用搜索等一些功能时基本都需要登录,所以就想出一篇模拟登录淘宝的Python学习教程文章!

看了下网上有很多关于模拟登录淘宝,但是基本都是使用scrapy、pyppeteer、selenium等库来模拟登录,但是目前我们还没有讲到这些库,只讲了requests库,那我们今天就来使用requests库模拟登录淘宝!

讲模拟登录淘宝之前,我们来回顾一下之前用requests库模拟登录豆瓣和新浪微博的过程:这一类模拟登录是比较简单的登录,只需要在请求登录时将用户名和密码上传验证通过就成功了,也就是说一步到位!

而淘宝登录就比较复杂,为什么说复杂呢?因为淘宝登录涉及参数多且请求不止一次!我们就先来讲讲淘宝登录的流程,先把流程原理搞懂,再去敲代码,这样大家就容易理解!

一、淘宝登录流程

为了便于大家理解,画了一个非标准的淘宝登录请求时序图

淘宝ua参数:ua(User-Agent)故名用户代理,淘宝的ua参数加入了浏览器、ip、电脑、时间等信息,然后加密生成,在很多地方使用,不仅仅是登录!

上图是比较详细的流程图,从代码层面考虑将模拟登录淘宝分为以下四个步骤:

  1. 输入用户名后,浏览器会向淘宝(taobao.com)发起一个post的请求,判断是否出现滑块验证!

  2. 用户输入密码后,浏览器向淘宝(taobao.com)又发起一个post请求,验证用户名密码是否正确,如果正确则返回一个token。

  3. 浏览器拿着token去阿里巴巴(alibaba.com)交换st码!

  4. 浏览器获取st码之后,拿着st码获取cookies,登录成功

这里也许有同学会提出疑问:为什么淘宝(taobao.com)验证通过之后还要拿着 token去阿里巴巴(alibaba.com)交换st码呢? 这个我们放后面讲!

二、模拟登录实现

上面我们只讲了大概的登录流程,这里会先详细讲解下每一步的操作,然后再贴出实现代码!

1.判断是否需要验证码

目前我们在登录淘宝的时候,大多数情况下是不会出现滑块验证码,尝试了很多次的登录退出也只是在中间出现过一次,那究竟是什么在控制是否需要滑块验证码的呢?

从上图可以看出,当输入用户名后,浏览器就会发起一个post请求,来验证是否需要出现滑块验证码,如果返回true,滑块验证码则出现!否则不出现,一般是不会出现!

图中我们可以看到这次post请求上传了两个参数:username、ua!

前面说过ua为浏览器、ip、设备信息等多信息加密参数,所以猜想淘宝的验证码是否出现不仅仅从账号角度,还有ip、设备等角度!

举个例子:某台设备可能出现登录过大量的账号,这时候淘宝就可以从ua参数中获取设备号,然后对该设备进行限制!

知道了流程和请求链接及参数之后,我们就可以用代码来请求了!

2.验证用户名密码

这里一步也就是上面时序图图中的第5步:请求登录,这里会将用户名、ua参数、加密密码等30十几个参数post到淘宝(taobao.com)去验证。

我们来用代码实现一下,大家别被这么多参数吓到,都是从浏览器复制过来的!

看看请求结果!

可以看到申请st码链接后面带了一个token,具体token是干什么用的后面我们再分析!

3.申请st码

上面我们已经申请到了淘宝(taobao.com)的token,这一步就是用token来换取st码。

到这里很多人可能会有疑问:为什么淘宝登录需要这么麻烦呢?直接在 taobao.com 登录不就可以吗?为什么要先在taobao验证用户名密码,通过之后再去 alibaba.com 换取st码登录呢?

任何公司的框架都是慢慢演变的结果,我猜想最开始的淘宝登录肯定没这么复杂。但是随着阿里巴巴的慢慢壮大,很多事业线都划分开来,但是这些事业线之间又有关联性,比如用户登录了淘宝账号之后天猫就不需要再登录(注意淘宝和天猫的顶级域名不同,所以不能共享cookis)为了实现这个功能,单点登录就出现了。

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 ——百度百科

很多大企业几乎都有做单点登录,那阿里的单点登录系统肯定是由母公司阿里巴巴(alibaba.com)来做啦,所有子公司去调用母公司接口!

我们再回来分析淘宝登录为何要如此复杂就很好理解了:用户数据在淘宝这里,所以需要现在淘宝(taobao.com)验证用户名和密码,验证通过生成一个token,浏览器拿着token去和阿里巴巴(alibaba.com)申请单点登录码(st码),阿里巴巴收到请求验证token通过则返回st码,所以用token换st码的原因就在于单点登录!

理解了设计原理之后,代码实现起来就很清晰了!

4.使用st码登录

成功获取st码之后我们就可以来登录了,这一步是通过st码获取登录的cookies。

到这里我们就已经模拟登录淘宝成功了!

5.获取淘宝昵称

其实上面我们就已经登录淘宝成功并返回用户主页的链接,我们为了进一步验证登录成功,就请求一下淘宝用户主页,顺便把淘宝昵称提取出来吧!

三、本次Python学习教程总结

整体讲完之后我们来稍微总结一下吧,主要从代码结构和存在的问题两个方面说下:

1.代码结构

来放出一张代码结构图,让大家直观了解

这就是我们前面说过的模拟登录淘宝的四个步骤,不过这里我们是用代码实现了!

2.存在问题

在写这篇教程之前也是先在网上了解,然后自己用浏览器和抓包工具(Charles)一步一步实践,最重要的是你先要了解淘宝登录的大概流程,不然你实际操作起来会一头雾水,下面就要讲讲目前遇到的问题和存在的问题吧

  1. 首先第一个问题便是淘宝的滑块解锁,目前requests还没有很好的破解办法,后面介绍了一些爬虫框架之后我们再来破解吧!

  2. ​尝试了很多次(50次以上)登录退出都没出现过滑块验证码。

  3. 网上有人使用代理ip,这里我也没用,只要你不是超级超级超级频繁且大量爬取数据,一般大厂都不太会去封ip,因为有误伤率和影响用户面太广,也许一封就是整个小区。

  4. 在第二步验证用户名和密码时,上传了近30个参数,如果你把username、ua、加密密码复制进去验证还是不通过可尝试把那30个参数换成你浏览器中的!

  5. 在第三步和第四步偶尔会出现一次错误,重试一下就可以!

  6. 文章有些关于淘宝登录框架纯属猜想,如有错误还望指正!

看到这里应该对淘宝模拟登录清晰多了吧,感兴趣的同学可以自己试试,能搞定淘宝登录,其他的登录也就简单多了!更多的Python学习教程也会继续为大家更新!

转载于:https://juejin.im/post/5d5d08f15188255d51426623

Python学习教程:用Python模拟登录淘宝相关推荐

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

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

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

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

  3. 手把手教你用Python模拟登录淘宝

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

  4. Python模拟登录淘宝都实现了,你还怕模拟登录?

    点击"简说Python",选择"置顶/星标公众号" 福利干货,第一时间送达! 本文授权转载自裸睡的猪,禁二次转载 作者:猪哥66 阅读文本大概需要 8 分钟. ...

  5. 手把手教你如何用Python模拟登录淘宝

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

  6. 模拟登录淘宝--Python

    模拟登录淘宝–Python 由于淘宝开始检测selenium,要绕过检测非常麻烦.故使用另外一款Python的自动化工具:Pyppeteer,来模拟登录淘宝获取cookie.目前没有遇到滑块验证(该有 ...

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

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

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

    点击上方[Python与人工智能社区]→右上角[...]→[设为星标⭐] 经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家 ...

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

    在文章的上部分,我们已经做好了模拟登录的前期准备,接下来就是让操作实现的部分了.一起来继续看看具体的操作步骤吧: 3.申请st码 上面我们已经申请到了淘宝(http://taobao.com)的tok ...

最新文章

  1. mongoose手动生成ObjectId
  2. [转载] 管Q某犇借的手写堆
  3. 监控服务器已断开正在自动重连,远程服务器已断开与发送连接器的连接
  4. springcloud的理解
  5. coursera 《现代操作系统》 -- 第十周 文件系统(2)
  6. 《30天自制操作系统》笔记(04)——显示器256色
  7. 关于java的响应式编程框架----SpringReactor
  8. 最新深度学习文本分类模型汇总(github开源)
  9. python sum_Python sum()
  10. ipq_read(3)
  11. 记录贴,计算器改良,税收与补贴,一元三次方程解法,最大公约数最小公倍数
  12. hugging face transformer文本分类运行
  13. 详解ASIC设计流程
  14. 上海双非改考408,与上海计算所联合培养!上海第二工业大学计算机专硕!
  15. C语言的加减乘除函数
  16. react-native 轮播组件 looped-carousel使用介绍
  17. 怎么样设计好看的logo?教你6步学会logo设计
  18. 如何删除PDF文件中其中一页?
  19. 三、Web漏洞-文件操作
  20. CELLID的定位技术

热门文章

  1. 什么情况下无需办理年度汇算?节选北京税务
  2. 延伸联接边界,扩展业务范围,全面迈向智能云网2.0时代
  3. 结合BeautyEye开源UI框架实现的较美观的Java桌面程序
  4. JZOJ 3912. 【NOIP2014模拟11.2B组】超氧化钾
  5. EZ CD Audio Converter v9.4.0.1 CD转换抓轨工具便携版
  6. mysql 正则处理数据 提取电话
  7. java 缓冲流 转换流、序列化流、打印流
  8. 八电平怎么画_2020池州主题灯饰画厂家布展安装
  9. mysql获取一个小时内的数据
  10. Python实现对相同数据分箱小技巧