Untersuchen des Websocket-Verkehrs mit Proxy

7409
blizz

Ich verwende Charles Proxy, um den Verkehr meiner Android-Apps zu überprüfen. Ich habe das Telefon so konfiguriert, dass der gesamte Datenverkehr durch Charles, das auf meinem PC installiert ist, weitergeleitet wird.

Bisher hat alles funktioniert (HTTP- / HTTPS-Verkehr), mit Ausnahme des Websocket-Verkehrs. Ich konnte es bei Charles und Fiddler nicht inspizieren. Zunächst schlägt die CONNECT-Anfrage wie folgt fehl:

URL https://184.73.XX.XX/ Status Failed Failure Invalid first line in request Response Code - Protocol HTTP/1.0 Method CONNECT Content-Type - Client Address /192.168.0.10 Remote Address 184.73.XX.XX/184.73.XX.XX 

Gleich nach dieser Anfrage wird eine zusätzliche Anforderung zum Aktualisieren der Verbindung gesendet, die in der Antwort als erfolgreich erscheint:

HTTP/1.1 101 Switching Protocols Server: nginx Date: Sun, 16 Feb 2014 02:04:33 GMT Connection: upgrade Upgrade: websocket Sec-WebSocket-Accept: CKm+rgmiltNrbQvwU2HzKHzr2eM= 

Danach wird kein Verkehr mehr aus der App angezeigt, obwohl die Aktivität fortgesetzt wird. Worum geht es also beim Websocket-Verkehr, wenn er nicht vom Proxy erfasst wird? Wie kann ich es auch erfassen, um zu sehen, was hin und her geschickt wird?

Ich habe Wireshark ausprobiert und sehe TLS-Datenverkehr nach der CONNECT / Upgrade-Anforderung weiterlaufen, aber ich weiß nicht, wie ich die Pakete in etwas rekonstruieren kann, das ich verstehen kann, und den mit TLS verschlüsselten Datenverkehr entschlüsseln kann.

7

1 Antwort auf die Frage

5
blizz

Ich habe die Antwort selbst gefunden, falls jemand interessiert ist (Quelle: blogs.telerik.com).

WebSockets

Die Unterstützung von Fiddlers HTML5-WebSockets wächst weiter; Fiddler-Erweiterungen können jetzt WebSocket-Nachrichten erfassen und bearbeiten, indem sie das Ereignis FiddlerApplication.OnWebSocketMessage behandeln.

In Vorbereitung auf eine vollständige WebSockets-Benutzeroberfläche spuckt Fiddler keine WebSocket-Nachrichten mehr auf die Registerkarte "Protokoll". Wenn Sie dieses Verhalten wieder aktivieren möchten, bis die vollständige Benutzeroberfläche verfügbar ist, können Sie FiddlerScript verwenden. Klicken Sie einfach auf Regeln> Regeln anpassen und fügen Sie die folgende Funktion in Ihre Handlers-Klasse ein.

static function OnWebSocketMessage(oMsg: WebSocketMessage) {  // Log Message to the LOG tab FiddlerApplication.Log.LogString(oMsg.ToString());  /* // Modify a message's content var sPayload = oMsg.PayloadAsString(); if (sPayload.Contains("time")) { oMsg.SetPayload(sPayload + "... bazinga!"); }  */ } 
Hier ist ein weiterer verwandter Beitrag zu Fiddler und Websockets: http://www.codeproject.com/Articles/718660/Debug-Inspect-WebSocket-traffic-with-Fiddler David vor 8 Jahren 0
Und Sie haben keine Lösung für Charles Proxy gefunden? David vor 8 Jahren 3