电脑版淘宝登录(Python实战案例,requests模块,Python实现模拟登录淘宝网)

前言

用Python模拟登录淘宝。废话不多说。

开心的开始吧~

开发工具

Python版本: 3.6.4

相关模块:

Re模块

操作系统模块

请求模块;

以及Python自带的一些模块。

环境搭建

安装Python并将其添加到环境变量中。pip可以安装所需的相关模块。

登录流程分析

先给家里看看淘宝登录请求的时序图,让大家看得懂。



注:淘宝ua参数:ua(用户代理)命名为用户代理。淘宝ua参数增加了浏览器、ip、电脑、时间等信息。然后加密生成,用在很多地方,不仅仅是登录!

在代码层面,考虑将模拟登录淘宝分为以下四个步骤:

  • 输入用户名后,浏览器会向淘宝(taobao.com)发送post请求,确定是否有滑块验证!
  • 用户输入密码后,浏览器向淘宝(taobao.com)发送post请求,验证用户名密码是否正确,如果正确,则返回令牌。
  • 浏览器带着令牌去阿里巴巴(Alibaba.com)兑换st码!
  • 浏览器获取st码后,拿st码获取cookies,登录成功。
  • 模拟登录实现1.判断是否需要验证码

    目前我们登录淘宝,大多数情况下都是没有滑块验证码的。经过多次尝试登录注销,中间只发生过一次。那么是什么在控制滑块验证码是否需要呢?

    电脑版淘宝



    从上图可以看出,输入用户名时,浏览器会发起post请求,验证是否需要出现滑块验证码。如果返回true,就会出现滑块验证码!否则不会出现,一般不会出现!在图中我们可以看到这个post请求上传了两个参数:username和ua!我说过,ua是浏览器、ip、设备信息等多信息加密参数。,所以猜测淘宝的验证码是不是不仅从账号角度出现,还会从ip、设备等角度出现!

    例如,一个设备可能登录了大量帐户。这时候淘宝可以从ua参数中获取设备号,然后对设备进行限制!

    知道了流程和请求的链接和参数,就可以用代码来请求了!



    2.验证用户名密码

    这一步也是上述顺序图图的第五步:请求登录。在这里,用户名、ua参数、加密密码等30多个参数会被张贴到淘宝(taobao.com)进行验证。



    让我们用代码实现它。有很多参数。不要害怕。都是从浏览器复制过来的!



    请求结果



    可以看到申请st码的链接后面有一个令牌。

    3.申请st码

    我们已经申请了淘宝(taobao.com)的token,这一步就是用token换取st码。这里很多人可能会有疑问:淘宝登录为什么要这么麻烦?你不能直接在taobao.com登陆吗?为什么需要先在淘宝验证用户名和密码,再去Alibaba.com兑换st码登录?任何公司的框架都是逐渐演变的结果,我猜最初的淘宝登录肯定没那么复杂。但是随着阿里巴巴的逐渐壮大,很多业务线是分的,但是这些业务线是有联系的。比如用户登录淘宝账号后,天猫不需要再次登录(注意淘宝和天猫的顶级域不同,cookis不能共享)。为了实现这个功能,出现了单点登录

    单点登录(SSO)是企业业务集成最流行的解决方案之一。单点登录是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。——百度百科

    很多大企业几乎都是做单点登录的,所以阿里的单点登录系统必须是母公司阿里巴巴(alibaba.com)来做,所有子公司调用母公司接口!我们再来分析一下为什么淘宝登录这么复杂。很好理解:用户数据在淘宝,所以淘宝(taobao.com)现在需要验证用户名和密码。验证后生成令牌,浏览器拿着令牌向阿里巴巴(alibaba.com)申请单点登录码(st码),阿里巴巴收到验证令牌的请求后返回st码,所以用st码替换令牌的原因是单点登录!理解了设计原理之后,代码的实现就很清晰了!



    4.使用st码登录

    成功获取st码后,就可以登录了。这一步是通过st代码获取登录cookies。



    这里我们已经成功登录淘宝了!

    5.获取淘宝昵称

    事实上,我们已经成功登录淘宝,并将链接返回到用户主页。为了进一步验证登录成功,我们会请求淘宝用户首页,顺便提取淘宝的昵称!




    作者:戴
    链接:

    您可以还会对下面的文章感兴趣

    使用微信扫描二维码后

    点击右上角发送给好友