Когда вы отправляете запрос через прокси, запрос, доходящий до целевого сервера, — это уже не тот запрос, который вы отправили. Прокси вклинивается, меняет часть заголовков и чаще всего добавляет новые заголовки. Эти добавленные заголовки прямо выдают факт использования прокси, а иногда и ваш реальный IP-адрес.
Именно в этом состоит техническая основа понятия уровня анонимности. В этой статье мы разбираем, какие заголовки добавляются, что они означают и как проверить собственное соединение.
Три основных заголовка
Если этот заголовок присутствует и содержит ваш реальный IP, прокси относится к классу «прозрачных» (transparent) и не обеспечивает анонимности.
| Заголовок | Стандартный? | Что передаёт | Влияние на анонимность |
|---|---|---|---|
X-Forwarded-For | Фактический стандарт | Цепочка IP клиента | Может раскрыть реальный IP |
Forwarded | RFC 7239 | for, by, proto, host | Передаёт ту же информацию в структурированном виде |
Via | RFC 9110 | Имя и версия посредников | Не выдаёт IP, но раскрывает наличие прокси |
X-Real-IP | Распространённая практика | Один IP клиента | Может раскрыть реальный IP |
X-Proxy-ID / Proxy-Connection | Нестандартный | Следы прокси-ПО | Раскрывает наличие прокси |
Уровни анонимности рождаются из этих заголовков
Три уровня, используемые в отрасли, определяются непосредственно наличием этих заголовков:
Уровень elite не означает «необнаружимый»; он означает лишь, что следы не оставлены на уровне заголовков . Другие сигналы, такие как репутация IP и TLS-отпечаток, по-прежнему присутствуют.
Наша статья, где мы рассматриваем уровни в более широком контексте — уровни анонимности прокси — объясняет, какой уровень подходит для какой задачи. Чтобы проверить уровень собственного соединения, наш инструмент тестирования анонимности можете использовать.
Откуда берутся эти заголовки?
Эти заголовки добавляет не всегда тот прокси, которым вы пользуетесь. В цепочке может быть несколько посредников:
Каждый посредник может добавить свой след. Список заголовков, доходящий до уровня приложения целевого сервера, — это сумма всей цепочки.
Особенно если вы работаете в корпоративной сети, заголовок может добавлять посредник, X-Forwarded-For не находящийся под вашим контролем. В этом случае, даже если купленный вами прокси относится к уровню elite, посредник в начале цепочки раскроет вашу личность.
Как проверить собственное соединение?
Способ проверки — использовать эндпоинт, который отражает, как именно выглядит ваш запрос на стороне получателя. В отрасли такие эндпоинты называют proxy judge ; они возвращают все полученные заголовки в виде обычного текста.
Положите два вывода рядом. Каждый заголовок, который появляется дополнительно в запросе через прокси, — это оставленный вами след.
Если не хотите разбираться вручную, наша страница тестирования анонимности выполнит это сравнение за вас и сообщит уровень. Чтобы увидеть только выходной IP и его местоположение, Мой IP-адрес вполне достаточно.
В HTTPS ситуация меняется
Важная деталь: в HTTPS-трафике прокси не может трогать тело запроса и заголовки. В туннеле, устанавливаемом методом CONNECT, прокси лишь переносит зашифрованные байты; X-Forwarded-For не может добавить, потому что даже не видит запрос.
Поэтому на HTTPS-сайтах опасение «не сольёт ли прозрачный прокси мой IP» в значительной степени беспочвенно — но на обычных HTTP-сайтах оно полностью оправданно.
Даже если прокси не может трогать заголовки, CONNECT он видит домен в строке и поле SNI в TLS-рукопожатии. То есть информация о том, на какой сайт вы заходите, известна прокси и в HTTPS. Шифруется то, что вы делаете, куда вы заходите а не.
Правильное чтение на стороне сервера
Обратная сторона медали: если вы пытаетесь прочитать реальный IP посетителя на собственном сервере, эти заголовки жизненно важны — но ненадёжны. X-Forwarded-For может быть подделан клиентом.
- Верьте только значению, пришедшему от посредника, которому вы доверяете. Если ваш обратный прокси записывает его сам, правое значение достоверно.
- Читайте цепочку справа налево. Самый правый — ближайший к вам и самый надёжный посредник.
- Определите список доверенных прокси. В Nginx —
set_real_ip_from, во фреймворках приложений для этого служит настройка «trusted proxies». - Не стройте решения о лимитах скорости и блокировках на сыром заголовке; злоумышленник может записать в него что угодно.
Чистка заголовков и отпечаток
Избавиться от прокси-заголовков само по себе недостаточно. Классифицируя запросы, целевые сайты смотрят и на другие сигналы:
| Сигнал | Что выдаёт | Как управлять |
|---|---|---|
| Порядок заголовков | Сигнатура библиотеки (requests, curl) | Имитируйте порядок заголовков браузера |
| Несоответствие User-Agent | Старая версия или поддельное значение | Используйте реальное и актуальное значение |
| Accept-Language | Несоответствие стране IP | Отправляйте язык, соответствующий стране выхода |
| TLS-отпечаток (JA3) | Клиентская библиотека | Браузерный движок или совместимый клиент |
| Репутация IP / ASN | Источник — дата-центр | Резидентный или ISP-пул |
То есть даже elite-прокси, если он выходит из ASN дата-центра, всё равно легко классифицируется. На эту тему residential proxy и ISP-прокси наши страницы объясняют, почему источник ASN является определяющим.
Резюме
X-Forwarded-For, Via и подобные заголовки — самые заметные следы, оставляемые прокси, и именно они образуют техническое определение уровня анонимности. В обычном HTTP-трафике они могут раскрыть ваш реальный IP; в HTTPS же прокси не может их трогать. Чтобы увидеть свою ситуацию, тест на анонимность запустите, проверьте свой выходной IP с помощью Мой IP-адрес и проверьте, оставляете ли вы след на стороне DNS через DNS leak тест обязательно проверьте.