测试基础 解决 fiddler 不能抓包的方法

紫Qi · 2018年01月02日 · 最后由 brucmao 回复于 2019年06月03日 · 13557 次阅读

作为一名测试或开发人员,如果你的 Fiddler 突然不能抓取请求了,想必一定是非常苦恼。某人最近遭遇了 Web 端浏览器 无法抓取 Https 请求,手机端浏览器无法抓取全部请求等种种问题,再此总结下,希望能帮助有问题的童鞋。

如果你的 Fiddler 突然不能抓取请求了,可以从以下几个角度试试看:

Web 浏览器的请求,Fiddler 不能抓取的解决方法:

1、是否有新安装代理相关的插件?

如有安装管理代理的插件,插件会屏蔽 Fiddler 的设置,此时把插件禁掉、或者设置默认的代理就可以解决了。

2、Chrome 浏览器访问任何一个 Https 的链接 都提示不安全,每个链接都要反复点击信任并前往不安全的链接,如下图所示。

虽然关闭 Fiddler 可以解决这个问题,但显然不是我们想要的结果。

这种情况的发生是因为 Chrome 不信任 Fiddler 的根证书,需要去更换证书。
Fiddler 直接提供了不同拦截证书,这个时候的选择 Tools——Options——Https——点击蓝色的证书链接,进行更换。

更换完成后还需重置 Fiddler 的证书。具体的位置在 Tools——Options——Https——Actions——Reset All Certificates

如果你的证书被误删,导致浏览器无法访问 https 链接,可以直接 Reset 一下。

这里 访问 Https 的同学也可以对...from all processes 这个选项注意,如果仅选择了从客户端抓取,在 Web 浏览器上同样不会被捕捉请求,from all processees 就是获取到全部请求的意思,可默认选择。

手机端浏览器的请求,Fiddler 不能抓取的解决方法:

1、Fiddler 是否打开 客户端请求抓取?

Tools——Options——Connections,里面的 Allow remote computers to connect 一定要勾选。修改后,注意需要重新打开 Fiddler。

2、Fiddler 是否被准许监听 8888 端口?

CMD 命令行里 执行 netstat -anop tcp 命令,可以查看 Fiddler 是否正常监听默认的 8888 端口,如果服务没有开启,同样在 Tools——Options——Connections 里,修改端口号,如上图的显示。修改后 仍然要记得关闭重新打开 Fiddler 才生效。

当端口过多时,可根据 netstat -ano|findstr "端口号",查看 Fiddler 是否成功占用当前端口号。

我们可以从上图中发现端口 8889 被 6900 的进程所占用,那 tasklist|findstr "6900" 就可以定位到 当前占用这个端口号的进程就是 Fiddler。

3、防火墙被拦

防火墙或者一些 360 类似的杀毒软件,我们可以在防火墙下设置为 fiddler 通过。

iOS 10.3 Fiddler 突然不能抓取 Https 的链接的解决方法:

设置——通用——关于本机——证书信任设置

iOS 10.3 以后,需要手动对证书进行信任,否则无法获取 https 的请求,不知道的很坑有木有。

Fiddler 拦截证书:

http://www.telerik.com/blogs/understanding-fiddler-certificate-generators

Chrome 官网回答不支持 Fiddler 的解决方案:

https://textslashplain.com/2017/03/10/chrome-deprecates-subject-cn-matching/

Fiddler 抓取链接配置的基本教程:

https://i.wanz.im/2013/04/30/debugging_http_request_with_fiddler/

共收到 6 条回复 时间 点赞

好文

ios 11.2.3 之后 好像就抓不了数据了

志雄 回复

都是可以的,看到看下是否授权成功了。

好帖,我排查了半天,原来是被广告过滤软件阿呆喵影响了,导致不能访问 https 的网站

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册