Что именно читают антифрод-системы
Это заголовки, которые ваш браузер отправил нам прямо сейчас, — не пример из документации. Антифрод, бот-фильтры и капчи читают тот же набор и оценивают его целиком: подозрительным становится не отдельный заголовок, а сочетание, которое не встречается у живых людей.
User-Agent заявляет браузер и систему — и его проще всего опровергнуть остальными строками. Accept-Language объявляет языки. Accept и Accept-Encoding различаются у разных браузеров тонко и предсказуемо, и скриптовый клиент редко попадает в них точно. Sec-Fetch-* описывают, откуда пришёл запрос — из адресной строки, из картинки, со стороннего сайта. Клиентские подсказки Sec-CH-UA проставляет сам браузер, из JavaScript страницы их не подделать, — поэтому доверия к ним больше, чем к User-Agent.
Заголовки, по которым видно прокси
Via, Forwarded, X-Forwarded-For, X-Real-IP, X-Proxy-ID появляются только тогда, когда в цепочке кто-то стоит. Прозрачный прокси кладёт в них ваш настоящий адрес, анонимный — ограничивается пометкой о себе, элитный не добавляет ничего. Если вы видите здесь что-то из этого списка, ваш прокси сообщает о своём существовании каждому сайту.
Классическое расхождение: русский язык при иностранном IP
Самый дешёвый сигнал для площадки — несовпадение того, что заявляет соединение, с тем, что заявляет браузер. Accept-Language: ru-RU при немецком адресе выхода, часовой пояс +03 при американском IP, системный язык от одной страны и валюта от другой. Ни одна из этих строк по отдельности ничего не нарушает; вместе они складываются в портрет, на который срабатывают правила.
Отсюда практика: язык и часовой пояс профиля меняют вместе с прокси, а не отдельно. Что при этом видно со стороны JavaScript — на странице отпечатка.
Как получается эта страница
Список печатается на сервере из входящего запроса, то есть показывает сырые заголовки, а не то, что потом восстановил JavaScript. Значения Cookie, Authorization, Proxy-Authorization и X-Api-Key заменены заглушкой: само имя заголовка видеть полезно, а значение — это доступ, и страница публичная, скриншоты с неё расходятся куда угодно.
Частые вопросы
Какие заголовки выдают использование прокси?
Via, Forwarded, X-Forwarded-For, X-Real-IP и X-Proxy-ID. Их наличие означает, что прокси сам сообщает о себе; элитный не добавляет ни одного из них.
Нужно ли менять Accept-Language под страну прокси?
Менять его отдельно от остального — плохая идея: получится браузер с немецким языком, московским часовым поясом и русской раскладкой. Язык, часовой пояс и локаль профиля имеет смысл выставлять комплектом под выбранный адрес.
Можно ли подменить заголовки браузера?
Часть — расширением или настройками профиля в антидетект-браузере. Клиентские подсказки Sec-CH-UA ставит сам движок, и подменённый User-Agent, который им противоречит, заметнее, чем нетронутый.
Почему значения некоторых заголовков скрыты?
Cookie, Authorization и ключи API — это готовый доступ к вашим аккаунтам. Имя заголовка показывает, что он был отправлен, и этого достаточно; значение на публичной странице показывать нельзя.
Заголовки выглядят чистыми, а блокировки всё равно есть — почему?
Заголовки — только первый слой. Дальше запускается JavaScript и читает canvas, видеокарту, шрифты, часовой пояс, а сама площадка смотрит на репутацию адреса и на поведение профиля. Чистые заголовки необходимы, но ничего не гарантируют.
Что такое Sec-Fetch и зачем они нужны?
Это описание контекста запроса: пришёл он из навигации, из картинки, из скрипта, со своего сайта или со стороннего. Сервер по ним отбраковывает запросы, которые называют себя одним, а устроены как другое.