Проверка трафика веб-сокета с прокси

7396
blizz

Я использую Charles Proxy для проверки трафика из моих приложений для Android. У меня телефон настроен на прокси весь трафик через Charles, который установлен на моем ПК.

До сих пор все работало (трафик HTTP / HTTPS), за исключением трафика веб-сокетов. Я не смог проверить это у Чарльза и Фиддлера. Во-первых, запрос CONNECT не выполняется следующим образом:

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 

И сразу после этого запроса отправляется дополнительный запрос на обновление соединения, который, как видно из ответа, выглядит успешным:

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= 

После этого трафик из приложения перестает отображаться, даже если активность продолжается. Итак, что же такого в трафике веб-сокета, что он не перехватывается прокси-сервером? Кроме того, как я могу захватить это, чтобы видеть то, что отправляется туда и обратно?

Я пробовал Wireshark и вижу, что трафик TLS продолжается после запроса CONNECT / upgrade, но я не знаю, как преобразовать пакеты в нечто, что я могу понять, и расшифровать зашифрованный трафик TLS.

7

1 ответ на вопрос

5
blizz

Found the answer myself in case anyone is interested (source is blogs.telerik.com)

WebSockets

Fiddler’s HTML5 WebSockets support continues to grow; Fiddler extensions can now capture and manipulate WebSocket messages by handling the FiddlerApplication.OnWebSocketMessage event.

In preparation for a full-featured WebSockets UI, Fiddler no longer spews WebSocket messages to the Log tab. If you’d like to re-enable that behavior until the full UI is available, you can do so using FiddlerScript. Simply click Rules > Customize Rules and add the following function inside your Handlers class.

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!"); } */ } 
Вот еще один связанный пост на Fiddler и websockets: http://www.codeproject.com/Article/718660/Debug-Inspect-WebSocket-traffic-with-Fiddler David 8 лет назад 0
И вы не нашли никакого решения для Чарльза Прокси? David 8 лет назад 3