7

Я использую 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.

1 ответ1

5

Сам нашел ответ, если кому-то интересно (источник - blogs.telerik.com)

WebSockets

Поддержка Fiddler HTML5 WebSockets продолжает расти; Расширения Fiddler теперь могут перехватывать и обрабатывать сообщения WebSocket, обрабатывая FiddlerApplication.Событие OnWebSocketMessage.

При подготовке к полнофункциональному пользовательскому интерфейсу WebSockets Fiddler больше не выводит сообщения WebSocket на вкладку «Журнал». Если вы хотите повторно включить это поведение до тех пор, пока не будет доступен полный пользовательский интерфейс, вы можете сделать это с помощью FiddlerScript. Просто нажмите «Правила»> «Настроить правила» и добавьте следующую функцию в ваш класс Handlers.

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!");
}                            
*/
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .