Überprüfen des Websocket-Verkehrs mit einem Proxy

7

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

Bis auf den Websocket-Verkehr hat bisher alles funktioniert (HTTP / HTTPS-Verkehr). Ich konnte es in Charles und Fiddler nicht inspizieren. Zunächst schlägt die CONNECT-Anforderung 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

Unmittelbar nach dieser Anforderung wird eine zusätzliche Anforderung zum Aktualisieren der Verbindung gesendet, die wie in der Antwort dargestellt erfolgreich zu sein scheint:

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 der Datenverkehr von der App nicht mehr angezeigt, obwohl die Aktivität fortgesetzt wird. Was ist also mit Websocket-Verkehr, der nicht vom Proxy erfasst wird? Wie kann ich es auch erfassen, um zu sehen, was hin und her gesendet wird?

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

Blizz
quelle

Antworten:

6

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

WebSockets

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

In Vorbereitung auf eine voll funktionsfähige WebSockets-Benutzeroberfläche sendet Fiddler keine WebSocket-Nachrichten mehr an die Registerkarte Protokoll. Wenn Sie dieses Verhalten wieder aktivieren möchten, bis die vollständige Benutzeroberfläche verfügbar ist, können Sie dies mit FiddlerScript tun. Klicken Sie einfach auf Regeln> Regeln anpassen und fügen Sie der Handlers-Klasse die folgende Funktion hinzu.

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!");
}                            
*/
}
Blizz
quelle
1
Hier ist ein weiterer verwandter Beitrag über Fiddler und Websockets: codeproject.com/Articles/718660/…
David
3
Und Sie haben keine Lösung für Charles Proxy gefunden?
David