Опубликовали полный замер собственного стэка. Один аккаунт, один и тот же IP в каждом регионе, четыре протокола на нём, тестировали с одного европейского клиента. Сырые числа: пропускная, latency, поведение SOCKS5 UDP, утечки заголовков.
Ниже — методика, цифры, выводы.
Зачем мы это сделали
Каждый клиент рано или поздно задаёт вопрос: «Какой протокол выбрать?» На большинстве сайтов в индустрии в ответ — маркетинг: «HTTPS-secure», «SOCKS5-flexible», «Shadowsocks-stealth». Без числовых отличий и без признания, где у конкретного провайдера слабые места.
У нас были тестовые данные по всем эндпоинтам, мы их собрали в одном месте. Зачем выкладываем:
- любой может прогнать те же команды и проверить результат на нашем стэке или на текущем провайдере;
- нам это полезно для внутренней работы — видно, где слабые места и куда вкладываться;
- индустрии полезна сама форма: числа > обещаний.
Методика
Тестовый клиент — наш собственный сервер в Европе. Все запросы по IPv4, чтобы исключить эффект IPv6-маршрутизации.
Инструменты:
curl 8.5.0— для HTTP/HTTPS/SOCKS5 TCPss-local(shadowsocks-libev 3.3.5) — для Shadowsocks- raw Python socket — для SOCKS5 UDP ASSOCIATE
openssl s_client— для проверки TLS-handshake к HTTPS-прокси
Метрики:
- Пропускная —
https://speed.cloudflare.com/__down?bytes=10000000, 10 МБ файл, замеряемspeed_download - Latency — TTFB до
https://www.google.com/generate_204, медиана из 5–10 замеров - SOCKS5 UDP RTT — DNS-запрос (A example.com) к 8.8.8.8:53 через UDP relay, медиана из 5 замеров
- Anonymity — содержимое
httpbin.org/headers, поискVia,X-Forwarded-For,X-Real-IP,Forwarded,Proxy-Connection
Пропускная способность
Тесты с европейского клиента. NL и DE ближе всего, UA сравнимо по расстоянию, US дальше всех.
| Protocol | UA | NL | DE | US |
|---|---|---|---|---|
| HTTP | 79 Mbps | 161 Mbps | 200 Mbps | 22 Mbps |
| HTTPS | 52 Mbps | 231 Mbps | 189 Mbps | 31 Mbps |
| SOCKS5 TCP | 59 Mbps | 205 Mbps | 297 Mbps | 23 Mbps |
| Shadowsocks | 69 Mbps | 162 Mbps | 282 Mbps | 29 Mbps |
Что видно из чисел:
- DE — самый быстрый PoP для европейского клиента. 297 Mbps на SOCKS5, 282 на Shadowsocks. NL близко (231 на HTTPS).
- UA-эндпоинт медленнее NL/DE в 2–4 раза при сравнимом географическом расстоянии. Это про upstream-канал самого PoP, не про протокол.
- US с европейского клиента — ожидаемые 22–31 Mbps, упирается в трансатлантическую задержку и пропускную целевого сервера. Реальную картину для US-аудитории даст только тест с американского клиента.
Latency
TTFB до google.com через каждый протокол, медиана из 5–10 замеров.
| Protocol | UA | NL | DE | US |
|---|---|---|---|---|
| HTTP | 290 ms | 90 ms | 87 ms | 285 ms |
| HTTPS | 350 ms | 142 ms | 103 ms | 643 ms |
| SOCKS5 TCP | 365 ms | 110 ms | 73 ms | 764 ms |
| Shadowsocks | 287 ms | 113 ms | 63 ms | 552 ms |
Что важно понять:
- HTTPS-прокси добавляет ~100–200 ms latency на новом соединении за счёт TLS-handshake к прокси. Если клиент держит keep-alive — overhead исчезает после первого запроса.
- HTTP — самый быстрый по latency, как и должен быть (нет TLS-обёртки).
- DE опять в топе: 63 ms TTFB на Shadowsocks — почти как direct.
- US с европейского клиента подтверждает методику: 643 ms для HTTPS — это TLS-handshake через Атлантику плюс установка соединения с целью.
SOCKS5 UDP — отдельный пункт, который у конкурентов часто не работает
UDP в SOCKS5 — это команда UDP ASSOCIATE из RFC 1928. Большинство «SOCKS5-прокси» в индустрии её просто не поддерживают: TCP-тесты с curl проходят, а DNS over UDP, QUIC/HTTP3, WebRTC, Telegram-боты, игровые протоколы — молча не работают, без внятных сообщений об ошибке.
Прогнали raw-тест: ассоциация → DNS-запрос (A example.com) к 8.8.8.8:53 через relay-порт прокси.
| PoP | UDP RTT min | median | max |
|---|---|---|---|
| UA | 70 ms | 81 ms | 98 ms |
| NL | 14 ms | 24 ms | 26 ms |
| DE | 6 ms | 7 ms | 10 ms |
| US | 123 ms | 127 ms | 128 ms |
Дополнительно: 19 из 19 запросов через одну ассоциацию прошли без потерь за 5 секунд. UDP можно слать на разные dst через одну ассоциацию (проверили на 8.8.4.4) — relay не привязан к одному target. Это важно для сценариев, где боту нужно ходить в несколько разных UDP-сервисов в одной сессии.
Anonymity audit
Все 16 комбинаций (4 PoP × 4 протокола) проверили на утечки заголовков и DNS.
Заголовки. Через httpbin.org/headers целевой сервер во всех 16 случаях видит только Accept, Host, User-Agent, X-Amzn-Trace-Id. Ни Via, ни X-Forwarded-For, ни X-Real-IP, ни Forwarded, ни Proxy-Connection. С точки зрения target — запрос неотличим от прямого. Это elite (L1) anonymity для всех 4 протоколов.
DNS. Запрос к несуществующему домену *.example.invalid через прокси возвращает ошибку прокси (CONNECT 503), не нашу локальную NXDOMAIN. Резолв идёт на стороне прокси, наш DNS не утекает.
Коротко
- HTTP, HTTPS, SOCKS5 (с UDP), Shadowsocks работают на всех 4 PoP во всех 16 комбинациях.
- Заявленный exit-IP совпадает с фактическим в каждом случае.
- Утечки заголовков — 0 из 16. DNS-резолв на стороне прокси.
- Лучший европейский PoP по скорости и latency: DE.
- HTTPS-прокси: валидный TLS 1.3 + Let's Encrypt cert на каждом эндпоинте, проверяется
openssl s_client. - US-эндпоинт получит честные оценки только при тесте с US-клиента.