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.
Вплив на аналітику сайту
Підроблені заголовки - це не лише загроза безпеці, а й проблема для веб-аналітики. Коли боти масово звертаються до сайту з фіктивними адресами джерел, дані у звітах спотворюються. Маркетологи бачать трафік із неіснуючих майданчиків, що заважає ухвалювати правильні рішення щодо просування. Фільтрація на рівні сервера допомагає зберегти статистику чистою ще до того, як запит потрапить у систему аналітики.
Це особливо важливо для сайтів, які використовують платний трафік. Якщо боти імітують переходи з рекламних майданчиків, бюджет витрачається марно, а звіти показують завищену ефективність каналів. Грамотна фільтрація таких запитів дає змогу бачити реальну картину.
Часті запитання
Чи може фільтрація заблокувати справжніх користувачів або пошуковики?
За стандартних налаштувань - практично ні. Хибні спрацювання виключаються під час комплексної перевірки.
Чи можна обійти фільтрацію?
Технічно так, але більшість ботів або взагалі не заповнюють цей заголовок, або роблять це неправильно - такі запити легко виявляються.
Як увімкнути фільтрацію Referer?
У BotBlocker ця перевірка працює за замовчуванням. Для складніших випадків доступні додаткові параметри.
Навіщо взагалі перевіряти цей заголовок, якщо його легко підробити?
Тому що більшість ботів не витрачають зусиль на коректну підробку. Навіть базова перевірка відсікає значну частину автоматизованого трафіку. У поєднанні з іншими методами це дає надійний результат без зайвого навантаження на сервер.
