今天看啥  ›  专栏  ›  不安分的猿人

万能抓包工具 Fiddler

不安分的猿人  · 掘金  ·  · 2020-03-17 02:29
阅读 60

万能抓包工具 Fiddler

万能抓包工具 Fiddler

一、Fiddler 简介

Fiddler 是一个使用 C# 编写的 http 抓包工具。它使用灵活,功能强大,支持众多的 http 调试任务,是 web、移动应用的开发调试利器。

我很早之前的一篇文章 Fiddler抓取数据,20行代码赚500块,凑巧帮那位朋友解决了他的需求。隔了这么久又有人找我抓公众号数据。今天就分享一下我是如何使用 Fiddler 工具的。

二、实战

2.1 工具安装

Fiddler下载地址www.telerik.com/fiddler 访问链接,进入网站首页,如下图

点击下载,然后会跳到一个问卷页面,填写信息可以下载了。双击下载好的安装程序,点击“下一步”就可安装。

2.2 PC 端请求抓取

查看请求 打开 Fiddler 工具,显示效果如下图:

两个设置

  1. 打开 fiddler,点击工具菜单Tools->optins..->HTTPS 页签,修改如下内容: 这里主要勾选 Decrypt HTTPS traffic这个选项,并选择 ...from all processes 即可。并点击右侧的 Actions,导出证书到桌面。

  2. 打开浏览器 Internet 选项->连接->局域网设置,弹出如下页面,这里主要添加一下本地代理的IP地址和端口。 注:windows 好像不需要这一步设置。

过滤请求 选中 Fiddler 中一条记录,右键 Filter Now,然后选择 Hide 'xxx'即可进行过滤。

如下图右键过滤的请求,就可以自动取消过滤。

2.3 手机客户端请求抓取

fiddler 配置 打开 fiddler,点击工具菜单Tools->optins..->Connections 页签,勾选 Allow remote computers to conect 即可,意思是允许接收来自远程客户端的连接。

手机配置

  1. 查看服务IP地址 在cmd 窗口输入 ipconfig /all 查看网络信息,获取当前电脑的IP地址,如下图:

  2. 安装证书 在手机浏览器访问 192.168.1.105:8888,手机上下载 Fiddler 证书,如下图:

    苹果手机信任证书,设置->通用->描述文件中,选中证书,添加信任即可。

  3. wifi 配置代理 打开手机 wifi 设置,进入配置代理,这里主要添加 服务器端口这两个信息,点击保存即可。如下图 注意:

  • 确保手机和电脑是在同一个局域网,服务器即是运行 Fiddler 工具的那台电脑的IP地址。
  • 端口是上面设置 Fiddler工具,Tools->optins..->Connections 页签中可看到,默认值为8888

数据抓取 在手机上做任何操作,电脑端的 Fiddler都显示对应操作的请求,如下图:

2.4 Fiddler 自定义规则

上面哪些配置都是基础,接下来才是重头戏。Fiddler的强大之处在于,它可以修改请求参数,响应数据,根据需要自定义规则。OnBeforeRequestOnBeforeResponse 最常用的两个方法。点击Fiddler 菜单 Rules->Customize Rules...就可以打开脚本工具了,这里的脚本支持常用的 js 语法。

OnBeforeRequest

意思是在请求之前可以做的事情。这里实现的功能是将网站请求头信息写入本地文件。代码如下:

if (oSession.uriContains("mobile/wx/product/"))
  { 
    var fso;  
    var file;
    fileName = fileName + "_" + ucp;
    fileName = fileName.replace(/\*/g,"");
    var filePath="C:\\mntListen\\" + fileName  + ".txt";
    fso = new ActiveXObject("Scripting.FileSystemObject");
    file = fso.OpenTextFile(filePath,2 ,true, false);
    file.writeLine(" " + oSession.oRequest.headers);
    file.close();
 }
复制代码

注:磁盘对应位置如果没有文件路径,需要提交手动创建。

OnBeforeResponse

意思是在报文响应前可以做的事情。这里我的需求是对网站过滤,修改它的响应报文。

if (oSession.uriContains("mobile/wx/detail/v2"))        
{ 
    var body = oSession.GetResponseBodyAsString();
    body = body.replace(/INVALID/g,"VALID");
    body = body.replace(/title/g,"title1");
    body = body.replace(/name/g,"title");
    oSession.utilSetResponseBody(body);
    file.close();
}
复制代码

上面的这段代码的意思是,当响应 url 链接包含 mobile/wx/detail/v2,进行内容替换。

查看 Fiddler 手册 打开 Fiddler 工具,右侧有常用对象的使用方法,可快速查阅。

三、最后

花了差不多两天时间,终于帮那位朋友解决了他的问题,还是挺有成就感的!中间也有想放弃的时候,最终和朋友的多次沟通,彻底理解需求后,才大功告成。最后我得出一个结论:在做项目开发时,首先需要理解客户需求,才能针对需求寻找解决方案。如果你也在使用 Fiddler 工具的遇到问题,我们一起讨论哈!

参考

不安分的猿人
孜孜不断的技术分享!



原文地址:访问原文地址
快照地址: 访问文章快照