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