Fiddler 是一个使用 C# 编写的 http 抓包工具。它使用灵活,功能强大,支持众多的 http 调试任务,是 web、移动应用的开发调试利器。javascript
我很早以前的一篇文章 Fiddler抓取数据,20行代码赚500块,凑巧帮那位朋友解决了他的需求。隔了这么久又有人找我抓公众号数据。今天就分享一下我是如何使用 Fiddler 工具的。java
Fiddler下载地址 :www.telerik.com/fiddler 访问连接,进入网站首页,以下图 web
点击下载,而后会跳到一个问卷页面,填写信息能够下载了。双击下载好的安装程序,点击“下一步”就可安装。windows
查看请求 打开 Fiddler
工具,显示效果以下图: 浏览器
两个设置服务器
打开 fiddler
,点击工具菜单Tools->optins..->HTTPS
页签,修改以下内容: 这里主要勾选
Decrypt HTTPS traffic
这个选项,并选择 ...from all processes
便可。并点击右侧的 Actions
,导出证书到桌面。 markdown
打开浏览器 Internet 选项->链接->局域网设置
,弹出以下页面,这里主要添加一下本地代理的IP地址和端口。 注:windows 好像不须要这一步设置。网络
过滤请求 选中 Fiddler
中一条记录,右键 Filter Now
,而后选择 Hide 'xxx'
便可进行过滤。 ide
以下图右键过滤的请求,就能够自动取消过滤。 工具
fiddler 配置 打开 fiddler
,点击工具菜单Tools->optins..->Connections
页签,勾选 Allow remote computers to conect
便可,意思是容许接收来自远程客户端的链接。
手机配置
查看服务IP地址 在cmd
窗口输入 ipconfig /all
查看网络信息,获取当前电脑的IP地址,以下图:
安装证书 在手机浏览器访问 192.168.1.105:8888,手机上下载 Fiddler
证书,以下图:
设置->通用->描述文件
中,选中证书,添加信任便可。 wifi
配置代理 打开手机 wifi
设置,进入配置代理,这里主要添加 服务器
、端口
这两个信息,点击保存便可。以下图 注意:
Fiddler
工具的那台电脑的IP地址。Fiddler
工具,Tools->optins..->Connections
页签中可看到,默认值为8888
。数据抓取 在手机上作任何操做,电脑端的 Fiddler
都显示对应操做的请求,以下图:
上面哪些配置都是基础,接下来才是重头戏。Fiddler
的强大之处在于,它能够修改请求参数,响应数据,根据须要自定义规则。OnBeforeRequest
和 OnBeforeResponse
最经常使用的两个方法。点击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
工具的遇到问题,咱们一块儿讨论哈!