Referer (часто пишут «Referrer») — это HTTP-заголовок, который сообщает серверу, с какой страницы посетитель перешёл на сайт. Например, если пользователь кликнул по ссылке на стороннем ресурсе, адрес этой страницы появится в Referer.
Зачем нужен Referer
Referer помогает:
- Отслеживать, откуда приходит трафик
- Анализировать поведение пользователей
- Ограничивать доступ к защищённым разделам
Однако этот заголовок легко подделать — и это часто используют для атак и спама.
Проблемные сценарии Referer
1. Пустой Referer
Многие боты и подозрительные скрипты не передают Referer вовсе. Хотя такое бывает и у реальных пользователей (например, переход с закладки или через приватный режим), полное его отсутствие — один из признаков автоматизации.
2. Фейковый или поддельный Referer
Злоумышленники часто указывают контролируемые ими домены, подозрительные URL или даже адреса вашего сайта, чтобы обойти фильтры или подбросить спам в аналитику.
3. Некорректный Referer
Если заголовок заполнен мусором, случайными символами, обрезанным адресом или содержит ошибки, это явный признак бота.
4. Опасные и спамовые домены
Если Referer содержит адрес из списка вредоносных, спамерских или ранее заблокированных сайтов, такой трафик нужно останавливать.
Как технически работает передача заголовка
Когда браузер отправляет запрос на сервер, он автоматически добавляет заголовок с адресом страницы, с которой пришёл пользователь. Это происходит при переходе по ссылке, отправке формы или загрузке ресурсов со стороннего сайта. Сервер получает эту информацию и может использовать её для аналитики или фильтрации.
Важно понимать, что браузер передаёт этот заголовок только при определённых условиях. Если страница открыта по HTTPS, а ссылка ведёт на HTTP-сайт, заголовок не отправляется из соображений безопасности. Это стандартное поведение, описанное в документации MDN и спецификации Referrer Policy (W3C).
Политика Referrer-Policy
Владельцы сайтов могут управлять тем, какой объём информации передаётся в заголовке, с помощью директивы Referrer-Policy. Она задаётся в HTTP-ответе или через мета-тег в HTML. Например, значение no-referrer полностью отключает передачу, а strict-origin-when-cross-origin передаёт только домен при переходах между разными сайтами. Это напрямую влияет на то, какие данные получит сервер и как их интерпретирует система защиты.
Как BotBlocker фильтрует Referer
В логике BotBlocker реализованы такие проверки:
- Блокировка пустого Referer при одновременном совпадении с другими подозрительными признаками (например, пустой User-Agent, несоответствие PTR)
- Фильтрация запросов с некорректным или бессмысленным Referer
- Определение и блокировка трафика с Referer из подозрительных или известных спам-доменов
- Возможность применять белый список для особо защищённых разделов (например, для админки XML-RPC или API)
Комплексный подход к проверке
Одна из ключевых особенностей BotBlocker — то, что заголовок никогда не проверяется изолированно. Система учитывает совокупность признаков: поведение IP-адреса, частоту запросов, соответствие User-Agent и другие параметры. Такой подход снижает вероятность ошибочной блокировки реального пользователя и при этом эффективно отсекает автоматизированный трафик.
Например, если запрос приходит с пустым заголовком, но IP-адрес принадлежит известному поисковому роботу, система его пропустит. Если же пустой заголовок сочетается с подозрительным User-Agent и высокой частотой обращений, запрос будет заблокирован. Это разумная логика, которая работает без лишних настроек.
Преимущества и нюансы
Фильтрация эффективна против спама, парсеров и атакующих ботов, но:
- У части настоящих пользователей и браузерных расширений заголовок бывает пустым — не стоит блокировать такие визиты только по одному признаку
- Для прямых переходов или закладок заголовок может отсутствовать
- Лучше комбинировать фильтр с другими признаками: User-Agent, язык, IP
Влияние на аналитику сайта
Поддельные заголовки — это не только угроза безопасности, но и проблема для веб-аналитики. Когда боты массово обращаются к сайту с фиктивными адресами источников, данные в отчётах искажаются. Маркетологи видят трафик с несуществующих площадок, что мешает принимать правильные решения по продвижению. Фильтрация на уровне сервера помогает сохранить статистику чистой ещё до того, как запрос попадёт в систему аналитики.
Это особенно важно для сайтов, которые используют платный трафик. Если боты имитируют переходы с рекламных площадок, бюджет расходуется впустую, а отчёты показывают завышенную эффективность каналов. Грамотная фильтрация таких запросов позволяет видеть реальную картину.
FAQ
Может ли фильтрация заблокировать настоящих пользователей или поисковики?
При стандартных настройках — практически нет. Ложные срабатывания исключаются при комплексной проверке.
Можно ли обойти фильтрацию?
Технически да, но большинство ботов или вообще не заполняют этот заголовок, или делают это неправильно — такие запросы легко выявляются.
Как включить фильтрацию Referer?
В BotBlocker эта проверка работает по умолчанию. Для продвинутых случаев доступны дополнительные параметры.
Зачем вообще проверять этот заголовок, если его легко подделать?
Потому что большинство ботов не тратят усилия на корректную подделку. Даже базовая проверка отсекает значительную часть автоматизированного трафика. В сочетании с другими методами это даёт надёжный результат без лишней нагрузки на сервер.