追剧比追爬虫强
最近想爬淘宝的一些产品,但是发现如果要用搜索等一些功能的话,基本都需要登录,于是想出了一篇模拟登录淘宝的文章!
在淘宝上看了很多关于模拟登录的内容,基本上都是用scrapy,pyppeteer,selenium等库来模拟登录,但是目前还没有讲过这些库,只讲了requests库,所以今天就用requests库来模拟淘宝上的登录!
在说模拟登录淘宝之前,我们先回顾一下之前使用和的过程:这种模拟登录是比较简单的登录,只有在请求登录时上传并验证用户名和密码,也就是说一步一个脚印,才算成功!
淘宝登录比较复杂。为什么很复杂?因为淘宝登录不止一次涉及很多参数和请求!先说淘宝登录流程,先了解流程原理,再打代码,让大家轻松理解!
一、淘宝登录流程
为了方便大家理解,猪哥画了一个非标准的淘宝登录请求时序图
淘宝ua参数:ua(User-Agent)命名为用户代理。在淘宝ua参数中加入浏览器、ip、电脑、时间等信息,加密生成。很多地方都在用,不只是登录!
上图是详细的流程图。从代码层面考虑,猪哥将模拟登录淘宝分为以下四个步骤:
输入用户名后,浏览器会向淘宝(taobao.com)发送帖子请求,判断是否有滑块验证!
用户输入密码后,浏览器向淘宝(taobao.com)发送一个post请求,以验证用户名和密码是否正确,如果是,则返回一个令牌。
浏览器带令牌到阿里巴巴(Alibaba.com)交换st代码!
浏览器获取st代码后,获取带有st代码的cookies并成功登录
这里可能会有同学问这个问题:淘宝(taobao.com)为什么要去阿里巴巴(Alibaba.com)验证通过后用令牌交换st码?这个我们以后再说!
二、模拟登录实现
以上,我们只讲了一般的登录流程。这里猪哥详细讲解每一步的操作,然后贴实现代码!
1.确定您是否需要验证码
目前我们登录淘宝,大多数情况下是不会出现滑块验证码的。猪哥多次尝试登录退出,中间只出现过一次。那么是什么控制着是否需要滑块验证码呢?
从上图可以看出,猪哥输入用户名时,浏览器会发起post请求,验证是否需要滑块验证码。如果返回true,将出现滑块验证码!否则不会出现,一般不会出现!
在图中,我们可以看到这个post请求上传了两个参数:username和ua!
猪哥说ua是浏览器、ip、设备信息等多信息加密参数。,所以猪哥猜测淘宝的验证码是否出现不仅是从账号的角度,也是从ip、设备等角度。
比如某个设备可能登录了大量账号,淘宝可以从ua参数中获取设备号,然后对设备进行限制!
知道流程和请求链接和参数后,就可以用代码来请求了!
2.验证用户名和密码
这一步也是上述时间序列的第五步图图:请求登录,其中用户名、ua参数、加密密码等30多个参数将会发布到淘宝(taobao.com)进行验证。
看请求结果!
你可以看到在应用st代码链接后面有一个令牌,我们后面会分析。
3.申请st代码
以上,我们已经从淘宝(淘宝网)申请了令牌。这一步是用令牌换st码。
这里很多人可能会有疑问:为什么登陆淘宝这么麻烦?你不能在taobao.com直接登录吗?为什么要先在淘宝验证用户名和密码,然后去Alibaba.com换st码登录?
任何公司的框架都是缓慢演变的结果。我猜最初的淘宝登录肯定没那么复杂。但是随着阿里巴巴的发展,很多职业线都分了,但是这些职业线是有关联的。比如天猫在用户登录淘宝账号后不需要登录(注意淘宝和天猫的顶级域名不同,不能共享cookis)。为了实现这个功能,出现了单点登录。
单点登录是企业业务集成的常用解决方案之一。单点登录被定义为在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。-百度百科
很多大企业几乎都是做单点登录的,所以阿里的单点登录系统必须由母公司阿里巴巴(阿里巴巴网)来做,所有子公司都调用母公司接口!
很容易理解为什么淘宝登录这么复杂:用户数据在淘宝这里,所以淘宝(taobao.com)现在需要验证用户名和密码。验证后生成令牌,浏览器拿着令牌向阿里巴巴(alibaba.com)申请单点登录码(st code)。阿里巴巴收到验证令牌通过的请求,返回st码,所以用令牌更改st码的原因是单点登录!
了解了设计原理之后,代码实现非常清晰!
4.使用st代码登录
成功获取st代码后,我们就可以登录了。这一步是通过st代码获取用于登录的cookies。
在这里,我们已经模拟登录淘宝成功!
5.获得淘宝昵称
其实我们已经成功登录淘宝,回到了用户主页的链接。为了进一步验证登录成功,我们会请求淘宝用户主页,顺便提取淘宝昵称。
三.总结
整个故事讲完后,我们再稍微总结一下,主要从代码结构和存在的问题两个方面来说:
1.代码结构
发布一个代码结构图,让大家直观的理解
以上是我们之前提到的模拟登录淘宝的四个步骤,但是这里我们用代码实现了!
2.有问题
在写这篇教程之前,猪哥也是先在网上了解了一下,然后用他的浏览器和Charles一步一步的练习。最重要的是你首先要了解淘宝登录的一般流程,否则实际操作的时候会很混乱。以下是目前存在的问题和存在的问题
首先,第一个问题是解锁淘宝的滑块。目前没有破解请求的好办法。我们会在介绍一些爬虫框架后破解。
猪哥多次(50多次)尝试登录退出,都没有滑块验证码。
网上有人用代理ip,在这里对猪哥没用。只要你不是超超频繁的爬大量数据,大部分大公司都不会因为意外伤害率和用户范围广而封ip。也许一个字母就是整个社区。
第二步,验证用户名和密码时,上传了近30个参数。如果你复制用户名、ua和加密密码,验证仍然失败,你可以尝试用你浏览器中的参数替换这30个参数!
偶尔,第3步和第4步会出现错误。再试一次!
有些关于淘宝登录框架的文章纯属猪猜。如有错误,请指正!
你是不是觉得在这里看到淘宝模拟登录就清楚多了?有兴趣的同学可以收藏转发,周末有空试试(源码在原阅读中)。征服淘宝登录,其他登录会比较简单!
1.《淘宝登陆 Python模拟登录淘宝》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《淘宝登陆 Python模拟登录淘宝》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/shehui/1077885.html