HTTP抓包神器 - Fiddler

一款免费且功能强大的http抓包工具,简单易上手,非常适合开发和测试人员。

一、关于Fiddler

1. Fiddler的简介

  Fiddler是位于客户端和服务器端之间的代理,也是目前最常用的抓包工具之一。它能够记录客户端和服务器之间的所有请求,可以针对特定的请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。

  简而言之,Fiddler是一款http抓包工具。

2. Fiddler的下载

  方式一:官网安装包下载(推荐),进入官网下载安装包,然后安装即可。

  方式二:绿色汉化版下载,直接百度搜关键字“fiddle绿色汉化版”,有很多下载链接。好处是绿色免安装,中文界面;但有朋友用了几次后,发现每次打开都会自动建立2、3百个端口自动访问m.10010等网站。

  上述两种下载方式看个人需要选择。

2. Fiddler的原理

  Fiddler是以代理web服务器的形式工作的,它默认使用代理地址:127.0.0.1,端口:8888,都是可设置的。
  如下图所示,本地应用与服务器之间所有的 Request 和 Response 都将经过Fiddler,由Fiddler进行转发,此时Fiddler以代理服务器的方式存在。
fiddler_theory.jpg
  由于所有的网络数据都会经过Fiddler,因此Fiddler能够截获这些数据,实现网络数据的抓包。
  另外,Fiddler会自动设置代理,退出的时候它会自动注销代理,这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler。

4. Fiddler和Wireshark对比

  Fiddler 和 Wireshark 是使用最广的两款抓包工具,这两款侧重点不同,但同样都是十分有效的抓包工具。
  下面看下它们的对比:

  Fiddler
  优势:
   ৹ 本地化的工具,是一个使用本地 127.0.0.1:8888 的 http代理(任何能够设置http代理为127.0.0.1:8888的浏览器和应用程序都可以使用Fiddler。
   ৹ 在windows上运行的程序,专门用来捕获http、https的,本身对http协议支持较好,且操作简单容易上手。
   ৹ 具有抓包和分析功能,省去了安装其他工具的必要。
   ৹ 工具本身功能强大,如劫包、篡改数据、限速等。
  不足:
   ৹ Fiddler只是用于分析http、https数据包的,Wireshark是所有网络数据包。

  Wireshark
  优势:
   ৹ 强大的协议解析能力,一到七层全解码,一览无遗,对于协议细节的研究特别有帮助。
   ৹ 对于https加密流量,只要将浏览器的session key 自动导入wireshark,Wireshark可以自动解密https流量。
  不足:
   ৹ 更专业,有一定上手难度。
   ৹ 尽管可以自定义过滤列表,但为了抓取一个特定TCP Flow /Session 流量需要写一个长长的过滤列表,这对于初学者很不友好。

  总结,如果是处理http、https还是用Fiddler;其他协议比如tcp、udp就用Wireshark。

二、使用Fiddler抓取浏览器包

  Fiddler启动的时候,默认IE的代理设为了(127.0.0.1:8888),而其他浏览器是需要手动设置。
  在我的电脑上,Firefox已经不需要手动设置了。
  如果你需要对Firefox或者Chrome浏览器进行设置,可以按如下步骤:

  Firefox
  右上角“打开菜单”->选项->网络设置->设置->。并配置相应的代理如下:
  代理模式:手动配置代理
  HTTP代理:127.0.0.1,端口:8888
  或者直接安装Firefox的代理管理工具:FoxyProxy,我没用过,据说它完全替代了Firefox有限的代理功能,而且提供了比SwitchProxy、ProxyButton、QuickProxy、xyzproxy、ProxyTex、TorButton等等更多的功能。

  Chrome
  安装插件:SwitchyOmega,这是Chrome的代理管理浏览器插件,在Chrome应用商城能找到。
  添加好插件后,打开 SwitchyOmega 点击新建情景模式,设置代理服务器为 127.0.0.1:8888,设置好后,点击应用选项保存即可。
  通过浏览器插件切换为设置好的代理,请注意(这里如果不需要,你设置的代理,请切换成 auto switch)不然会影响浏览器正常使用,无法访问网页。

  下面就可以使用Fiddler抓取浏览器的HTTP请求了,打开Firefox浏览器,访问百度。可以看到Fiddler一下子显示了很多的记录,看的眼花缭乱,需要这时候需要使用过滤条件来帮助你,一般常用的有三种过滤条件
fiddler_filters.png
  ● 域名过滤,只显示特定域名的记录:
    ৹ *.baidu.com 表示所有的百度二级域名会话;
    ৹ *baidu.com 表示一级域名+二级域名的会话;
    ৹ *baidu.com 表示一级域名+二级域名的会话。
  ● 类型过滤,一般对各种图片、CSS、JS这类的静态素材也不需要看的情况下,直接全部过滤掉:
    ৹ .*\.(bmp|css|js|gif|ico|jp?g|png|swf|woff)
  ● 返回码过滤,比如只想显示200状态返回码的数据,其他的不显示。

  设置好了后一定要点击当前tab页右上角的Actions生效。

三、使用Fiddler抓取https请求

  Fiddler默认是抓http请求的,对于pc上的https请求,会提示网页不安全,如下图:
  点击某一个请求,你会发现请求的内容是一堆明显不对的文字,然后该请求的左边是一个锁的样式,表示https加密。右边的返回内容中,第一句告诉我们“这是一个连接隧道,通过该隧道的是加密的HTTPS流量。
fiddler_https_decryption_is_disabled.png
  这时候需要在浏览器上安装证书。

  第一步:检查Fiddler设置
  依次选择 Tools > Options > HTTPS,勾选 Decrypt HTTPS traffic。

  第二步:安装证书
  安装证书两种方法,选其一即可:
  ● 勾选后点击右边的Actions按钮选择“Trust Root Certificate”选项,然后全部选择是就行了。
    ৹ 如果弹出如下报错,参考Fiddler死活抓不了HTTPS包解决办法
fiddler_root_certificate.png

  ● 勾选后点击右边的Actions按钮选择第二个选项将证书导出到桌面,然后再在对应的浏览器里面添加即可。
    ৹ 导出到桌面,此时桌面上会多一个文件:FiddlerRoot.cer;
    ৹ 打开浏览器,工具>选项>高级>证书>查看证书>证书机构>导入;
    ৹ 下载证书弹出框,勾选三个选项,确定。

四、使用Fiddler抓取手机app包

  但是如果你想要对手机上的app进行抓包怎么办呢,那么你还需要进行以下操作。

  ● 首先你的Fiddler所在的电脑和手机必须处在同一个局域网内(即连着同一个路由器);

  ● 查看你的本机IP地址,在Fiddler的右上角有一个Online按钮,鼠标悬浮会显示你的IP信息;

  ● 配置连接信息:Tools > Options >Connections。
    ৹ 端口默认是8888,你可以进行修改;
    ৹ 勾选Allow remote computers to connect选项,然后重启Fiddler,再次打开时会弹出一个信息,选择ok即可。
fiddler_connections.png
  ● 打开你的手机,找到你所连接的WIFI,长按选择修改网络,输入密码后往下拖动,然后勾选显示高级选项,然后在代理一栏选择手动,再将你先前查看的IP地址和端口号输入进去,然后保存;
fiddler_mobile_settings.png
  ● 最后安装手机证书。
    ৹ 在手机浏览器一栏输入电脑的IP地址和端口号,这里我是192.168.1.157:8888;
    ৹ 进入一个网页,点击最下面那个FiddlerRoot certificate下载证书,下载成功后在设置里面安装;
    ৹ 安装步骤:打开高级设置->安全->从SD卡安装证书->找到证书文件->点击后为证书命名点击确定即可安装成功(具体过程请根据实际机型百度查找,关键词是从SD卡安装证书);

  ● 到这里我们就设置好所有的值,下面就来测试一下,打开手机中的某个app,Fiddler抓包看看。


  目录