在抓取app应用数据包时,我们通常会遇到如下问题
fiddler设置是没问题的,手机的配置也没有问题,可是打开app后发现无法联网,fiddler也无法抓取到数据包
这是怎么一回事呢?
首先我们需要学习一个知识点:
什么是SSL pinning
https协议验证服务器身份的方式通常有三种,一是根据浏览器或者说操作系统(Android)自带的证书链;二是使用自签名证书;三是自签名证书加上SSL Pinning特性。第一种需要到知名证书机构购买证书,需要一定预算。第二种多见于内网使用。第三种在是安全性最高的,但是需要浏览器插件或客户端使用了SSL Pinning特性。
Android应用程序在使用https协议时也使用类似的3种方式验证服务器身份,分别是系统证书库、自带证书库、自带证书库 + SSL Pinning特性。
所以SSL Pinning,即SSL证书绑定,是验证服务器身份的一种方式,是在https协议建立通信时增加的代码逻辑,它通过自己的方式验证服务器身份,然后决定通信是否继续下去。它唯一指定了服务器的身份,所以安全性较高。
通俗的来说就是:
app发布的时候把服务器的证书信息“绑定“在APP端,然后建立连接时使用预先内置的绑定信息进行服务器证书校验,同时使用足够的代码加密或混淆,这种办法就是SSL pinning,如果证书校验失败,则无法获取服务器端返回信息
解决办法
安装Xposed框架 + JustTruestMe组件
Xposed是一个框架,它可以改变系统和应用程序的行为,而不接触任何APK。它支持很多模块,每个模块可以用来帮助实现不同的功能。JustTrustMe 是一个用来禁用、绕过 SSL 证书检查的基于 Xposed 模块。JustTrustMe 是将 APK 中所有用于校验 SSL 证书的 API 都进行了 Hook,从而绕过证书检查。
解决步骤
1、根据相应的安卓版本下载xposed框架安装包
2、在夜神模拟器或安卓手机中安装Xposed框架
3、点击打开xposed框架,选择安装激活并重启
点击确定后,设备会重启并进行更新安装
4、下载JustTrustMe组件
5、在夜神模拟器或安卓设备中安装JustTrustMe组件
6、在xposed框架中启用JustTrustMe组件
点击模块
7、勾选并重启
8、再次抓取数据包,就可以联网了
**
更多精彩内容详见Python 爬虫工程师必学——App数据抓取实战
**
热门评论
非常好,谢谢老师?
安卓9.0之后的版本怎么办
一直无法安装