第三种:扫码登录

 

扫码登录还是比较靠谱的。

 

步骤就是:获取二维码,扫描二维码,扫描成功后得到门票,根据门票获取登录成功的cookie

 

某东登录第三种方式_python

获取二维码

某东登录第三种方式_python_02

 

点击扫码登录, 会发送下面的请求。这个请求会获得一个二维码

 

某东登录第三种方式_python_03

 

请求参数:比较简单。

 

某东登录第三种方式_python_04

 

还有就是这个请求,会设置两个 cookie。这两个 cookie 需要保存,后面的请求中会用到。

 

某东登录第三种方式_python_05

 

 

某东登录第三种方式_python

等待扫描二维码

某东登录第三种方式_python_02

 

当你成功获取到二维码之后,前端页面开始轮询检查接口

 

某东登录第三种方式_python_08

 

也就是下面的这个 URL

 

  •  
https://qr.m.jd.com/check?callback=jQuery4643268&appid=&token。。。

 

这个请求参数中 token 就是上一步获取的 cookie。一定要携带获取二维码时得到 cookie,不然会请求失败,拿不到想要的结果

 

这个请求是获取二维码的状态:二维码未扫描、手机客户端确认登录、无效的二维码、二维码过期,登录成功、、、

 

某东登录第三种方式_python_09

我们需要做的也是轮询这个接口,直到手机端扫描成功,确认登录后获取到 ticket 之后就可以结束这个接口的轮询

 

 

某东登录第三种方式_python

得到门票,换取 cookie

某东登录第三种方式_python_02

 

扫码登录成功之后会获取到 一个 ticket:

 

某东登录第三种方式_python_12

 

使用这个 ticket 去请求接口获取 登录成功的 cookie:

 

某东登录第三种方式_python_13

 

某东登录第三种方式_python_14

 

这个接口会返回下一步要请求的 URL 以及 cookie。

 

到这里就结束了!

 

容易忽略的地方:

 

    1、获取二维码产生的两个 cookie ,在下面的请求中必须都要携带。

    2、关于 sessionToken. sessionToken 的值存在于初始的 HTML 页面中 returnUrl 的值。这个值是一直存在于请求头的 referer 中的。这个值是有时间限制的,过了时间或者使用过一次之后就会失效,需要重新获取。重新设置到请求头中的

 

OK!结束!

 

有什么不对的地方请留言。

 

某东登录第三种方式_python_15