• 9
  • 11
分享

  一、概述

  Fiddler是一款免费且功能强大的数据包抓取软件。它通过代理的方式获取程序http通讯的数据,可以用其检测网页和服务器的交互情况,能够记录所有客户端和服务器间的http请求,支持监视、设置断点、甚至修改输入输出数据等功能。fiddler包含了一个强大的基于事件脚本的子系统,并且能够使用.net框架语言扩展。

  二、Fiddler工作原理

  Fiddler是位于客户端和服务器端之间的HTTP代理, 它能够记录客户端和服务器之间的所有 HTTP(S)请求,可以针对特定的HTTP(S)请求,分析网络传输的数据,还可以设置断点、修改请求的数据和服务器返回的数据。

  Fiddler在浏览器与服务器之间建立一个代理服务器,Fiddler工作于七层中的应用层,能够捕获通过的HTTP(S)请求。Fiddler启动后会自动将代理服务器设置成本机,默认端口为8888。Fiddler不仅能记录PC上浏览器的网络请求数据,还可以记录同一网络中的其他设备的HTTP(S)请求数据。数据传递流程大致如下:

1-1.png

  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-2.png

  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,可点击这里下载。

1-3.png

  b) 点击Fiddler安装文件(我这里演示用的是Fiddler5.0版本)安装Fiddler。

  2. Fiddler基本配置

  如果只是需要监听本机浏览器HTTP数据包的话不需要做任何额外配置,打开Fiddler即可直接使用。一般我们需要监听远程终端设备的网络请求,需要做以下配置。打开Fiddler,在菜单栏中选择Tools->Options->Connections。输入监听端口(默认是8888),选择Allow remotecomputers to connect,点击确认然后重启Fiddler。

1-4.png

  由于我们需要监手机端的网络请求,所以还需要对手机端进行设置。首先确保手机网络和安装Fiddler的电脑网络处于同一个wifi网络中。可以点击Fiddler主界面的右上角的“Online”按钮查看Fiddler所在主机的主机名和IP地址,配置手机网络时需要使用到这个IP地址。

1-5.png

  打开手机网络设置,选择跟Fiddler主机在统一网络,打开wifi设置界面,进入wifi的高级设置(不同手机设置不一样,有一些手机长按选中的wifi名称可以出来,有一些手机是点击wifi名称后面的按钮,自己尝试)。Fiddler本身就是代理服务器,在wifi高级设置中的代理栏下面选择手动设置,设置输入Fiddler主机的IP地址(上一步显示的IP)和监听端口号(前面默认8888那个),点击确认。

1-6.png

  这些配置按成以后,你在APP中打开有网络请求的操作,即可在Fiddler中看到。

1-7.png

  在右边的Inspectors窗口中可以看到这个请求的请求报文和响应报文信息。

1-8.png

  以上配置只能监听到HTTP报文,对于HTTPS报文无法显示内容,还需要做其他配置。

  3. Fiddler抓包HTTPS

  前面也讲了,HTTPS数据报文传输的时候涉及到证书及数据加密的问题,所以Fiddler需要抓取HTTPS报文的话还需要做其他配置。

  首先还是打开Fiddler配置:Tools->Options->HTTPS:

1-9.png

  勾选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。

1-10.png

  点击页面中的FiddlerRoot Certificate,下载并安装证书(如果下载了没有自动提示安装,可进入设置->系统安全->从存储设备安装中手动安装)。

1-11.png

  输入证书名称,这里命名fiddler,点击确认。如果安装成功在系统安全->信任的凭据->用户中可以看到刚才安装的证书(如果证书名称是乱码,可能是Fiddler生成的证书有问题,需要安装FiddlerCertMaker插件,重新操作)。

  我们在手机端打开有HTTPS链接的APP发现可以抓取HTTPS中的数据报文了。

1-12.png

1-13.png

  这样就大功告成了,大家发现大部分HTTPS请求是可以抓取到的。大家有没有发现好像HTTPS传输也不是100%安全,怎么保证不被抓包呢,下次整理一篇文章总结一下怎么防止APP被抓包。



作者:罗旭东   

来源:http://www.51testing.com/html/41/n-4476641.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   2018 年,Google首席执行官桑达尔·皮查伊 (Sundar Pichai) 曾要求苹果首席执行官Tim Cook (Tim Cook) 在 iPhone 上预装Google搜索应用,但库克最终并未采纳这个想法。 该信息来自Google正面临美国司法部正在进行的反垄断诉讼。  在库克表示希望苹果与Google成为“深度合作伙伴”后,皮查伊向库克提出了这个想法。 他告诉库克,预装Google搜索应用程序将为Google带来更多流量,从而为苹果带来更多收入。 苹果和Google长期以来一直有搜索引擎交易,Google每年支付 18 至 200 亿美元,成为苹果设备上的默认搜索引擎,但在 ...
            0 0 577
            分享
          •   国外科技媒体 Six Colors 报道,苹果 macOS 提醒和警告严重影响 Mac 设备迁移升级体验。  该媒体主编杰森?斯内尔(Jason Snell)在评测苹果 M3 iMac 和 M3 MacBook Pro 过程中,在迁移数据方面遇到了一些问题。  他表示在迁移完成之后首次重新开机 Mac 之后,出现了大量的安全警报,IT之家在此附上该媒体截图如下:  迁移助理已经迁移了我的所有应用程序,并自动启动了登录项中列出的任何应用程序或设置为在后台自动启动的应用程序。  迁移完成之后这些应用都会同时启动,并向用户发出通知提醒,告知或者提示用户这些应用的执行权限。  这些提醒和通知彼此重...
            0 0 1093
            分享
          •   众多接口管理工具如雨后春笋搬冒出。让人欣慰的是,有许多优秀作品来自国内,包含YApi和rap。  看着中文的官网,熟悉的汉语,不禁让人暗爽。当然这也就带来另一个弊端,因为使用基数少,所以参考资料少。我们想学习使用方法,只能依赖官方文档,也算是福祸相倚了。  本文将带您走进Yapi的世界,让您体验一回小清新的接口管理工具。  根据统计,市面上互联网项目超过10亿,保守统计涉及的API数量有100亿。但是很多API的质量堪忧。因为与API相关的文档、调试、测试和数据Mock在工作中效率非常低。  我们急需一款产品,它需要具有接口管理功能,提供调试,文档管理和测试功能。这时YApi横空出世。  ...
            0 0 731
            分享
          • Jmeter脚本编写一般分为五个步骤:添加线程组添加http请求在http请求中写入接入url、路径、请求方式和参数添加查看结果树调用接口、查看返回值设置HTTP请求默认值在有多个请求时,每个请求都需要选择http协议,填写服务器名称或者服务器ip地址,比较重复和麻烦,所以可以定义一个http请求默认值,设置所有的请求默认使用http协议,默认服务器名称或服务器ip地址。在线程组–添加–配置元件–HTTP请求默认值,然后进行配置,并把该元件放置到请求前面。协议:http服务器名称或ip:httpbin.org断言设置针对每个请求的响应进行断言,设置步骤:选中一个请求–添加–断言–响应断言参数设...
            0 0 1176
            分享
          • 1、引言小鱼:小屌丝, 这段代码为什么要开两个线程?小屌丝:因为我要读写文件,还要备份文件,所以就开两个线程了。小鱼:嗯,想法是对的,但是,还有一种简便的方法, 不需要开两个线程就能搞得定的。小屌丝:额…难道是with open?小鱼:不是。小屌丝:那还有啥呢? 我咋想不起来了。小鱼:嗯,这个方法很奈斯,但是很少人使用,因为大部分码农都是直接open 文件的。小屌丝:那你就别藏着掖着了,赶紧展示一下,让我也长长见识。2、 fileinput说到fileinput,可能90%的码农表示没用过,甚至没有听说过。这不奇怪,因为在python界,既然open可以走天下,何必要fileinput呢?。但...
            0 0 1244
            分享
      • 51testing软件测试圈微信