通过以上三步操作,就可以生成网络请求中的参数 Token 。
同样的方式,针对请求中的 Token,我们通过查询 token 关键字查询源码 。
文章插图
通过观察,我们发现类 e 中的 b()函数的功能就是往请求中添加请求头,继续查看函数 b() 的实现类,发现这个类也全部被混淆了 。
文章插图
如果你细心一点,一定会发现当前实现类的包名是 Okhttp3,我们可以从 Github 下载 Okhttp3 的源码,然后进行对比,就能很清晰的知道里面的实现逻辑了 。
ps:okhttp 是 Android 使用很多一个网络请求库 。
文章插图
通过对比没有混淆过的代码,可以很容易的编写出生成请求头中 Token 的逻辑 。
文章插图
至此,这一步就完成两个 Token 的生成 。
第 3 步就可以利用 Python「模拟发起一个请求」,来获取手机验证码了 。
文章插图
同理,后面的登录请求也是先通过抓包,使用上面生成的 Token 逻辑去修改请求头中 Token,然后模拟请求,就可以正常登录了 。
文章插图
结果结论
通过模拟获取验证码的请求,等待手机收到验证码之后,输入验证码,然后再模拟登录的请求,就可以获取登录成功后的令牌 。
文章插图
由于验证码是由服务器产生的,这里没法获取生成逻辑,但是针对安卓手机可以监听通知栏消息元素,拿到短信验证码进行自动填入,就不需要人工输入了 。
文章插图
拿到登录令牌之后,理论上 App 上页面的各类网络请求都可以利用 Python 去模拟,后面提供的源码包含了一个完整抢票的流程 。
推荐阅读
- Python:同步异步阻塞非阻塞
- 如何在Windows上做Python开发?微软出了官方教程
- 用Python爬取网易云音乐全部歌手的热门歌曲
- 10种最好的Python开发编辑器,你使用过几种呢?
- 个让Python代码运行更快的最佳方式!
- Python超详细的字符串用法大全
- 140种Python标准库、第三方库和外部工具都有了
- Python函数式编程,Python闭包
- Python接口测试自动化实战及代码示例:含get、post等方法
- 教你如何优雅地用Python连接MySQL数据库