前言
本方法仅适用于自身开发的app。提供给公司内部测试时,方便测试人员进行https抓包验证网络数据。
如果需要抓取其他公司开发的app。 除非该公司开发的Android 版本是7.0及以下或者支持用户证书。否则抓包会出现代理证书错误哦。
1.常见问题
如果按照文档完整的配置了整个Fiddler代理抓包流程后,
仍然出现以下的错误:
1.cert证书错误
java.security.cert.CertificateException: java.security.cert.CertPathValidatorException
2.https访问被自动降级http
那么说明app 不支持用户证书,只能使用系统证书认证。
要么修改app。让app支持用户证书。(ps:下面内容有介绍如何添加)
要么将你的Fiddler代理证书安装成系统证书(需要拥有root权限)。
这是因为Android 7.0后,google收紧了证书验证流程。而我们推送的代理证书,系统默认不支持。
2.配置代理完整过程
2.1 安装Fiddler 抓包工具
官网下载地址:https://www.telerik.com/fiddler
建议使用 Fiddler Classic版本。--免费使用
因为Fiddler Evertwhere 需要收费。30天免费体验
安装过程没有需要注意的。全程点击下一步,就可以了。
2.2 配置Fiddler
启动Fiddler ->Tools- Options
https 面板配置
Connections 面板配置
2.2.1 window Https抓包
其他说明,如果你需要抓取你本机的https连接的话。
需要给你的电脑安装证书。这个操作不影响手机代理的抓包。
可安装可不安装
第一步:
在弹出的菜单中选择: Trust Root certificate
选择Yes 将会将CA证书安装到你的本机。
这个时候你的电脑网络请求都会进行代理抓包了。
如果你不想要这个证书了。可以通过 Actions 弹出的菜单中选择 : Open Windows certificate Manager
打开windows 的证书管理工具。
然后删除这个证书就可以了。
2.3 配置Android 设备
打开手机的Wifi 设置确保 手机WIFI 和电脑WiFi
处于同一局域网内。
在手机wifi 的高级配置中设置代理
服务器ip : 是我们的window 电脑的ip地址。
端口号:是我们在Fiddler-Tools-Options-Connections 中设置的 Fiddler listens on port 参数。 该参数设置范围就是window系统允许的端口范围任意设置。
2.4 Android 设备 安装CA证书
配置完代理服务后,需要将证书安装到本机,否则仍然无法代理https
打开手机浏览器:输入网址:http://ip:端口
例如:http://10.3.18.59:8888 我的代理服务地址是这个IP 和端口。
点击 FiddlerRoot certificate 然后进行安装
在弹框中输入证书名,然后其他保持不变。点击安装即可。
我们在“设置”->安全->加密与凭据->用户凭据 可以看到我们安装的证书。
我们也可以在这里卸载我们安装的证书。
如果是选择用于WLAN 模式。那么在这里将无法删除。
只有返回上一层 清除凭据(删除所有证书)才能删除掉我们添加的证书。
删除凭据不会删除系统证书,只会删除我们用户创建的证书。
不会对我们手机造成危害,最多有可能部分应用出现网络失败。例如抖音等。我们重新安装应用就可以恢复正常了。
2.5 App 应用支持该用户凭据下的证书。
我们上述操作只是将代理配置完毕了。你会发现我们使用手机浏览器访问https 可以被代理软件抓到。但是我们使用自己的app发现出现了各种网络错误。
在Android 项目下添加xml文件
在res 文件夹下创建xml文件夹,在xml文件夹下创建
network_security_config.xml文件 (ps:文件名可以随意定)
文件内添加下面的代码。 关键是“user”这一行。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="user" />
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
然后在AndroidManifest.xml 文件里面添加下面这一行代码。
<application
...
android:networkSecurityConfig="@xml/network_security_config"
重新打包安装。
现在我们的app 就可以发给测试,让他们进行代理抓包了。
评论区