Wie überwache ich alle eingehenden http-Anfragen?


75

Ich muss meine Anwendung von eingehenden http POSTund GETAnfragen von außerhalb und manchmal innerhalb des Computers überwachen .

Ist das möglich?

Ich habe Fiddler verwendet, aber dies führt nur dazu, dass der Ausgang nicht eingeht (von außerhalb des Computers), oder habe ich ihn falsch konfiguriert?

Dies ist für meine Web-App, die eine POSTvon einem externen Server empfangen soll .

Antworten:


66

Sie müssen Fiddler so konfigurieren, dass es als "Reverse Proxy" fungiert.

Auf der Fiddler-Website finden Sie Anweisungen zu zwei verschiedenen Möglichkeiten. 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 Extras> Geigeroptionen> Verbindungen und aktivieren Sie das Kontrollkästchen "Remotecomputern die Verbindung erlauben". Dann schließe Fiddler.

Option 1: Konfigurieren Sie Fiddler als Reverse-Proxy

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

  1. Starten Sie REGEDIT
  2. Erstellen Sie ein neues DWORD mit dem Namen ReverseProxyForPort in HKCU \ SOFTWARE \ Microsoft \ Fiddler2.
  3. Stellen Sie das DWORD auf den lokalen Port ein, an den Sie eingehenden Datenverkehr umleiten möchten (im Allgemeinen Port 80 für einen Standard-HTTP-Server).
  4. Starten Sie Fiddler neu
  5. Navigieren Sie mit Ihrem Browser zu http://127.0.0.1:8888

Option 2: Schreiben Sie eine FiddlerScript-Regel

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

Angenommen, Sie betreiben eine Website auf Port 80 eines Computers namens WEBSERVER. Sie stellen mit Internet Explorer Mobile Edition auf einem Windows SmartPhone-Gerät, für das Sie den Webproxy nicht konfigurieren können, eine Verbindung zur Website her. Sie möchten den Datenverkehr vom Telefon und die Antwort des Servers erfassen.

  1. Starten Sie Fiddler auf dem WEBSERVER-Computer und führen Sie ihn auf dem Standardport 8888 aus.
  2. Klicken Sie auf Extras | Fiddler-Optionen und stellen Sie sicher, dass das Kontrollkästchen "Remote-Clients die Verbindung zulassen" aktiviert ist. Bei Bedarf neu starten.
  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, das keine Ahnung hat, dass der Inhalt ursprünglich von Port 80 stammt.


8
Warum ist es so schwierig? Sicher gibt es ein Programm, das alle meine Netzwerkschnittstellen betrachtet und nur http-Pakete liest. Ich kann nicht scheinen, Wireshark oder Netzwerkmonitor dazu zu bringen, ...
Exitos

Wireshark ist SEHR mächtig und ich persönlich habe erst in den letzten Monaten gelernt, damit zu arbeiten. Ich wäre überrascht herauszufinden, dass es so etwas auch nicht kann. Es geht wahrscheinlich nur darum, die richtige Filterung auf der richtigen Schnittstelle einzurichten. Ich werde eine weitere Antwort zurückschicken, wenn ich herausfinden kann, wie es mit Wireshark geht.
Saul Dolgin

Hallo Saul, hast du meine Antwort unten gelesen? Wenn Sie eine Route innerhalb von Windows hinzufügen, wird der gesamte Verkehr aus- und wieder eingezogen.
Exitos

Ich habe Ihre Antwort gelesen und es ist sinnvoll, den lokalen Host-Verkehr mit Wireshark zu erfassen. Ich denke, ich sollte darauf hinweisen, dass Fiddler auch in der Lage ist, "localhost" -Verkehr zu erfassen ... aber es gibt einen Haken. Sie müssen Ihre Anfragen an den Webserver unter Verwendung des Hostnamens anstelle der Loopback-Adresse "localhost" oder 127.0.0.1 richten.
Saul Dolgin

@SaulDolgin Wie konfigurieren wir Fiddler, wenn der Webdienst auf Port 11000 ausgeführt wird? wie mywebserver: 11000 / mywebservice.asmx
FMFF

32

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

Sie können es hier herunterladen


1
Wow, das ist ein großartiges Werkzeug! Ich habe versucht, Fiddler zu verwenden und einen Remote-Proxy einzurichten, aber es ist mir nie gelungen. Mit dem Netzwerkmonitor kann ich sehen, wie mein Webservice aufgerufen wird und welche Anforderungen gestellt werden.
Oleg D.

Ich hatte das gleiche Problem wie oben, konnte Fiddler nie richtig zum Laufen bringen. Das MS Network Monitor Tool funktionierte jedoch wie ein Champion.
Bulltorious

1
Dieses Tool hat gut funktioniert, aber ich kann die Nutzdaten anscheinend nicht auf sichere SSL-Aufrufe untersuchen. Ich bekomme nur eine SSLApplicationData: Binary Large Object (304 Bytes)Nachricht. Gibt es eine Möglichkeit, diese Daten anzuzeigen?
Atconway

1
SSL-Verkehr soll nicht einfach zu entschlüsseln sein. Das ist die Absicht, SSL zu verwenden, um zu verhindern, dass Lauscher den Verkehr untersuchen. Auf jeden Fall gibt es ein Entschlüsselungstool für die SSL-Entschlüsselung vom MS Network Monitor, wenn Sie den privaten SSL-Schlüssel des Servers zur Hand haben : blogs.technet.com/b/netmon/archive/2010/03/08/… . Fiddler verwendet dazu ein gefälschtes Zertifikat, um selbst einen Man-in-the-Middle-Angriff durchzuführen.
YudhiWidyatama

1
"Network Monitor 3.4 ist der Protokollanalysator für archivierte Versionen und befindet sich nicht mehr in der Entwicklung. Microsoft Message Analyzer ist der Ersatz für Network Monitor 3.4."
Styfle

13

Konfigurieren Sie Fiddler unter Windows als "Reverse Proxy"

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

Ich weiß, dass es bereits eine Antwort gibt, die dies vorschlägt, aber ich möchte die Erklärung und Anweisungen dafür geben, die Telerik hätte liefern sollen , 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 eingehende Anfragen zu überwachen , müssen Sie Fiddler so konfigurieren, dass es als "Reverse Proxy" fungiert.
  • 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 machen!
  • Die Standardmethode zum Einrichten mit Fiddler besteht darin, Fiddler zu veranlassen, alle an Port '8888' gesendeten Anforderungen abzufangen (da dies normalerweise von nichts anderem verwendet wird, obwohl Sie genauso einfach einen anderen Port verwenden könnten).
  • Anschließend müssen Sie den Registrierungseditor verwenden, damit Fiddler alle http-Anforderungen weiterleitet, die Fiddler an Port 8888 empfängt, damit sie an den Standard-http-Port weitergeleitet werden (Port 80, Port 443 für eine https-Anforderung oder einen anderen benutzerdefinierten Port) Ihr Webserver ist auf Abhören eingestellt.)

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

Sie tun dies, indem Sie: 8888 an Ihren Hostnamen anhängen , beispielsweise wie folgt für eine MVC-Route:

http: // myhostname : 8888 / controller / action


Exemplarische Vorgehensweise

Stellen Sie sicher, dass Fiddler Remote-http-Anforderungen an Port 8888 akzeptieren kann:

Fiddler als Administrator ausführen Gehen Sie zu Extras> Fiddler-Optionen> Verbindungen und stellen Sie sicher, dass "Remotecomputer eine Verbindung zulassen" aktiviert und "Fiddler lauscht auf Port" auf 8888 eingestellt ist:

Geben Sie hier die Bildbeschreibung ein

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

  • Fiddler schließen
  • 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, an den Sie eingehenden Datenverkehr umleiten möchten (im Allgemeinen 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 'Wertdaten' 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 (standardmäßig nicht, wenn Ihr Server durch eine Firewall geschützt ist).

Das ist es! 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 werden dann zur tatsächlichen Bearbeitung an Ihren Webserver weitergeleitet.

Testen Sie eine Anfrage

  • Starten Sie Fiddler neu
  • Um zu testen, ob Fiddler externe Anforderungen abfängt, öffnen Sie einen Browser auf demselben Computer, auf dem Sie Fiddler als Reverse-Proxy eingerichtet haben . Navigieren Sie in Ihrem Browser zu http://127.0.0.1:8888
  • Dies testet eine grundlegende Anforderung an Port 8888
  • Sie sollten die von Fiddler abgefangene Anfrage sehen
  • Jetzt können Sie eine Anforderung von einem anderen Computer testen, indem Sie beispielsweise eine Anforderung von einem Browser auf einem anderen Computer wie diesem stellen (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 Anforderung erstellen , indem Sie eine andere Instanz von Fiddler auf einem Remotecomputer verwenden und eine URL verwenden, die der obigen ähnlich ist. Auf diese Weise können Sie entweder eine GET- oder eine POST-Anfrage stellen.

WICHTIG: Wenn Sie mit dem Anzeigen Ihrer Anfrage (n) fertig sind, kehren Sie zu Extras> Fiddler-Optionen> Verbindungen zurück und entfernen Sie die Option "Remotecomputern die Verbindung erlauben". Andernfalls können Dritte den Datenverkehr über Ihren Server leiten


In Betriebssystemen ohne REGEDIT (Windows ahs Registrierung Mac OSX und Linux nicht), was sollte der gleiche Schritt sein?
Partizanos


9

Jungs haben den perfekten Weg gefunden, um ALLEN Datenverkehr zu überwachen, der lokal zwischen Anforderungen von meinem Computer an meinen Computer fließt:

  1. Installieren Sie Wireshark

  2. Wenn Sie Datenverkehr erfassen müssen, der von einem lokalen Host zu einem lokalen Host fließt, haben Sie Schwierigkeiten, Wireshark zu verwenden, da dies nur den eingehenden Datenverkehr auf der Netzwerkkarte überwacht. Die Möglichkeit hierfür besteht darin, Windows eine Route hinzuzufügen, die den gesamten Datenverkehr über ein Gateway erzwingt und auf der Netzwerkschnittstelle erfasst wird.

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

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

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


6

Microsoft Message Analyzer ist der Nachfolger von Microsoft Network Monitor 3.4

Wenn Ihr http-eingehender Datenverkehr am 58000-Port zu Ihrem Webserver geleitet 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ängen von Ihrem Betriebssystem ab

Parsing Level: Voll


3

Wenn Sie Fiddler als Reverse-Proxy ausführen möchten, sollten Sie in der Lage sein, Clients dazu zu bringen, eine Verbindung zur Adresse von Fiddler herzustellen und die Anforderungen von Fiddler an Ihre Anwendung weiterzuleiten.

Dies erfordert entweder ein wenig Portmanipulation oder Client-Konfiguration, je nachdem, was aufgrund Ihrer Anforderungen einfacher ist.

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



2

Verwenden Sie TcpView, um zu überwachende Ports und Verbindungen anzuzeigen . Das wird nicht gibt Ihnen Anfragen.

Um Anfragen zu sehen, müssen Sie einen Proxy umkehren, von dem ich keine solchen Tools kenne.

Verwenden Sie die Ablaufverfolgung , um Ihnen Teile der Anforderungen zu geben (erste 1 KB der Anforderung).


2

Wireshark verwenden ..

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

Wenn das funktioniert, können Sie nach http/ http contains GET/ filternhttp contains POST Verkehr .

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


1

Sie können auch den HTTP-Debugger ausprobieren . Er verfügt über die integrierte Funktion zur Anzeige eingehender HTTP-Anforderungen und erfordert keine Änderungen an der Systemkonfiguration.

HTTP-Debugger

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.