X-Forwarded-For
X-Forwarded-For — HTTP-заголовок, в который промежуточный сервер записывает IP-адрес клиента, отправившего ему запрос.
Обновлено · Редакция Prokso
X-Forwarded-For (сокращённо XFF) — это строка в HTTP-заголовках запроса. Промежуточный сервер дописывает туда IP-адрес, с которого к нему пришёл запрос. Если запрос проходит несколько таких серверов, адресов в заголовке становится несколько, через запятую. Первый слева обычно принадлежит клиенту.
Чаще всего этот заголовок добавляет обратный прокси или балансировщик нагрузки перед сайтом. Сервер сайта видит только адрес балансировщика, поэтому узнаёт IP посетителя именно из XFF. Так же может поступать прозрачный прокси в сети офиса или оператора связи.
Рядом с XFF существуют ещё два заголовка. Via показывает, через какие промежуточные узлы прошёл запрос. Forwarded — стандартная версия из RFC 7239, где адрес клиента, протокол и хост записываются в одном поле, например Forwarded: for=203.0.113.5;proto=https.
Вот как это выглядит на практике. Вы открываете сайт, запрос идёт сначала через прокси, а потом через балансировщик сайта. Если прокси добавляет XFF с вашим адресом, балансировщик допишет к нему адрес прокси, и сервер сайта получит оба. Если прокси ничего не добавляет, в заголовке будет только адрес прокси, который записал балансировщик. Именно поэтому важно знать поведение каждого звена, а не только последнего.
Для того, кто работает через прокси, эти заголовки важны по простой причине. Если промежуточный сервер передаёт их дальше, сайт может прочитать из них ваш настоящий IP, хотя соединение пришло с другого адреса. Прокси, которые не добавляют таких заголовков и не выдают себя, называют анонимными или элитными.
Стоит помнить, что XFF — обычный текст. Клиент может записать туда что угодно, поэтому сайты обычно доверяют только той части заголовка, которую добавил их собственный сервер. Но как поступает конкретный сайт, снаружи не видно, поэтому лучше самому знать, что он получает. Поэтому не считайте заголовок ни доказательством, ни защитой.
Проверить это несложно. Откройте страницу мой IP через прокси и посмотрите, какой адрес, страну и провайдера она показывает. Строку прокси можно отдельно проверить инструментом проверка прокси. Если где-то появляется ваш домашний IP, ищите причину в цепочке: в браузере, программе или промежуточном сервере, который добавляет заголовки.
Вопросы и ответы
Может ли сайт узнать мой IP через X-Forwarded-For?
Да, если промежуточный сервер на пути записал туда ваш адрес и передал заголовок дальше. Откройте страницу «мой IP» через прокси и проверьте строку прокси инструментом проверки, чтобы увидеть, какой адрес получает сайт.
Чем X-Forwarded-For отличается от Forwarded?
X-Forwarded-For — старый заголовок, ставший привычным без стандарта. Forwarded описан в RFC 7239 и в одном поле передаёт адрес клиента, протокол и хост. Смысл у них одинаковый.
Резидентские $1.59, мобильные $2.50, серверные $0.65 за 1 ГБ
Регистрация за минуту, доступы сразу после оплаты.