如何监视所有传入的http请求?
我需要监视我的应用程序从传入的HTTP POST
和GET
请求来自外部,有时在机器内部。
这可能吗?
一直在使用小提琴手,但这只会做传出没有传入(从机器外)或我configuration不正确?
这是为了我的networking应用程序,这意味着从外部服务器接收POST
。
你需要做的是configurationFiddler作为一个“反向代理”
有两种不同的方式可以在Fiddler网站上做到这一点。 这里是一个步骤的副本:
步骤#0
在以下任一选项都可以工作之前,您必须启用其他电脑才能连接到Fiddler。 为此,请单击工具> Fiddler选项>连接,然后勾选“允许远程计算机连接”checkbox。 然后closures提琴手。
选项#1:将Fiddlerconfiguration为反向代理
可以configuration提琴手,以便发送到http://127.0.0.1:8888
任何stream量自动发送到同一台计算机上的其他端口。 要设置此configuration:
- 开始REGEDIT
- 在HKCU \ SOFTWARE \ Microsoft \ Fiddler2中创build一个名为ReverseProxyForPort的新DWORD。
- 将DWORD设置为您希望将入站stream量重新路由到的本地端口(通常是标准HTTP服务器的端口80)
- 重新启动提琴手
- 浏览您的浏览器到
http://127.0.0.1:8888
选项#2:写一个FiddlerScript规则
或者,你可以写一个规则来做同样的事情。
假设您在名为WEBSERVER的计算机的端口80上运行网站。 您正在Windows智能手机设备上使用Internet Explorer Mobile Edition连接到网站,但无法configurationnetworking代理。 您想要捕获来自手机的stream量和服务器的响应。
- 在WEBSERVER机器上启动Fiddler,在默认的8888端口上运行。
- 点击工具| 提琴手选项,并确保“允许远程客户端连接”checkbox被选中。 如果需要重新启动。
- select规则| 自定义规则。
- 在OnBeforeRequest处理程序中,添加一行新的代码:
如果(oSession.host.toLowerCase()==“webserver:8888”)oSession.host =“webserver:80”; - 在智能手机上,导航到
http://webserver:8888
智能手机的请求将显示在提琴手。 请求从端口8888转发到运行Web服务器的端口80。 这些回应是通过Fiddler发回到智能手机,而智能手机并不知道内容原来是从80端口发出的。
我将安装Microsoftnetworking监视器,configuration工具,以便它只会看到HTTP数据包(过滤端口),并开始捕获数据包。
你可以在这里下载
伙计们发现了一个完美的方式来监视本地机器到我的机器的请求之间stream动的所有stream量:
- 安装Wireshark
-
当您需要捕获从本地主机stream向本地主机的stream量时,您将很难使用wireshark,因为这只会监视网卡上的传入stream量。 这样做的方法是添加一个路由到窗口,将强制通过网关的所有stream量,这是在networking接口捕获。
为此,添加一个路由与
<ip address>
<gateway>
:cmd> route add 192.168.20.30 192.168.20.1
-
然后在wireshark上运行捕获(请确保select有字节stream经的接口)然后过滤。
新增加的路线将以黑色呈现。 (因为它们是本地地址)
将Fiddlerconfiguration为Windows上的“反向代理”
(对于Mac,请参阅下面的Partizano评论中的链接)
我知道已经有一个答案提出了这个问题,但是我想提供Telerik 应该提供的解释和说明,也包括一些“陷阱”,所以这里是:
将Fiddlerconfiguration为“反向代理”意味着什么?
- 默认情况下,Fiddler只监视您运行Fiddler的机器发出的请求
- 要监视传入的请求,您需要将Fiddlerconfiguration为“反向代理”
- 这意味着您需要将Fiddler设置为“代理”,以拦截传入的http请求,这些请求将发送到要侦听传入请求的计算机上的特定端口(8888)。 提琴手然后将这些请求转发到同一台计算机上的Web服务器,通过发送到HTTP请求的通常端口(通常为端口80或443的HTTPS)。 这实际上非常快速和容易!
- 用Fiddler设置的标准方法是让Fiddler拦截所有发送到Port'8888'的请求(因为这通常不会被其他任何东西使用,尽pipe你可以轻松地使用另一个端口)
- 然后,您需要使用registry编辑器让Fiddler转发Fiddler在端口8888接收到的任何http请求,以便将它们转发到标准http端口(端口80,端口443用于https请求,或另一个自定义端口你的web服务器设置为监听)
注意:为此,任何要拦截的请求都必须发送到端口8888
你可以通过在你的主机名上添加8888来实现,比如像这样的MVC路由:
http:// myhostname :8888 / controller / action
演练
确保Fiddler可以接受端口8888上的远程http请求:
以pipe理员身份运行Fiddler转到工具> Fiddler选项>连接,并确保选中“允许远程计算机连接”,并将“Fiddler侦听端口”设置为8888:
configurationFiddler将端口8888上收到的请求转发到端口80
- closures提琴手
- 开始REGEDIT
- 在HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Fiddler2中创build一个名为ReverseProxyForPort的新DWORD。
- 现在将DWORD值设置为您希望将入站stream量重新路由到的本地端口(通常是标准HTTP服务器的端口80)
- 为此,请右键单击您创build的DWORD,然后select“修改”。 确保“基本”设置为“十进制”,并input“80”(或另一个端口)作为“数值数据”:
确保防火墙上的端口8888已打开
- 您必须确保端口8888对外部请求开放(如果您的服务器受到防火墙保护,则不会默认)
而已! Fiddler现在应该被设置为一个反向代理,拦截来自8888端口的所有请求(这样你就可以在Fiddler中查看它们),然后它将把它们转发到你的web服务器,以便真正处理。
testing一个请求
- 重新启动提琴手
- 要testingFiddler拦截外部请求,请在您将Fiddler设置为反向代理的同一台计算机上打开浏览器。 浏览您的浏览器到http://127.0.0.1:8888
- 这个testing提出了一个基本的请求到端口8888
- 你应该看到提琴手拦截的请求
- 现在,您可以testing另一台计算机的请求,例如,通过在另一台计算机上发出请求(其中'remoteHostname'是您将Fiddler设置为反向代理的计算机上的主机名'):
http:// remoteHostname :8888 / controller / action
- 或者,您可以使用另一个远程机器上的Fiddler实例,使用类似于上面的URL来编写请求。 这将允许您进行GET或POST请求。
重要提示:查看完请求后,返回工具>提琴手选项>连接,并删除“允许远程计算机连接”选项,否则第三方将能够通过您的服务器反弹stream量
Microsoft消息分析器是Microsoftnetworking监视器3.4的继任者
如果您的http传入stream量正在以58000端口连接到您的Web服务器,请以pipe理员模式启动Analyzer,然后单击新build会话:
使用filter:tcp.Port = 58000和HTTP
跟踪scheme:“本地networking接口(Win 8及更早版本)”或“本地networking接口(Win 8.1及更高版本)”取决于您的操作系统
parsing级别:完整
您可以考虑将Fiddler作为反向代理运行,您应该能够让客户端连接到Fiddler的地址,然后将来自Fiddler的请求转发给您的应用程序。
这将需要一些端口操作或客户端configuration,取决于根据您的要求更容易。
如何做到这一点的细节在这里: http : //www.fiddler2.com/Fiddler/Help/ReverseProxy.asp
使用TcpView来查看端口侦听和连接。 这不会给你的要求。
为了看到请求,你需要反向的代理,我不知道任何这样的工具。
使用跟踪给你的部分请求(请求的第一个1KB)。
使用Wireshark
我没有试过这个: http : //wiki.wireshark.org/CaptureSetup/Loopback
如果可行,那么你可以过滤http
/ http contains GET
/ http contains POST
stream量。
您可能需要运行两个Wireshark实例,一个捕获本地,一个捕获远程。 我不确定。
您也可以尝试使用HTTPdebugging器 ,它具有显示传入HTTP请求的内置function,并且不需要对系统configuration进行任何更改。