侧边栏壁纸
博主头像
Z同学博主等级

工作磨平激情前,坚持技术的热忱。 欢迎光临Z同学的技术小站。 分享最新的互联网知识。

  • 累计撰写 274 篇文章
  • 累计创建 55 个标签
  • 累计收到 74 条评论

Android Fiddler代理抓包-https

Z同学
2021-08-03 / 0 评论 / 2 点赞 / 1,151 阅读 / 2,129 字
温馨提示:
本文最后更新于 2022-01-17,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

本方法仅适用于自身开发的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
image.png

建议使用 Fiddler Classic版本。--免费使用

因为Fiddler Evertwhere 需要收费。30天免费体验

安装过程没有需要注意的。全程点击下一步,就可以了。

2.2 配置Fiddler

启动Fiddler ->Tools- Options
Options 效果图

https 面板配置

https 面板配置

Connections 面板配置

Connections 面板配置

2.2.1 window Https抓包

其他说明,如果你需要抓取你本机的https连接的话。

需要给你的电脑安装证书。这个操作不影响手机代理的抓包。

可安装可不安装

第一步:
步骤1

在弹出的菜单中选择: Trust Root certificate

步骤2
选择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 就可以发给测试,让他们进行代理抓包了。

2

评论区