Fiddler操作技巧

时间:2024-01-21 10:25:51

安装和配置fiddler

Fiddler相关介绍

Fiddler简介:

Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一 。 它能够记录客户端和服务器之间的所有 HTTP和HTTPS请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据。既然是代理,也就是说:客户端的所有请求都要先经过Fiddler,然后转发到相应的服务器,反之,服务器端的所有响应,也都会先经过Fiddler然后发送到客户端,基于这个原因,Fiddler支持所有可以设置http代理为127.0.0.1:8888的浏览器和应用程序。

 

应用层传输协议HTTP和HTTPS简介:

HTTP(HyperText Transfer Protocol):应用层的超文本传输协议,是建立TCP协议之上的一种应用,最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为‘一次连接’。

HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer):应用层的安全超文本传输协议,以安全为目标的HTTP通道,在HTTP下加入SSL层。

HTTP和HTTPS的区别:

https协议需要到ca申请证书,一般免费证书很少,需要交费

http是超文本传输协议,信息是明文传输,https 则是具有安全性ssl加密传输协议

http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443

http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全

 

PC端安装fiddler

步骤1:获取安装包

Fiddler官网:https://www.telerik.com/download/fiddler    ---打开网页到下载的速度很慢

亿方云上面也有

步骤2:安装步骤参考:https://jingyan.baidu.com/article/3a2f7c2e23321f26afd6119a.html 

步骤3:打开fiddler

 

手机抓包准备-设置允许远端连接

PC上的Fiddler先设置允许抓包,步骤如下:

步骤1:先确保Fiddler能装PC端的http和https的包

步骤2:Fiddler设置Allow remote computers to connect,如下图:

 

步骤3:重启Fiddler

 

Ios端使用fiddler

IOS手机通过Fiddler抓包设置方式如下:

步骤1:获取Fiddler对应的HOST,获取方式如下图:

 

步骤2:IOS手机设置代理,如下图:

 

步骤3:手机浏览器打开百度,验证Fiddler已经能抓包

步骤4:此时仍只能抓到http,还需要安装描述文件,才能抓到https的包

步骤5:安装描述文件:手机浏览器中输入(直接访问IP:端口号),如10.100.24.192:8888

步骤6:点击FiddlerRoot certificate, 安装描述文件

 

 

有一种情况特殊说明下:

Q:若PC端可以抓https的包,IOS可以抓不到https的包,确抓到了http的包,此时要考虑手机系统设置的问题;

A:此问题的答案不一定百度的到,考虑:   设置-通用-关于本机-信任证书设置: 针对根证书启用完全信任,设置DO_NOT_TRUST_FiddlerRoot=开

 

Android端使用fiddler

Android手机通过Fiddler抓包设置方式如下:

步骤1:获取Fiddler对应的HOST,获取方式如下图:

 

步骤2:Android手机设置代理,参考:https://jingyan.baidu.com/article/03b2f78c7b6bb05ea237aed2.html;不同的型号的手机找不到的话,根据手机型号百度下

步骤3:手机浏览器打开百度,验证Fiddler已经能抓包

步骤4:此时仍只能抓到http,还需要安装描述文件,才能抓到https的包

步骤5:安装证书:手机浏览器中输入(直接访问IP:端口号),如10.100.24.192:8888

步骤6:点击FiddlerRoot certificate, 先保存证书文件

 

步骤7:点击手机设置-安全-从设备存储空间安装-》安装

步骤8:手机浏览器打开https的百度地址,验证Fiddler已经能抓https的包

 

Fiddler设置抓包:

设置抓包

抓包原理

Fiddler是通过改写HTTP代理,让数据从它那通过,来监控并且截取到数据。

启动fiddler之后,自动开代理;关闭fiddler之后,自动关代理。

 

设置是否抓包

方式1:

 

方式2:

 

 

设置抓https的包

刚装好的fiddler不支持抓取https的信息,所以需要设置可以抓取https.

设置入口一:菜单-》Tools-》Optoins-》https

设置入口二:点击如下图黄色部分

 

设置示例如下:

 

 

重置https证书

设置步骤入口如下,然后一步步点击‘是’或者‘Yes’

 

 

抓包后的全局界面

 

工具栏

 

 

左侧-web session列表

 

 

 

快捷命令行

 

 

 

 

状态栏

 

 

Fiddler常用的功能:

断点篡改

断点介绍

断点的作用:可以修改发送到服务器的信息,也可以修改服务器返回的信息

断点有两种方式:

一种是before response,是打在用户请求的时候,还没有request给服务器;

另一种是after response,是在服务器响应之后,打在fiddler将响应传回给客户端之前

断点的原理参考下图:

 

断点的使用场景举例

01 请求篡改:客户端已经报错,无法点击提交报存,但是想跳过客户端看下服务端有没有验证;

---举例演示:填写纳税人识别号

02 请求篡改:通过用户id,订单id等信息去获取信息,但此时篡改为不符合条件的信息,验证是否会获取失败;

--举例演示:篡改id获取不同年节卡的号段;   https://a.guanaitong.cc/festivalMall/order/entityCardActive?cardOrderId=1308

03 请求篡改:客户端已经禁掉了入口,需要验证服务端是否还支持;

--举例演示:费用积分充值提交申请过程中,篡改账户id(费用基本户id=272057 ---现在不会报错了

04 请求篡改:支付过程中,不同金额的商品id或价格等跟钱有关信息的篡改,验证支付失败,或者实际支付金额跟商品一致;

--举例演示:购买天猫享淘卡(https://ecard.a.guanaitong.com/index.php?wxA=TmallChaoshi.index),跳转到收银台,发送验证码之前,输入验证码金额之后均修改金额

05 请求和返回篡改:正常条件下,错误的页面出不来,可以篡改请求或返回来验证失败页面的显示

--举例演示:购买天猫享淘卡,篡改商品数量,从而打开到购物车为空的页面

06 返回篡改:期望的错误文案对应的场景不容易模拟,可以通过篡改返回信息来验证对应的错误文案的显示;

07 返回篡改:一些流程,先后有好几个判断请求,其中某个请求返回错误,可以篡改为都成功,看最终结果是成功还是失败。

 

快捷命令

介绍:入口在fiddler底部的quickexec,主要是搜索和部分操作的快捷操作

 

 

示例1:

输入:help

效果:浏览器打开fiddlerquickexec页面:http://docs.telerik.com/fiddler/knowledgebase/quickexec

示例2:

输入:?shop

效果:搜索所有请求text中,包含‘shop’的请求,并高亮显示

示例3:

输入:=200

效果:搜索出httpstatus=200的请求

示例4:

输入:>4000  >4k  >4kk  <100

效果:对请求信息中的Body进行搜索

示例5:

输入:=POST

效果:搜索请求方式=post

示例6:

输入:@guanaitong.cc

效果:对请求中的域名进行搜索

示例7:

输入:select image

效果:选中所有的图片

示例8:

输入:quit

效果:退出fiddler

 

扩展:更多的使用方式,可以百度搜索关键字‘fiddler 快捷命令’

 

 

配置脚本

介绍:此处通过增加显示IP为示例, 修改script示例可参考:http://www.fiddlerbook.com/Fiddler/dev/ScriptSamples.asp

 

修改步骤:

步骤1:打开FiddlerScript,打开FiddlerScript的方式包括:快捷键(Ctrl+R);点击Rules-Customize Rules;直接点开右侧主页签中的FiddlerScript

步骤2:找到Main()

步骤3:在Main()方法下,添加如下一行:

FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP", 120, "X-HostIP");

步骤4:保存修改,这样左侧请求部分,会把域名对应的IP也显示出来。

 

模拟限速

介绍:实际用户网络情况多样,特别是手机流量的网络较差,所以我们需要考虑网络差这种情况下用户的体验和异常情况。 推荐文章:弱网络环境模拟限速测试流程-  http://www.51testing.com/html/80/n-3726980.html

 

方式1-直接设置

Fiddler提供了模拟恶劣的网络环境方式,勾选如下:Rules–Performances–Simulate Modem Speeds 

 

 

方式2-修改脚本

限速的原理是网络延迟,设置方式如下:

01 打开FiddlerScript;

02 找到m_SimulateModem标志位,看到如下:

       if (m_SimulateModem) {
            // Delay sends by 300ms per KB uploaded.
            oSession["request-trickle-delay"] = "300"; 
            // Delay receives by 150ms per KB downloaded.
            oSession["response-trickle-delay"] = "150"; 
        }

值的计算方式:

如果上传网速期望是100KBps,  request-trickle-delay可以设置为 1KB/100KBps=0.01s=100(ms),所以设置的值越小,表示带宽越大。

03 修改request-trickle-delay或者response-trickle-delay的值,可以写为固定的,也可以设置随机的值,修改方式如下:

       static function randInt(min, max) { return Math.round(Math.random()*(max-min)+min);}
       if (m_SimulateModem) { 
            // Delay sends by 300ms per KB uploaded.
            oSession["request-trickle-delay"] = ""+randInt(1,50); 
            // Delay receives by 150ms per KB downloaded.
            oSession["response-trickle-delay"] = ""+randInt(1,50);
            }

04 保存修改。

注意:每次编辑并保存配置文件后,Simulate Modem Speeds选项会被取消,请重新勾选。

 

模拟2G,3G网络

2G网络的下载速度约15-20k/s , 我们假定为20k/s. fiddler设置网络延迟= 1000/20(kb/s) =50ms

3G网络的下载速度约120-600k/s , 我们假定为200k/s. fiddler设置网络延迟= 1000/200(kb/s) =5ms

 

模拟并发

原理:设置同时请求多次

 

模拟方式:

设置快捷方式:快捷键(Shift+S),在弹出的框中填写需要重复的次数,就可以多次请求了。

页面设置方式:选中需要批量的地址,右击选中-》Replay-》Reissue Sequentially

 

应用场景举例:

01 新增企业收货地址的时候,可以批量多个,如果有企业要求限制收货地址的数量,可能就会建超过相应数量的

02 支付生成订单的时候,同样的交易信息,批量请求,此时可能因为代码先后判断的逻辑等问题,可能会生成一些跳过判断的订单,或者库存已不够之类的订单

 

发送POST或get请求

年节卡查询订单接口示例如下图:

 

 

过滤域名

介绍:抓包过程中,对于的网络请求会影响我们定位和验证问题,所以需要过滤掉一些没用的域名

 

设置过滤域名步骤:

步骤1:点击Fiddler右侧Filters -> check Use Filter -> Hosts部分选择Hide the following Hosts->下面输入框中录入期望过滤掉的域名;

步骤2:点击 Actions -> Run Filterset now,这样过滤域名才能立即生效,设置如下图:

 

 

Q&A:

Q:Fiddler上的配置修改没有生效

A: Fiddler的任何配置上的修改,都要记得重启fiddler,否则很可能不生效

 

Q:PC端抓不到https的包

检查一:有没有设置Capture HTTPS CONNECTS

检查二:重置下https抓包证书

检查三:百度关键字‘fiddler死活抓不了https’

找到类似于这样的文章:https://blog.csdn.net/d1240673769/article/details/74298429

 

Q:Fiddler右上角查看host有多个

 

A:原因是网络连接设置了多个,如下图。可以禁用其中一个网络

 

 

Q:左侧很多请求是灰色的

A:灰色的包括如下格式等:

1.图片是图片,它就是个图片;

2.图标是一把锁,是使用http_connect方法;

附录:

左侧请求第一列图标对应表

 

名称

含义

#

抓取HTTP Request的顺序,从1开始,以此递增

Result

HTTP状态码

Protocol

请求使用的协议,如HTTP/HTTPS/FTP等

Host

请求地址的主机名

URL

请求资源的位置

Body

该请求的大小

Caching

请求的缓存过期时间或者缓存控制值

Content-Type

请求响应的类型

Process

发送此请求的进程:进程ID

Comments

允许用户为此回话添加备注

Custom

允许用户设置自定义值

图标

含义

 

请求已经发往服务器

 

已从服务器下载响应结果

 

请求从断点处暂停

 

响应从断点处暂停

 

请求使用 HTTP 的 HEAD 方法,即响应没有内容(Body)

 

请求使用 HTTP 的 POST 方法

 

请求使用 HTTP 的 CONNECT 方法,使用 HTTPS 协议建立连接隧道

 

响应是 HTML 格式

 

响应是一张图片

 

响应是脚本格式

 

响应是 CSS 格式

 

响应是 XML 格式

 

响应是 JSON 格式

 

响应是一个音频文件

 

响应是一个视频文件

 

响应是一个 SilverLight

 

响应是一个 FLASH

 

响应是一个字体

 

普通响应成功

 

响应是 HTTP/300、301、302、303 或 307 重定向

 

响应是 HTTP/304(无变更):使用缓存文件

 

响应需要客户端证书验证

 

服务端错误

 

会话被客户端、Fiddler 或者服务端终止