Python 爬虫破解移动端登录( 二 )


 
 
通过以上三步操作,就可以生成网络请求中的参数 Token 。
同样的方式,针对请求中的 Token,我们通过查询 token 关键字查询源码 。
 

Python 爬虫破解移动端登录

文章插图
 
 
通过观察,我们发现类 e 中的 b()函数的功能就是往请求中添加请求头,继续查看函数 b() 的实现类,发现这个类也全部被混淆了 。
 
Python 爬虫破解移动端登录

文章插图
 
 
如果你细心一点,一定会发现当前实现类的包名是 Okhttp3,我们可以从 Github 下载 Okhttp3 的源码,然后进行对比,就能很清晰的知道里面的实现逻辑了 。
ps:okhttp 是 Android 使用很多一个网络请求库 。
 
Python 爬虫破解移动端登录

文章插图
 
 
通过对比没有混淆过的代码,可以很容易的编写出生成请求头中 Token 的逻辑 。
 
Python 爬虫破解移动端登录

文章插图
 
 
至此,这一步就完成两个 Token 的生成 。
第 3 步就可以利用 Python「模拟发起一个请求」,来获取手机验证码了 。
 
Python 爬虫破解移动端登录

文章插图
 
 
同理,后面的登录请求也是先通过抓包,使用上面生成的 Token 逻辑去修改请求头中 Token,然后模拟请求,就可以正常登录了 。
 
Python 爬虫破解移动端登录

文章插图
 
 
结果结论
通过模拟获取验证码的请求,等待手机收到验证码之后,输入验证码,然后再模拟登录的请求,就可以获取登录成功后的令牌 。
 
Python 爬虫破解移动端登录

文章插图
 
 
由于验证码是由服务器产生的,这里没法获取生成逻辑,但是针对安卓手机可以监听通知栏消息元素,拿到短信验证码进行自动填入,就不需要人工输入了 。
 
Python 爬虫破解移动端登录

文章插图
 
 
拿到登录令牌之后,理论上 App 上页面的各类网络请求都可以利用 Python 去模拟,后面提供的源码包含了一个完整抢票的流程 。




推荐阅读