声明:本文仅限交流学习使用,请勿使用在任何非法商业活动,禁止用于非法用途。否则后果自负。如有侵权,请告知删除,谢谢!
一,去哪儿 出行类大厂,为了安全,查询很多信息需要身份校验,有多种登陆方式
1.1 如查询航班信息时,自动弹出登录窗口,会有验证码验证
1.2 点击首页登陆按钮,跳转到如下登录页面,其中1 / 2 两种方式 需要滑动验证
1.3 由于此网站风控较为严格,利用技术抓取网站信息,对帐号登录次数 ,验证发码发送次数等都有限制,今天咱们分析下 ,上图中第 4 种扫描二维码的方式
二 ,扫码登录流程分析
请求登录页, 观察网络请求,查看发送了那些求请求,寻找二维码的图片在哪里加载 ,关键请求都需要哪些参数
经过观察思考,基本流程如下:
图2.1
图2.2
图2.3
图2.4
图2.5
到此基本流程就清楚了
接下来开始一步步模拟请求
首先请求登录页,不需要什么参数可直接请求,成功后返回 appid 和两个 cookie
然后去获取 sessinId (图2.2)
然后获取Token (图2.3)
现在就可以 获取 二维码了, 请求参数中需要 上一步的 Token 和时间戳, 注意请求Cookie 多了ctt_june 和 ctf_june ,但是经过测试 不带也没关系
接下来就是 每隔 0.5 秒去判断 二维码 是否被扫描 (图2.4)
这时候 打开项目路径下找到下载的二维码 ,拿出手机扫描后 ,二维码状态由 未扫描 变成 预登录
点击确认登录后返回了相关数据
注意这个扫码过程 二维码状态变化 浏览器看不到 ,一旦你扫了码 浏览器会清空很多数据 , 在pycharm 中可以看到, 再注意!!图2.5 最后一次刷新二维码状态的请求(就是扫码确认登陆后) 返回了有关用户信息的cookies,并自动请求去哪网主页
最后模拟请求 去哪儿 主页
到此 扫码登录 自动化登录 成功
(注意这个过程 ctt_june / ctf_june, 的生成时机,虽然登陆时不携带 也能成功,但是后面抓取某些其他数据时,需要用到)
码字不易 觉着有用 留个赞 !!!
欢迎 私信交流