详解Fiddler Classic过滤、重放、转发HTTP请求

更多干货文章,更多最新文章,欢迎到作者主博客 菜鸟厚非

一、简介

今天介绍一下 Fiddler Classic 对 HTPP 的过滤、重放、转发操作,这在开发中,尤其在微服务中调试中是经常用到的功能,可以大大提高我们的调试效率。

二、转发 HTTP 请求

转发 HTTP 请求,是指当一个请求 A 经过 Fiddler,转发到请求 B 的功能。Fiddler 设置请求的转发有两种方式:一种是经过脚本,另一种直接在 UI 设置,而常用的是脚本方式。

例如:请求的地址是 192.168.1.10/Get/Data,想把他转到 localhost:5000/Get/Data,通过这个案例进行讲解

2.1 FiddlerScript

1 . 点击 Fiddler 工具栏的 FiddlerScript 菜单,可以进入脚本编辑页面
![在这里插入图片描述]( https://img-blog.csdnimg.cn/b89e82fb445e4e429bd01b1cb302fca2.png?x-oss-process=image/watermark ,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c6bif5Y6a6Z2e,size_20,color_FFFFFF,t_70,g_se,x_16)2 . 在打开的 Fiddler ScriptEditor 窗口中,使用 Ctrl+F 找到 OnBeforeRequest 方法
![在这里插入图片描述]( https://img-blog.csdnimg.cn/e67f7269551842949349cafdc77cd3b0.png?x-oss-process=image/watermark ,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c6bif5Y6a6Z2e,size_20,color_FFFFFF,t_70,g_se,x_16)3 . 在 OnBeforeRequest 方法的末尾,添加下面代码,主要是对 url 的替换。如下:

        if (oSession.url.IndexOf('192.168.1.10/Get/Data/')>-1){
            oSession.url =oSession.url.Replace('192.168.1.10/Get/Data/','localhost:5000/');    
        } 

![在这里插入图片描述]( https://img-blog.csdnimg.cn/e222afdbe6c5483ea5b9f39cf1925cfe.png?x-oss-process=image/watermark ,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c6bif5Y6a6Z2e,size_20,color_FFFFFF,t_70,g_se,x_16)

三、重放 HTTP 请求

重放 HTTP 请求,使用的是 Fiddler 的 Composer 功能。 可以看做是在 Fiddler 中集成了一个 Postman 功能,我们来看看此工具如何使用。

3.1 捕捉请求

在浏览器范围 一下 http://192.168.88.146:8082/hello ,这是我这内网环境的 api,可根据自己的实际的 api 进行访问
![在这里插入图片描述]( https://img-blog.csdnimg.cn/1db78305f0414ca48c4f5fb75a8d7615.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6I-c6bif5Y6a6Z2e,size_20,color_FFFFFF,t_70,g_se,x_16)
然后,看 Fiddler Classic ,可以看到,捕捉到了刚刚访问的连接
![在这里插入图片描述]( https://img-blog.csdnimg.cn/75a48d132451432ba8a5681a008fda02.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6I-c6bif5Y6a6Z2e,size_20,color_FFFFFF,t_70,g_se,x_16)

3.2 发包

首先点击 “Composer ”,然后讲左边的请求拖到右边,再点击 execute 即可重新发出一个请求
![在这里插入图片描述]( https://img-blog.csdnimg.cn/24aafcf5620b44038738bd805f2ec4d6.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6I-c6bif5Y6a6Z2e,size_20,color_FFFFFF,t_70,g_se,x_16)

四、过滤 HTTP 请求

Fiddler Classic 开启捕捉后,会监听所有的请求,在大多数情况下,我们只需要监听部分请求,此时可以使用 Filters 功能去控制,设置好了后一定要点击 Actions,才能生效
在这里插入图片描述

4.1 指定显示

指定显示,是通过指定的域名白名单列表,捕捉列表只展示再白名单内的。首先点击 Filters ,勾选 Use Filters,再选择 show only the flowing hosts ,那后再输入指定的域名(192.168.88.146;www.baidu.com;*.bing.com)

![]( https://img-blog.csdnimg.cn/3fe58af866114e9296cacdd96045b0dc.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6I-c6bif5Y6a6Z2e,size_20,color_FFFFFF,t_70,g_se,x_16)

这里我们指定了 192.168.88.146;www.baidu.com;*.bing.com 三个域名,其中 *.bing.com 是模糊匹配。

4.2 排查显示

排查显示与指定显示恰恰相反,只需选择 hide the flowing hosts 即可,其他操作一指定显示一致。如下:
![在这里插入图片描述]( https://img-blog.csdnimg.cn/ee280c0b56bb4b6c914b9fbb5b39534d.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6I-c6bif5Y6a6Z2e,size_20,color_FFFFFF,t_70,g_se,x_16)

五、扩展

5.1 显示 IP

首先打开 fiddler 软件,按 ctr+r 或者 菜单 Rules–Customize Rules,找到 static function Main(),添加显示 IP 脚本。如下:

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

![在这里插入图片描述]( https://img-blog.csdnimg.cn/2c6c5d81763c4574aa3f219aa0528847.png?x-oss-process=image/watermark ,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c6bif5Y6a6Z2e,size_20,color_FFFFFF,t_70,g_se,x_16)

posted @ 2022-04-20 08:48  菜鸟厚非  阅读(2011)  评论(0)    收藏  举报