Fiddler抓包工具在APP开发过程中使用非常频繁,对开发者理解HTTP网络传输原理以及分析定位网络方面的问题非常有帮助。今天抽点时间出来总结一下Fiddler在实际开发过程中的应用。
我开发过程中使用的比较多的抓包工具主要有MiniSniffer,Fiddler和Wireshark。其中MiniSniffer是一款体积小巧的老牌网络抓包工具,嗅探、捕获各种程序开启的网络连接数据。Wireshark是一款非常流行,功能十分强大的网络数据分析工具,可以显示网络封包的详细信息,需要网络协议有一定的了解才比较容易看懂Wireshark。Fiddler是一款定位http/https调试的工具,能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据。如果平时开发过程中只是涉及到http/https上层网络协议的话,使用Fiddler足够了,这里主要总结下Fiddler的使用。
本文涉及的内容有:
- Fiddler概述
- Fiddler工作原理
- Fiddler抓取Https报文原理
- Fiddler基本配置安装
- Fiddler抓取Https配置安装
- FiddlerCertMaker插件安装
- 手机端证书安装
一、概述
Fiddler是一款免费且功能强大的数据包抓取软件。它通过代理的方式获取程序http通讯的数据,可以用其检测网页和服务器的交互情况,能够记录所有客户端和服务器间的http请求,支持监视、设置断点、甚至修改输入输出数据等功能。fiddler包含了一个强大的基于事件脚本的子系统,并且能够使用.net框架语言扩展。
二、Fiddler工作原理
Fiddler是位于客户端和服务器端之间的HTTP代理, 它能够记录客户端和服务器之间的所有 HTTP(S)请求,可以针对特定的HTTP(S)请求,分析网络传输的数据,还可以设置断点、修改请求的数据和服务器返回的数据。
Fiddler在浏览器与服务器之间建立一个代理服务器,Fiddler工作于七层中的应用层,能够捕获通过的HTTP(S)请求。Fiddler启动后会自动将代理服务器设置成本机,默认端口为8888。Fiddler不仅能记录PC上浏览器的网络请求数据,还可以记录同一网络中的其他设备的HTTP(S)请求数据。数据传递流程大致如下:
1) 客户端像WEB服务器发送HTTP(S)请求时,请求会先经过代理Fiddler代理服务器。
2) Fiddler代理服务器截取客户端的请求报文,再转发到WEB服务器,转发之前可以做一些请求报文参数修改的操作。
3) WEB服务器处理完请求以后返回响应报文,Fiddler代理服务器会截取WEB服务器的响应报文。
4) Fiddler处理完响应报文后再返回给客户端。
三、Fiddler抓取HTTPS原理
现在APP中的数据传输基本上都使用HTTS传输,传输的数据都是经过加密的,这增加了我们分析数据包的难度,还好Fiddler除了可以抓取HTTP数据包,还可以抓取HTTPS数据包。由于HTTPS传输需要使用到CA证书,所以抓取抓取HTTPS数据包时需要做一些特殊配置。Fiddler截取HTTPS报文的流程大致如下:
1) 客户端请求建立HTTPS链接,发送客户端支持的加密协议及版本列表等信息给服务器端。
2) Fiddler接受客户端请求并伪装成客户端向WEB服务器发送相同的请求。
3) WEB服务器收到Fiddler的请求以后,从请求中筛选合适的加密协议。并返回服务器CA证书,证书中包括公钥信息。
4) Fiddler收到WEB服务器的响应后保存服务器证书并自签名一个CA证书,伪装成服务器,把该证书下发给客户端。
5) 客户端验证证书合法性。(Fiddler能否抓取到HTTPS报文关键看这一步)
6) 客户端生产对称密钥,通过证书的公钥加密发送给服务器。
7) Fiddler拦截客户端的请求以后,使用私钥解密该报文,获取对称加密秘钥,并使用服务器证书中带的公钥加密该对称密钥发送给WEB服务器。此时对称密钥已经泄露了,以后可以使用该秘钥界面客户端和服务器端传输的数据。
8) WEB服务器接收到客户端发送的加密的对称密钥后使用私钥解密,并使用对称密钥加密测试数据传给客户端。
9) Fiddler使用前面获取的对称密钥解密报文。
10) 客户端验证数据无误以后HTTPS连接就建立完成,客户端开始向服务器发送使用对称密钥加密的业务数据
11) Fiddler使用前面获取的对称密钥解密客户端发送的数据并重新加密转发给客户端。
四、Fiddler配置流程
1. 下载安装
a) 可以到官网下载Fiddler免费安装包:https://www.telerik.com/fiddler。由于旧版本的Fiddler抓包HTPPS时需要用到FiddlerCertMaker插件,所以我这里打包了一个压缩包,包含fiddler和FiddlerCertMaker,可点击这里下载。
b) 点击Fiddler安装文件(我这里演示用的是Fiddler5.0版本)安装Fiddler。
2. Fiddler基本配置
如果只是需要监听本机浏览器HTTP数据包的话不需要做任何额外配置,打开Fiddler即可直接使用。一般我们需要监听远程终端设备的网络请求,需要做以下配置。打开Fiddler,在菜单栏中选择Tools->Options->Connections。输入监听端口(默认是8888),选择Allow remotecomputers to connect,点击确认然后重启Fiddler。
由于我们需要监手机端的网络请求,所以还需要对手机端进行设置。首先确保手机网络和安装Fiddler的电脑网络处于同一个wifi网络中。可以点击Fiddler主界面的右上角的“Online”按钮查看Fiddler所在主机的主机名和IP地址,配置手机网络时需要使用到这个IP地址。
打开手机网络设置,选择跟Fiddler主机在统一网络,打开wifi设置界面,进入wifi的高级设置(不同手机设置不一样,有一些手机长按选中的wifi名称可以出来,有一些手机是点击wifi名称后面的按钮,自己尝试)。Fiddler本身就是代理服务器,在wifi高级设置中的代理栏下面选择手动设置,设置输入Fiddler主机的IP地址(上一步显示的IP)和监听端口号(前面默认8888那个),点击确认。
这些配置按成以后,你在APP中打开有网络请求的操作,即可在Fiddler中看到。
在右边的Inspectors窗口中可以看到这个请求的请求报文和响应报文信息。
以上配置只能监听到HTTP报文,对于HTTPS报文无法显示内容,还需要做其他配置。
3. Fiddler抓包HTTPS
前面也讲了,HTTPS数据报文传输的时候涉及到证书及数据加密的问题,所以Fiddler需要抓取HTTPS报文的话还需要做其他配置。
首先还是打开Fiddler配置:Tools->Options->HTTPS:
勾选Capture HTTPS CONNECTS和Decrypt HTTPS traffic选项,如果只是想抓取本机或者远程终端的数据报文,可以在…from all processes这个下拉框中选择。这里还有一点需要注意的就是,低版本的Fiddler自签名的CA证书有一些问题,后面导入到手机上时无效,这里就需要安装上面说的FiddlerCertMaker插件。安装后要重启Fiddler,如果安装成功在上图Certificates generated by CertEnroo engine的位置的内容就会显示安装的FiddlerCertMaker插件信息。
设置完成以后点击OK,重启Fiddler。此时在手机端操作一些有https传输的app就会发现可以看到传输的内容,但是有局限性,只有设置了信任所有证书的APP中的HTTPS报文才能查看到,这类APP是非常不安全的。如果需要抓取大部分HTTPS报文怎么办呢?
大家都知道手机系统中集成了系统认为可信的CA根证书,如果服务器的证书是这些机构颁发了,HTTPS请求时系统才认为是安全的,否则SSL握手失败(前提是APP中使用系统默认证书信任机机制)。Fiddler自签名证书肯定不在系统信任的证书列表中,那怎么办呢?我们可以在手机中把Fiddler自签名的证书导入到信任证书列表中就可以解决这个问题了。
接下来打开手机中的浏览器,在地址栏输入Fiddler监听的IP:端口,比如:192.168.1.106:8888。
点击页面中的FiddlerRoot Certificate,下载并安装证书(如果下载了没有自动提示安装,可进入设置->系统安全->从存储设备安装中手动安装)。
输入证书名称,这里命名fiddler,点击确认。如果安装成功在系统安全->信任的凭据->用户中可以看到刚才安装的证书(如果证书名称是乱码,可能是Fiddler生成的证书有问题,需要安装FiddlerCertMaker插件,重新操作)。
我们在手机端打开有HTTPS链接的APP发现可以抓取HTTPS中的数据报文了。
这样就大功告成了,大家发现大部分HTTPS请求是可以抓取到的。大家有没有发现好像HTTPS传输也不是100%安全。
五、总结
以上哪里写的不对或者有待改进,欢迎大家提意见,谢谢!
转载请注明出处:http://www.luoxudong.com/?p=306
T
APP开发浅谈-Fiddler抓包详解的更多相关文章
-
转:APP开发浅谈-Fiddler抓包详解
原文地址:http://www.luoxudong.com/?p=306 Fiddler抓包工具在APP开发过程中使用非常频繁,对开发者理解HTTP网络传输原理以及分析定位网络方面的问题非常有帮助.今 ...
-
fiddler抓包详解
image.png 前言 fiddler是一个很好的抓包工具,默认是抓http请求的,对于pc上的https请求,会提示网页不安全,这时候需要在浏览器上安装证书. 一.网页不安全 1.用fiddler ...
-
2.TCP_IP互联线缆_TCP_UDP报文抓包详解
TCP_IP互联线缆_TCP_UDP报文抓包详解 2.1网线标准 直通线 交叉线 异种设备互联使用直通线 同种设备互联使用交叉线 TCP和UDP 端口寻址 TCP数据格式 TCP三次握手 UDP数据格 ...
-
【前端开发】利用Fiddler抓包工具进行本地调试
解决什么问题: 解决前端在本地联调页面 || 样式 || 脚本时经常修改服务器代码,浪费太多时间. 避免多人同时修改代码产生冲突问题.可以在本地调完代码之后,再贴到服务器上. 其实这个问题老早就开始想 ...
-
抓包工具Fidder移动端HTTP请求抓包详解
第一步:下载神器Fiddler,下载链接: http://fiddler2.com/get-fiddler 下载完成之后,傻瓜式的安装一下了! 第二步:设置Fiddler打开Fiddler, ...
-
【转】蓝牙ble app开发(三) -- 抓包
原文网址:http://blog.csdn.net/lckj686/article/details/43156617 关于android 蓝牙app开发抓包的重要性在 android 蓝牙ble ap ...
-
【Android】利用Fiddler进行抓包详解教程。抓取接口以及数据,可以抓真实安卓手机或者模拟器。
大家都知道抓包的方法很多.我这里给大家介绍介绍一种,利用fiddler进行抓包,当然比如Wireshark也可以抓包,我们这里不做介绍.我这里演示的是fiddler+天天模拟器,当然真实安卓手机也是一 ...
-
charles抓包详解http 与 https
包工具多种多样,比较好使的还是Charles和Fiddler,下面就简单的介绍下HTTPS的相关原理并以Charles为例来介绍下如何抓取HTTPS协议的包 1.下载charles 可以去charle ...
-
使用被动混合内容的方式来跨越浏览器会阻断HTTPS上的非安全请求(HTTP)请求的安全策略抓包详解
/*通过传入loginId在token中附加loginId参数,方便后续读取指定缓存中的指定用户信息*/ GET /multitalk/takePhone.php?loginId=4edc153568 ...
随机推荐
-
mac 下配置protobuf 3.0 golang环境
protobuf 3.0 与 之前的 protobuf 2.6 的语法是不一样的.需要重新安装一下,本机的环境是 OS X Yosemite 10.10.2 1. 不采用home brew安装,用 ...
-
QCon 2013 上海 -- 高并发可用
高并发可用应该是这次QCon的主要议题,目测超过一半的话题都在讨论这个主题或者和这个主题相关.看到Yun关于AWS re:Invent的总结,好像这个在AWS上也是很热的一个主题.就我个人而言,没 ...
-
PDOstament对象执行execute()函数,只要是sql语句正确都是返回true
[PDO对象操作数据库] PDOstament对象执行execute()函数,只要是sql语句正确都是返回true. 问题: 想要PDO对象实现更改一条记录, 并修改是否成功要返回信息给用户. 上我的 ...
-
POJ(2784)Buy or Build
Buy or Build Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 1369 Accepted: 542 Descr ...
-
Android 属性动画(Property Animation) 全然解析 (下)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38092093 上一篇Android 属性动画(Property Animatio ...
-
How To Handle MLOG$_AP_SUPPLIER_SITES_AL, MLOG$_AP_SUPPLIERS Growing So Much? Having Lots of Data
How To Handle MLOG$_AP_SUPPLIER_SITES_AL, MLOG$_AP_SUPPLIERS Growing So Much? Having Lots of Data (文 ...
-
js时间戳转日期
//时间戳转日期 2017-04-30 13:20 //type=1--> 2017-04-30 13:20 //type=2-->2018年08月 //type=3-->2018- ...
-
SQL SERVER-查询爆破sa密码的主机
drop table if exists #sql create table #sql ( Logdatae ), processinfo ), [text] varchar(max) ) go IN ...
-
js页面加载完成事件
jquery的一种简写形式: $(function(){ alert("页面加载完成!"); }); 其对应的完整形态为: $(document).ready(function( ...
-
5、Angular的一些其他核心特性,学习的主要模块
Angular应用程序的八个主要构造块: 模块 组件 模板 元数据 数据绑定 指令 服务 依赖注入 其他重要的Angular特性和服务: 动画 表单 HTTP 组件生命周期 管道过滤器 路由 测试