【手记】让Fiddler抓取入站请求,或者叫用Fiddler做反向代理
注意:本文不涉及HTTPS的场景
最近在弄公众号开发,除了主动去调公众号接口,还存在公众号后台要反过来调你的情形,攻受转换一线间。对于回调的情况,想要知道对方是怎样来请求的很有必要。此前经常用Fiddler抓取从本机出去的请求,非常好用,现在就想能不能反过来,让它抓取进来的请求。搜索一番,答案是肯定的,而且官网就有文档说这事:
http://docs.telerik.com/fiddler/configure-fiddler/tasks/usefiddlerasreverseproxy
本文实际上就是基于上述文档的说明。
从文档标题就能看出,实现反抓的原理本质上是把Fiddler配置成一个反向代理服务(Reverse Proxy)。关于反向代理是怎么一回事请读者自行了解,本文不赘述,简单理解就是让真实提供服务的网站躲在代理服务的背后,请求首先是到代理,再由代理转发给背后的网站,再把网站的响应返回出去。基于这个原理,作为代理的Fiddler当然就能拿到往返的数据。
文档中说了三种做法来配置反向代理,但其实后面两种并没有方式上的区别,只是一个端口谁来用的抉择问题~下面会讲到,所以其实只有两种方法:
一、注册表指定端口法(不推荐,有弊端)
1、在HKEY_CURRENT_USER\SOFTWARE\Microsoft\Fiddler2下新增DWORD型的键值ReverseProxyForPort,十进制方式输入要抓包的站点的端口,比如站点端口是80,弄完如图:

2、打开Fiddler,菜单Tool > Options,Connections页,确保Allow remote computers to connect选项勾选。如图:

上面那个8888是Fiddler的web服务端口。重启Fiddler,并保持捕获状态,此时从本机访问http://127.0.0.1:8888就能访问到端口为80那个站点,同时可以看到Fiddler有捕获到刚刚对80站点的请求。至于Allow...这个选项,是为了让别的电脑能访问本机的8888端口,不勾的话,外部无法通过【http://局网or外网IPor域名:8888】访问进来~当然,在此之前还要记得在网关把8888映射出去。
注意:这个方法有个局限,就是只能以http://127.0.0.1或localhost或局网IP或计算机名:8888发起请求,不能是公网IP和域名,否则会造成循环捕获,永远不会返回响应,只能关闭Fiddler才能消停。
二、脚本改写端口法
方法是通过菜单Rules > Customize Rules打开自定义脚本,在其中找到OnBeforeRequest方法,在里面添加如下逻辑:
if (oSession.port == ) {
oSession.port = ;
}
改好的脚本如图:

脚本所用的类库是.Net无疑,但语法像C#又不完全是,应该有名堂,还请路过朋友指教。注意上述逻辑并不是照搬官方文档,文档中的逻辑与域名攸关,我改了一下,只关注端口,总之目的就是把本来对8888端口的请求修改为对目标站点的请求,本例假定目标站点的端口是80。
同样确保方法一中Allow...选项勾选。重开Fiddler并保持捕获,此时就能无局限的访问http://*:8888了,同时可以看到捕获成果。
官方文档中列出的第3种做法,其实只是替换一下端口,上面的例子都是要求请求方把请求地址由原来的端口改为8888,但有些时候请求方是你叫不动的,比如微信公众号的网页授权回调url,就要求不能带端口号,你不可能填个http://xxx:8888上去,所以这就要让Fiddler来占用80端口,同时把网站的端口改成别的,最后仍然使用脚本法重写端口。
-文毕-
【手记】让Fiddler抓取入站请求,或者叫用Fiddler做反向代理的更多相关文章
- fiddler抓取手机https请求详解
前言: Fiddler是在 windows下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析,fiddler默认只能抓取http请求,需要配置和 ...
- Jmeter Web 性能测试入门 (二):Fiddler 抓取 http/https 请求
jmeter自带了拦截request的功能,并且也有对应的tool:badboy 可以用.但由于我经常做移动端的项目,个人还是习惯用fiddler来收集request. 官网下载并安装Fiddler ...
- fiddler抓取https的请求详解
本文主要说明了自己在设置fiddler抓取https过程中所遇到的问题及解决步骤,特别是fiddler在设置证书的环节遇到的各种奇葩问题,特此分享! 声明:本文为原创文章,转载请注明来源:https: ...
- fiddler 抓取手机app请求包
今天心血来潮,也不知道怎么了,想着抓抓我们公司手机app的包看看,研究研究我们公司的接口,哎,我们api文档,我自己抓包看看吧.工具选择fiddler,理由免费,用着也舒服,手机设备 iPhone6 ...
- Fiddler 抓取 app 网络请求数据
通过设置代理在同一个路由器下可以通过 Fiddler 实现抓取 app 的网络数据 步骤如下: 手机(Android ,iOS 都可以)和 PC 连到同一个路由器 对手机连接的 WIFI 设置代理,代 ...
- 使用Fiddler抓取IOS_APP的请求
首先在地址https://www.telerik.com/fiddler 下载我们需要的fiddler 在新窗口中写上一些信息然后点击[Download for Windows]进行下载: 安装成功后 ...
- Fiddler抓取手机Https请求
下载并安装Fiddler证书生成器 1.打开Fiddler—>Tools—>Telerik Fiddler Options... 2.Connections选项中勾选Allow remot ...
- 通过fiddler抓取IDEA的请求
2019独角兽企业重金招聘Python工程师标准>>> 因为fiddler默认是代理的8888端口,所以设置一下IDEA的请求使用本地的8888作为代理发出. 1."EDI ...
- 如何让Fiddler可以抓取https的请求
转自:https://jingyan.baidu.com/article/00a07f38bb4f4682d028dcd2.html Fiddler通过在本机开启了一个http的代理服务器来进行htt ...
随机推荐
- tcpdump 使用实践
tcpdump常用配置指导 参考:http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html 1. 指定端口抓包 -i 说明: ...
- Github Page--CSDN新人的第二选择
我也是个CSDN新人,使用的CSDN的初衷应该和众人类似,就是想总结下平时的学习成果,或者一些想法. CSDN好的地方: 书写界面简洁,支持markdown语法 人还算多,也比较年轻 相对较活跃 内容 ...
- hadoop之 hadoop 2.2.X 弃用的配置属性名称及其替换名称对照表
Deprecated Properties 弃用属性 The following table lists the configuration property names that are depr ...
- CSS之 relative 特性
1. 自身特性: 如left,right,top,bottom定位都是相对于自身位置定位. 当left与right同时存在,lfet生效. 当top与bottom同时存在,top生效. 无侵入,保留原 ...
- win10 UWP 单元测试
我们在写代码的时候不能保证我们写出来的代码是正确的,所以我们经常要单元测试. 单元测试和重构都是在做完一个小小函数一般就要进行一次,越早做就越好,可以比较早发现问题,这时我们还记得我们写的内容,不过比 ...
- JAVA提高六:泛型
在面向对象编程语言中,多态算是一种泛化机制.例如,你可以将方法的参数类型设置为基类,那么该方法就可以接受从这个基类中导出的任何类作为参数,这样的方法将会更具有通用性.此外,如果将方法参数声明为接口,将 ...
- 【转】认识物理I/O构件- 主机I/O总线
在数据离开系统内存总线后,它通常传输到另一条总线,即主机I/O总线.在今天的产品中,最常见的主机I/O总线是PCI总线,但也存在着几种其他的总线,如S -总线,EIS A总线及VME总线.主机I/O总 ...
- SPARK 学习笔记一
1.Spark基于内存进行运算 2.Spark核心是SprintContext,是程序的入口 3.RDDs是提供抽象的数据集,通过RDDS可以方便对分布在各个节点的数据进行计算,而且忽略细节 4.RD ...
- Zookeeper 笔记-watch
ZooKeeper对Watch提供了什么保障 对于watch,ZooKeeper提供了这些保障: Watch与其他事件.其他watch以及异步回复都是有序的. ZooKeeper客户端库保证所有事件都 ...
- 无需安装SqlServer打开并管理SqlServer数据库的方法
本地安装的数据库是SqlServer2008R2的 在附加一个数据库文件时出现了以下错误 错误的原因就是附加的数据库版本太高,而本地数据库版本太低导致的 通过各种方式才查询到附加的数据库版本是SqlS ...