【手记】让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 == 8888) {
    oSession.port = 80;
}

改好的脚本如图:

脚本所用的类库是.Net无疑,但语法像C#又不完全是,应该有名堂,还请路过朋友指教。注意上述逻辑并不是照搬官方文档,文档中的逻辑与域名攸关,我改了一下,只关注端口,总之目的就是把本来对8888端口的请求修改为对目标站点的请求,本例假定目标站点的端口是80。

同样确保方法一中Allow...选项勾选。重开Fiddler并保持捕获,此时就能无局限的访问http://*:8888了,同时可以看到捕获成果。

官方文档中列出的第3种做法,其实只是替换一下端口,上面的例子都是要求请求方把请求地址由原来的端口改为8888,但有些时候请求方是你叫不动的,比如微信公众号的网页授权回调url,就要求不能带端口号,你不可能填个http://xxx:8888上去,所以这就要让Fiddler来占用80端口,同时把网站的端口改成别的,最后仍然使用脚本法重写端口。

-文毕-

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏伪君子的梦呓

安装和配置 Eclipse

之前安装了 Java 并且配置好了 Java 的环境变量,现在来搞一下开发环境,下面就是下载安装和配置 Eclipse 的教程。

56210
来自专栏IMWeb前端团队

浏览器进程?线程?傻傻分不清楚!

本文作者:IMWeb coverguo 原文出处:IMWeb社区 未经同意,禁止转载 在生活中,浏览器和我们的工作和生活息息相关。做为前端开发,我们...

29590
来自专栏老马寒门IT

05-移动端开发教程-CSS3兼容处理

CSS3的标准并没有全部定稿,目前CSS3的标准分成了不同的模块,具体的标准由各个模块推动标准和定稿,标准制定的过程中,浏览器也在不断的发新的版本来兼容新的标准...

23960
来自专栏Python中文社区

优雅的在终端中编写Python

專 欄 ❈PytLab,Python 中文社区专栏作者。主要从事科学计算与高性能计算领域的应用,主要语言为Python,C,C++。熟悉数值算法(最优化方法,蒙...

34170
来自专栏君赏技术博客

第一次和你见面,我就深深的爱上你-Xcode Bot

最近研究起了 APP 的自动化测试,发现了 Xcode Bot自动化打包测试发布的功能,就开始研究起来。

19710
来自专栏大前端开发

微信小程序从子页面退回父页面时的数据传递

我们知道,在微信小程序中,从一个页面转到另一个页面,一般情况下可以通过navigate或redirect时候的url来携带参数,然后在目标页面的onLoad函数...

13210
来自专栏张戈的专栏

SecureCRT全局发送相同命令,快速抓取服务器信息的方法

昨天,在新公司接到了第一个任务:统计所有服务器的几个信息。200 多台呢!一个台一台的去执行命令也太苦逼了吧?于是度了下,找到了这个方法,感觉很不错!现在来分享...

36870
来自专栏DeveWork

WordPress免插件仅代码实现文章归档(模板页面)I

许多博友喜欢为自己的博客建立一个文章归档页面。WordPress 可以用插件来实现,但我们一贯遵守可以不用插件则不用的准则,现在Jeff 就为大家带来免插件仅代...

22980
来自专栏Windows Community

Windows 8.1 应用再出发 - 创建我的第一个应用

转眼间Windows 8.1已经发布了四个多月,之前因为开发需要对Windows 8.1新特性进行过零散的学习和使用,一直没有静下心来系统的学习过。近日部门有几...

368120
来自专栏破晓之歌

python-web.py开发入门(推荐) 原

输入运行文件命令。(我这里pycharm2018.2不晓得为嘛terminal调整不了字间距,而且文件路径的/都变了,文字颜色也不晓得哪里能改,其他地方的显示都...

45120

扫码关注云+社区

领取腾讯云代金券