在开发中我们经常会遇到一些抓包的需求,前端有时候可以通过控制台简单抓包,但是客户端用Log排查的话,效率太低,所以我们就需要用到
Fiddler
抓包
当年在写这篇 Fiddler
时使用的Android
手机,整体篇幅也以 Android
为主,客户端抓包相对通用一些,以下是一些小经验
如根据以下设置完毕后,未生效?
请在设置完后重启Fiddler
,因为它并不是及时生效!- 非抓包场景,
请记得关闭代理,否则手机无法连接网络
Fiddler
基础配置
下载工具
- 前往 下载Fiddler工具,如无法下载可根据提示填写作用范围和邮箱
获取本地IP
通过cmd
命令行,ipconfig
获取我们当前的ip(作用:设置手机代理ip地址)
设置端口号
获取Fiddler
端口号 (作用:设置手机代理端口)
- 前往
Tools - Options...
配置页
- 获取端口号,选择对应选项
手机绑定本地IP、Fiddler端口
- 找到自己的Wife (务必共处同一网络节点下),进入详情
- 进入代理设置
- 选择手动输入
- 设置ip(及
电脑本地IP和Fiddler端口号
)
基础抓包
设置 Fiddler 过滤网站
抓包结果
通过结果来看,我们抓包成功了
- 后台返回的失败请求信息,包含请求参数与错误提示
- 成功返回
- 获取抓包详情,如请求数据、返回数据
抓取https请求
首先需要配置同上方一样的环境,例如
手机与pc处于同一局域网内
~
安装证书
- 开启
https
抓包功能 - 下载并安装由
Fiddler
提供的手机证书 - 兼容7.0
首先需要在Fiddler
中开启https
抓包功能,从Fiddler顶部工具栏依次点击View -> Preferences -> HTTPS
点击SAVE保存
,这样你就可以抓到电脑上https请求
的包了。
但是手机上https请求
的包我们还是抓不到的,你可以试试再次在手机上访问必应,将会看到如下界面:
出现这种错误基本都是证书的原因导致
的,在你的手机浏览器中访问如下地址:http://ipv4.fiddler:8866/
,将会看到一个由Fiddler
内置的网页:
点击FiddlerRoot certificate
这个链接,下载并安装由Fiddler提供的手机证书
安装完成之后再次访问必应,你就会发现不会再报错了,而是可以正常显示出网页的内容:
然后观察Fiddler
,可以看到,请求必应首页的网络包也被成功抓到了,而且这次不再是密文,而是解密后的数据:
兼容7.0安全升级
Android
在7.0系统中进行了一项安全升级。从Android 7.0系统开始,只是在手机上安装了抓包工具的证书,仍然是无法对https请求
进行抓包的,还必须要在应用程序的代码中加入一段网络安全配置才行。
这项升级使得每个应用程序都变得更加安全,因为对https抓包
确实是一个比较危险的行为,所有加密传输的数据都以明文的形式展示出来了。当然,如果是为了调试程序而抓包,这算是一个正当理由,但是你也理应只能对自己的程序进行抓包调试而已。如果只要在手机上安装了证书就可以对所有App的https请求
进行抓包,那么无疑大大降低了这些App的安全性。
因此,Android 7.0
系统中才做了这项安全升级。默认情况下,我们无法对各个App的https请求
进行抓包,如果你是想要对自己App的https请求抓包的话,那么可以这样做。
在res/xml
目录下创建一个network_security_config.xml
文件,然后加入如下配置:
<?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中配置android:networkSecurityConfig属性
来让上述配置生效:
<application
...
android:networkSecurityConfig="@xml/network_security_config">
...
</application>
这样我们就可以对当前的应用程序发出的https
网络请求进行抓包了。
重新运行一下程序,让我们再来试试吧,结果如下图所示:
定制场景
我们以前在业务上会遇到一些特殊场景,仅记录我在从业中抓包时所遇到的问题
动态模拟弱网环境
- 设置规则
Rules - Costomize Rule
(自定义规则)
- 搜索关键字 m_SimulateModem
- 修改响应时间,达到弱网的目的!记得保存~
- 使用自定义的规则,开始测试弱网环境下的问题