如何监控所有传入的http请求?

Exi*_*tos 73 asp.net http fiddler wireshark

我需要从传入的http POSTGET来自外部,有时在机器内部的请求监视我的应用程序.

这可能吗?

一直在使用提琴手,但这只是传出而不是传入(来自机器外部)或我是否错误配置?

这是我的网络应用程序,旨在POST从外部服务器接收.

Sau*_*gin 64

你需要做的是配置Fiddler作为"反向代理"

在Fiddler的网站上有关于两种不同方法的说明.以下是步骤的副本:


第0步

在使用以下任一选项之前,必须启用其他计算机才能连接到Fiddler.为此,请单击工具>提琴选项>连接,然后勾选"允许远程计算机连接"复选框.然后关闭提琴手.

选项#1:将Fiddler配置为反向代理

可以配置Fiddler,以便发送到的任何流量http://127.0.0.1:8888自动发送到同一台计算机上的其他端口.要设置此配置:

  1. 启动REGEDIT
  2. 在HKCU\SOFTWARE\Microsoft\Fiddler2中创建一个名为ReverseProxyForPort的新DWORD.
  3. 将DWORD设置为您要将入站流量重新路由到的本地端口(通常为标准HTTP服务器的端口80)
  4. 重启Fiddler
  5. 浏览您的浏览器 http://127.0.0.1:8888

选项#2:编写FiddlerScript规则

或者,您可以编写执行相同操作的规则.

假设您在名为WEBSERVER的计算机的端口80上运行网站.您在Windows SmartPhone设备上使用Internet Explorer Mobile Edition连接到该网站,您无法为其配置Web代理.您想要捕获来自手机的流量和服务器的响应.

  1. 在WEBSERVER计算机上启动Fiddler,在默认端口8888上运行.
  2. 单击工具| Fiddler选项,并确保选中"允许远程客户端连接"复选框.如果需要重启.
  3. 选择规则| 自定义规则.
  4. 在OnBeforeRequest处理程序中,添加一行新代码:
    if(oSession.host.toLowerCase()=="webserver:8888")oSession.host ="webserver:80";
  5. 在SmartPhone上,导航至 http://webserver:8888

来自SmartPhone的请求将出现在Fiddler中.请求从端口8888转发到运行Web服务器的端口80.响应通过Fiddler发送回SmartPhone,SmartPhone不知道内容最初来自端口80.

  • 为什么这么难?当然有一个程序可以查看我的所有网络接口,只读取http数据包.似乎无法通过wireshark或网络监视器来做到这一点,...... (8认同)

Yud*_*ama 32

我将安装Microsoft网络监视器,配置该工具,以便它只能看到HTTP数据包(过滤端口)并开始捕获数据包.

你可以在这里下载


Chr*_*row 13

在Windows上将Fiddler配置为"反向代理"

(对于Mac,请参阅以下Partizano评论中的链接)

我知道已经有一个答案暗示了这一点,但是我想提供Telerik 应该提供的解释和说明,并且还包括一些'陷阱',所以这里是:

将Fiddler配置为"反向代理"意味着什么?

  • 默认情况下,Fiddler仅监视来自运行Fiddler的计算机的传出请求
  • 要监视传入请求,您需要将Fiddler配置为"反向代理"
  • 这意味着您需要将Fiddler设置为"代理",以拦截发送到您要侦听传入请求的计算机上的特定端口(8888)的传入http请求.然后,Fiddler会将这些请求转发到同一台计算机上的Web服务器,方法是将它们发送到通常的http请求端口(通常是端口80或443用于https).它实际上非常快速和容易!
  • 使用Fiddler进行设置的标准方法是让Fiddler拦截发送到端口'8888'的所有请求(因为这通常不会被其他任何东西使用,尽管你可以轻松使用另一个端口)
  • 然后,您需要使用注册表编辑器让Fiddler转发Fiddler在端口8888上收到的任何http请求,以便它们被转发到标准http端口(端口80,端口443用于https请求或其他自定义端口,您的Web服务器设置为侦听)

注意:为此,要拦截的任何请求必须发送到端口8888

您可以通过将8888附加到您的主机名来执行此操作,例如对于MVC路由,例如:

http:// myhostname:8888/controller/action


演练

确保Fiddler可以接受端口8888上的远程http请求:

以管理员身份运行Fiddler转到工具> Fiddler选项>连接,并确保选中"允许远程计算机连接",并且"Fiddler侦听端口"设置为8888:

在此输入图像描述

配置Fiddler将端口8888上收到的请求转发到端口80

  • 关闭提琴手
  • 启动REGEDIT
  • 在HKEY_CURRENT_USER\SOFTWARE\Microsoft\Fiddler2中创建一个名为ReverseProxyForPort的新DWORD.
    • 现在将DWORD值设置为您要将入站流量重新路由到的本地端口(通常是标准HTTP服务器的端口80)
  • 为此,请右键单击您创建的DWORD,然后选择"修改".确保'Base'设置为'Decimal'并输入'80'(或其他端口)作为'Value data':

确保防火墙上已打开端口8888

  • 您必须确保端口8888对外部请求是开放的(如果您的服务器受防火墙保护,则默认情况下不会)

而已!现在应该将Fiddler设置为反向代理,以拦截来自端口8888的所有请求(以便您可以在Fiddler中查看它们),然后它将它们转发到您的Web服务器以实际处理.

测试请求

  • 重启Fiddler
  • 要测试Fiddler是否正在拦截外部请求,请在您将Fiddler设置为反向代理的同一台计算机上打开浏览器.浏览器浏览器到http://127.0.0.1:8888
  • 此测试向端口8888发出基本请求
  • 您应该看到Fiddler截获的请求
  • 现在,您可以测试来自其他计算机的请求,例如通过另一台计算机上的浏览器发出请求(其中'remoteHostname'是您将Fiddler设置为反向代理的计算机上的主机名):

http:// remoteHostname:8888/controller/action

  • 或者,您可以使用类似于上面的URL 在远程计算机上使用另一个Fiddler实例来撰写请求.这将允许您发出GET或POST请求.

重要提示:完成查看请求后,请返回工具>提琴选项>连接并删除"允许远程计算机连接"选项,否则第三方将能够通过您的服务器退回流量


Exi*_*tos 9

Guys找到了一种完美的方法来监控从我的机器到我的机器的请求之间本地流动的所有流量:

  1. 安装Wireshark
  2. 当您需要捕获从本地主机流向本地主机的流量时,您将很难使用wireshark,因为这只会监控网卡上的传入流量.执行此操作的方法是向Windows添加路由,这将强制所有流量通过网关,并在网络接口上捕获.

    为此,请添加以下路线:<ip address> <gateway>

    cmd> route add 192.168.20.30 192.168.20.1
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后在wireshark上运行捕获(确保选择具有流过它的字节的接口)然后过滤.

新增的路线将以黑色显示.(因为它们是本地地址)


Y P*_*Y P 6

Microsoft Message Analyzer是Microsoft Network Monitor 3.4的后续版本

如果您的http传入流量将以58000端口进入您的Web服务器,请以管理员模式启动Analyzer并单击新会话:

使用filter:tcp.Port = 58000和HTTP

跟踪方案:"本地网络接口(Win 8及更早版本)"或"本地网络接口(Win 8.1及更高版本)"取决于您的操作系统

解析级别:完整