第三种:扫码登录
扫码登录还是比较靠谱的。
步骤就是:获取二维码,扫描二维码,扫描成功后得到门票,根据门票获取登录成功的cookie
获取二维码
点击扫码登录, 会发送下面的请求。这个请求会获得一个二维码
请求参数:比较简单。
还有就是这个请求,会设置两个 cookie。这两个 cookie 需要保存,后面的请求中会用到。
等待扫描二维码
当你成功获取到二维码之后,前端页面开始轮询检查接口
也就是下面的这个 URL
https://qr.m.jd.com/check?callback=jQuery4643268&appid=&token。。。
这个请求参数中 token 就是上一步获取的 cookie。一定要携带获取二维码时得到 cookie,不然会请求失败,拿不到想要的结果
这个请求是获取二维码的状态:二维码未扫描、手机客户端确认登录、无效的二维码、二维码过期,登录成功、、、
我们需要做的也是轮询这个接口,直到手机端扫描成功,确认登录后获取到 ticket 之后就可以结束这个接口的轮询
得到门票,换取 cookie
扫码登录成功之后会获取到 一个 ticket:
使用这个 ticket 去请求接口获取 登录成功的 cookie:
这个接口会返回下一步要请求的 URL 以及 cookie。
到这里就结束了!
容易忽略的地方:
1、获取二维码产生的两个 cookie ,在下面的请求中必须都要携带。
2、关于 sessionToken. sessionToken 的值存在于初始的 HTML 页面中 returnUrl 的值。这个值是一直存在于请求头的 referer 中的。这个值是有时间限制的,过了时间或者使用过一次之后就会失效,需要重新获取。重新设置到请求头中的
OK!结束!
有什么不对的地方请留言。