it-swarm.com.de

Wie überwache ich alle eingehenden http-Anfragen?

Ich muss meine Anwendung von eingehenden http POST- und GET-Anforderungen überwachen, die von außerhalb und manchmal innerhalb der Maschine stammen. 

Ist das möglich?

Ich habe Fiddler verwendet, aber das geht nur abgehend nicht (von außerhalb der Maschine) oder habe ich es falsch konfiguriert?

Dies ist für meine Web-App, die eine POST von einem externen Server erhalten soll.

65
Exitos

Die Jungs haben den perfekten Weg gefunden, um ALLEN Verkehr zu überwachen, der lokal zwischen Anfragen von meiner Maschine zu meiner Maschine fließt:

  1. Installiere Wireshark
  2. Wenn Sie Datenverkehr erfassen müssen, der von einem localhost zu einem localhost fließt, müssen Sie nur Wireshark verwenden, da dieser nur den eingehenden Datenverkehr auf der Netzwerkkarte überwacht. Dazu können Sie den Fenstern eine Route hinzufügen, die den gesamten Datenverkehr durch ein Gateway erzwingt und auf der Netzwerkschnittstelle erfasst wird.

    Fügen Sie dazu eine Route mit <ip address><gateway> hinzu:

    cmd> route add 192.168.20.30 192.168.20.1
    
  3. Führen Sie dann ein Capture auf Wireshark aus (stellen Sie sicher, dass Sie die Schnittstelle auswählen, durch die Bytes fließen). Filtern Sie anschließend.

Die neu hinzugefügten Routen werden in Schwarz angezeigt. (da es sich um lokale Adressen handelt)

9
Exitos

Was Sie tun müssen, ist Fiddler als Reverse-Proxy konfigurieren

Es gibt zwei Möglichkeiten, wie Sie dies auf der Website von Fiddler tun können. Hier ist eine Kopie der Schritte:


Schritt # 0

Bevor eine der folgenden Optionen funktioniert, müssen Sie anderen Computern die Verbindung zu Fiddler ermöglichen. Klicken Sie dazu auf Tools> Fiddler-Optionen> Verbindungen und aktivieren Sie das Kontrollkästchen "Remote-Computer dürfen keine Verbindung herstellen". Schließen Sie dann den Fiddler.

Option # 1: Fiddler als Reverse-Proxy konfigurieren

Fiddler kann so konfiguriert werden, dass der an http://127.0.0.1:8888 gesendete Datenverkehr automatisch an einen anderen Port auf demselben Computer gesendet wird. So legen Sie diese Konfiguration fest:

  1. Starten Sie REGEDIT
  2. Erstellen Sie ein neues DWORD mit dem Namen ReverseProxyForPort in HKCU\SOFTWARE\Microsoft\Fiddler2.
  3. Legen Sie DWORD auf den lokalen Port fest, zu dem der eingehende Datenverkehr umgeleitet werden soll (im Allgemeinen Port 80 für einen Standard-HTTP-Server).
  4. Fiddler neu starten
  5. Navigieren Sie in Ihrem Browser zu http://127.0.0.1:8888.

Option # 2: Schreiben einer FiddlerScript-Regel

Alternativ können Sie eine Regel schreiben, die dasselbe tut. 

Angenommen, Sie betreiben eine Website an Port 80 einer Maschine mit dem Namen WEBSERVER. Sie stellen mit der Internet Explorer Mobile Edition auf einem Windows SmartPhone-Gerät eine Verbindung zur Website her, für die Sie den Web-Proxy nicht konfigurieren können. Sie möchten den Datenverkehr vom Telefon und die Antwort des Servers erfassen.

  1. Starten Sie Fiddler auf dem WEBSERVER-Computer, der auf dem Standardport 8888 ausgeführt wird.
  2. Klicken Sie auf Extras | Fiddler-Optionen, und stellen Sie sicher, dass das Kontrollkästchen "Remote-Clients die Verbindung zulassen" aktiviert ist. Starten Sie bei Bedarf neu.
  3. Wählen Sie Regeln | Regeln anpassen.
  4. Fügen Sie im OnBeforeRequest-Handler eine neue Codezeile hinzu:
    if (oSession.Host.toLowerCase () == "Webserver: 8888") oSession.Host = "Webserver: 80";
  5. Navigieren Sie auf dem SmartPhone zu http://webserver:8888

Anfragen vom SmartPhone werden in Fiddler angezeigt. Die Anforderungen werden von Port 8888 an Port 80 weitergeleitet, auf dem der Webserver ausgeführt wird. Die Antworten werden über Fiddler an das SmartPhone zurückgesendet, von dem nicht bekannt ist, dass der Inhalt ursprünglich von Port 80 stammt.

60
Saul Dolgin

Ich würde Microsoft Network Monitor installieren, das Tool so konfigurieren, dass nur HTTP-Pakete angezeigt werden (den Port filtern) und mit dem Erfassen der Pakete beginnen.

Sie können es hier herunterladen hier

32
YudhiWidyatama

Konfigurieren Sie Fiddler als "Reverse Proxy" unter Windows

(Für Mac siehe den Link in Partizanos Kommentar unten)

Ich weiß, dass es bereits eine Antwort gibt, die dies nahelegt, aber ich möchte die Erklärung und Anweisungen dafür geben, die Telerik hätte gegeben hat, und auch einige der 'Fallstricke' behandeln.

Was bedeutet es, Fiddler als "Reverse Proxy" zu konfigurieren?

  • Standardmäßig überwacht Fiddler nur ausgehende Anforderungen von dem Computer, auf dem Sie Fiddler ausführen
  • Um incoming Anfragen zu überwachen, müssen Sie Fiddler so konfigurieren, dass er als 'Reverse Proxy' arbeitet
  • Dies bedeutet, dass Sie Fiddler als "Proxy" einrichten müssen, der eingehende http-Anforderungen abfängt, die an einen bestimmten Port (8888) auf dem Computer gesendet werden, auf dem Sie die eingehenden Anforderungen abhören möchten. Fiddler leitet diese Anforderungen dann an den Webserver auf demselben Computer weiter, indem er sie an den üblichen Port für http-Anforderungen sendet (normalerweise Port 80 oder 443 für https). Es ist eigentlich sehr schnell und einfach zu tun!
  • Die Standardmethode, um dies mit Fiddler einzurichten, besteht darin, Fiddler zu veranlassen, alle an Port '8888' gesendeten Anforderungen abzufangen (da dies normalerweise von keinem anderen Port verwendet wird, obwohl Sie genauso einfach einen anderen Port verwenden könnten).
  • Anschließend müssen Sie den Registrierungseditor verwenden, damit Fiddler alle von Fiddler über Port 8888 empfangenen http-Anforderungen weiterleitet, damit diese an den Standard-http-Port (Port 80, Port 443 für eine https-Anforderung oder einen anderen benutzerdefinierten Port, der diese Anforderungen erfüllt) weitergeleitet werden Ihr Webserver ist auf Abhören eingestellt)

HINWEIS: Damit dies funktioniert, muss jede Anforderung, die Sie abfangen möchten an Port 8888 gesendet werden

Fügen Sie dazu Folgendes an: 8888 an Ihren Hostnamen, z. B. für eine MVC-Route:

http: // myhostname: 8888/controller/action


Komplettlösung

Stellen Sie sicher, dass Fiddler entfernte http-Anfragen auf Port 8888 akzeptieren kann:

Fiddler als Administrator ausführen Gehen Sie zu Extras> Fiddler-Optionen> Verbindungen und stellen Sie sicher, dass "Remotecomputern erlauben, eine Verbindung herzustellen" aktiviert ist und "Fiddler lauscht am Port" 'ist auf 8888 gesetzt:

enter image description here

Konfigurieren Sie Fiddler so, dass auf Port 8888 empfangene Anforderungen an Port 80 weitergeleitet werden

  • Schließen Sie Fiddler
  • Starten Sie REGEDIT
  • Erstellen Sie ein neues DWORD mit dem Namen ReverseProxyForPort in HKEY_CURRENT_USER\SOFTWARE\Microsoft\Fiddler2.
    • Stellen Sie nun den DWORD-Wert auf den lokalen Port ein, zu dem Sie eingehenden Datenverkehr umleiten möchten (in der Regel Port 80 für einen Standard-HTTP-Server).
  • Klicken Sie dazu mit der rechten Maustaste auf das von Ihnen erstellte DWORD und wählen Sie "Ändern". Stellen Sie sicher, dass 'Basis' auf 'Dezimal' eingestellt ist, und geben Sie '80' (oder einen anderen Port) als 'Wertedaten' ein:

Stellen Sie sicher, dass Port 8888 in der Firewall geöffnet ist

  • Sie müssen sicherstellen, dass Port 8888 für externe Anforderungen geöffnet ist (dies ist nicht standardmäßig der Fall, wenn Ihr Server durch eine Firewall geschützt ist).

Das war's! Fiddler sollte jetzt als Reverse-Proxy eingerichtet sein, um alle Anforderungen von Port 8888 abzufangen (damit Sie sie in Fiddler anzeigen können), und sie dann an Ihren Webserver weiterleiten, damit sie tatsächlich verarbeitet werden können.

Testen Sie eine Anfrage

  • Starten Sie Fiddler neu
  • Um zu testen, ob Fiddler externe Anfragen abfängt, öffnen Sie einen Browser auf demselben Computer, auf dem Sie Fiddler als Reverse-Proxy eingerichtet haben. Navigieren Sie mit Ihrem Browser zu http://127.0.0.1:8888
  • Bei diesem Test wird eine Basisanforderung an Port 8888 gesendet
  • Sie sollten die Anfrage von Fiddler abgefangen sehen
  • Jetzt können Sie eine Anfrage von einem anderen Computer testen, indem Sie beispielsweise eine Anfrage von einem Browser auf einem anderen Computer wie diesem senden (wobei 'remoteHostname' ein Hostname auf dem Computer ist, auf dem Sie Fiddler als Reverse-Proxy eingerichtet haben):

http: // remoteHostname: 8888/controller/action

  • Alternativ können Sie eine Anfrage erstellen, indem Sie eine andere Instanz von Fiddler auf einem remote Computer verwenden und eine URL verwenden, die der obigen ähnlich ist. Auf diese Weise können Sie entweder eine GET- oder eine POST -Anforderung stellen.

WICHTIG: Wenn Sie Ihre Anfrage (n) gelesen haben, kehren Sie zu Tools> Fiddler-Optionen> Verbindungen zurück und entfernen Sie die Option "Remotecomputern erlauben, eine Verbindung herzustellen". Anderenfalls können Dritte die Verbindung herstellen um Datenverkehr über Ihren Server zu leiten

11
Chris Halcrow

Microsoft Message Analyzer ist der Nachfolger von Microsoft Network Monitor 3.4

Wenn der eingehende HTTP-Datenverkehr über den Port 58000 an Ihren Webserver gesendet wird, starten Sie den Analyzer im Administratormodus und klicken Sie auf "Neue Sitzung".

verwenden Sie den Filter: tcp.Port = 58000 und HTTP

trace-Szenario: "Lokale Netzwerkschnittstellen (Win 8 und früher)" oder "Lokale Netzwerkschnittstellen (Win 8.1 und höher)" hängt von Ihrem Betriebssystem ab

Parsing-Ebene: Voll

5
Y P

Sie können erwägen, Fiddler als Reverse-Proxy auszuführen. Sie sollten in der Lage sein, dass Clients eine Verbindung zu Fiddlers Adresse herstellen und dann die Anfragen von Fiddler an Ihre Anwendung weiterleiten. 

Dies erfordert entweder ein wenig Portmanipulation oder eine Client-Konfiguration, je nachdem, was je nach Ihren Anforderungen einfacher ist.

Details dazu finden Sie hier: http://www.fiddler2.com/Fiddler/Help/ReverseProxy.asp

3
AndyElastacloud

Wireshark benutzen ..

Ich habe dies nicht versucht: http://wiki.wireshark.org/CaptureSetup/Loopback

Wenn dies funktioniert, können Sie nach http/http contains GET/http contains POST traffic filtern.

Möglicherweise müssen Sie zwei Wireshark-Instanzen ausführen, eine lokale Erfassung und eine entfernte Erfassung. Ich bin mir nicht sicher.

2
thirtydot

Verwenden Sie TcpView , um zuhörende Ports und Verbindungen anzuzeigen. Dadurch erhalten Sie die Anforderungen zwar not.

Um Anfragen zu sehen, benötigen Sie die Rücknahme eines Vertreters, der mir solche Tools nicht kennt.

Verwenden Sie Tracing , um einen Teil der Anforderungen anzugeben (erste 1 KB der Anforderung).

2
Aliostad

Sie können auch den HTTP-Debugger versuchen. Er verfügt über die integrierte Fähigkeit, eingehende HTTP-Anforderungen anzuzeigen, und erfordert keine Änderungen an der Systemkonfiguration.

 HTTP Debugger

0
Khachatur