「能说工具」系列之抓包神器-Fiddler
“工欲善其事,必先利其器。” ——子曰。
接下来的一段时间,我会介绍一些平时使用的工具,主要还是日常程序开发中的工具,感兴趣的同学可以关注下我的微信订阅号 能叔,为感。
网络抓包对于探究神秘互联网世界的真相是必不可少的技能,工具有很多,最有名的要算 wireshark¹,这工具功能确实强大,但学习成本相对也较高,有兴趣的可以买本《wireshark网络分析就这么简单》自己慢慢研究。当然也有简单的,比如 Smsniff²,强烈推荐没啥基础且不想投入时间的朋友用。
以上两个软件我都不介绍,这里我主要想讲下 Fiddler³,介于前面两者之间,味道刚刚好。
Fiddler允许你监视,设置断点,甚至修改输入输出数据,你越使用它就会离网络世界的真相更进一步,你越了解它就越会爱上他,可谓开发工程师、测试工程师、网络工程师居家旅行必备之工具。
其实很多内容在官网的 Fiddler Doc 上都有很详细的介绍了,可能有些人英文不好(我也是),我从实用的角度捡几个重要的点简要说下。另外英文实在不认识你的话,就下载 Fiddler2中文手册 吧!
1、原理介绍
Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,默认端口:8888。
举个栗子,比如访问 www.qq.com
当然你看着8888端口不舒服(强迫症),想改也是可以的。
2、基本界面
Fiddler2的UI功能介绍我就不一一罗列了,大伙自己打开来看看就知道了,这里就上一张整体图,有个感性的认识就好了!
3、捕获浏览器会话
能支持HTTP代理的任意程序的数据包都能被Fiddler嗅探到,Fiddler的运行机制其实就是本机上监听8888端口的HTTP代理。 Fiddler2启动的时候默认IE的代理设为了127.0.0.1:8888,而其他浏览器是需要手动设置的。
- chrome设置
建议下载个proxy SwitchySharp的插件,代理设置、过滤、切换都非常的方便! - firefox设置
点击: 「工具」 -> 「选项」, 在「选项」对话框上点击 「高级」 tab -> 「网络」 tab -> 「设置」.
这些设置都很简单,就不上图占用大家流量了(毕竟运营商喊了半天的“提速降费”,但流量还是挺贵的),其它什么360安全浏览器,什么XX浏览器,我就不一一讲了,大同小异。
4、捕获JAVA应用
这里不管你是Eclipse开发也好, intellij idea也罢,甚至有人还在使用Jbuilder我也忍了,设置都是一样,有两种方式:
1、启动配置应用的JVM环境
jre -DproxySet=true -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8888
或者
jre -DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=8888 MyApp
2、代码设置JVM代理设置
System.setProperty("http.proxyHost", "127.0.0.1");
System.setProperty("https.proxyHost", "127.0.0.1");
System.setProperty("http.proxyPort", "8888");
System.setProperty("https.proxyPort", "8888");
但是如果你程序中使用 Apache HttpClient 来发送请求的话,我不得不遗憾的告诉你,上述两种方式都没用,你必须在HttpClient上做代理设置,形如:
RequestConfig.custom().setProxy("127.0.0.1","8888").build();
5、捕获HTTPS
真的很简单,打开工具栏->Tools->Fiddler Options->HTTPS
如果你想知道原理,可参考 浅谈HTTPS以及Fiddler抓取HTTPS协议 ,反正我是不求甚解。
6、手机上抓包
要在手机上抓包的前提是: 要抓包的手机和安装Fiddler的电脑在同一个局域网上。 接下来就简单了,三步走:
-
配置Fiddler, 允许"远程连接"
Tools-> Fiddler Options 。(配置完后记得要重启Fiddler)。
选中"Allow remote computers to connect",是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来 。 -
给手机安装Fiddler证书
使用手机浏览器访问http://【电脑IP地址】:【fiddler设置的端口号】,既可以下载fiddler的证书并安装。啥?电脑IP怎么看?把电脑反过来,底部右下角就能看到,如果还是看不到,请用橡皮擦一下。 -
给手机设置代理
打开HTTP代理, 输入Fiddler所在机器的IP地址(比如:192.168.1.104) 以及Fiddler的端口号8888。
7、操作会话
- 查找会话
有些时候,会话列表中一堆的会话,眼睛都要看瞎了的时候,它就派上用场了,用快捷键Ctrl+F打开Find Sessions对话框,输入关键字查询会话,查询到的会话会用黄色显示(当然你也可以配置换个颜色)。 - 过滤会话 这个其实和查找会话类似,就是个加强版的“查找会话”,只不过可以选项更多。在任务面板的Filters tab中,里面有很多选项, 可以自己研究下,大概就知道怎么了。
- 比较会话
有些时候,我们想比较下两个会话的区别,选中2个会话,右键然后点击Compare,就可以用WinDiff来比较两个会话的不同了(当然需要你安装WinDiff)。 - 保存会话
有些时,候我们需要把会话保存下来,以便发给别人或者以后去分析。那么选择你想保存的会话,然后点击File->Save->Selected Sessions,搞定。
8、断点修改request、response
这属于高级技能,本期略,有时间再续。
9、快速命令行QuickExec
这属于高级技能,本期略,有时间再续。
10、其它小cookie
-
有用的“十”字架
绝对的傻瓜操作,比如你想抓指定的程序的包,比如只想抓“印象笔记”,那就点击按住“十”字架,然后拖到印象笔记的窗口放开就可以了。它能指定进程进行抓包,指哪打哪,排除不必要的干扰。 -
编码小工具
点击Fiddler2工具栏上的TextWizard,这个工具可以Encode和Decode string,妈妈再也不用担心我的编码了。 -
Composer作曲家
这玩意和 Postman⁴ 一样,可以来模拟你的http请求,你可以自己构建一个美妙的曲子。
附录
- Wireshark官网:https://www.wireshark.org/
- Smsniff官网:http://www.nirsoft.net/utils/smsniff.html
- Fiddler官网:http://www.telerik.com/fiddler
- Postman官网:https://www.getpostman.com/