Знакомая история? REST-запросы через корпоративный или облачный прокси летают как ни в чём не бывало, а стоит открыть WebSocket или дёрнуть gRPC-метод, как соединение либо не устанавливается вовсе, либо живёт секунд тридцать и молча умирает. При этом в браузере или в логах приложения вы видите загадочные 101, 502, 504 или просто внезапный connection reset. Это не мистика и не карма. Это фундаментальное различие между тем, как прокси обрабатывает короткие запрос-ответ транзакции и как он должен вести себя с долгоживущими двунаправленными потоками.

Эта статья - исчерпывающее руководство по тому, как проходят через прокси протоколы, живущие поверх TCP: WebSocket, gRPC и вообще всё, что требует апгрейда протокола или сквозного туннеля. Мы разберём механику до последнего заголовка, покажем разницу между ws:// через HTTP-прокси и wss:// через метод CONNECT, объясним, почему SOCKS5 нередко проще, что делать с gRPC поверх HTTP/2, как побороть таймауты простоя и, главное, как всё это отлаживать, когда ничего не работает. В конце - рабочий код на Python и Node, чек-листы и FAQ.

Сразу оговорка по объёму темы: механику UDP ASSOCIATE в SOCKS5 мы здесь намеренно не трогаем - это отдельный большой разговор про датаграммы, и ему посвящён отдельный материал. Тут мы концентрируемся исключительно на TCP-протоколах поверх HTTP и SOCKS.