Серверна клоака чи клоака в браузері: як влаштовані PHP-файл і JS-тег

Серверна клоака вирішує, що показати відвідувачу, на сервері сайту — ще до того, як браузер отримає сторінку. Клоака в браузері робить це JavaScript-кодом уже на відкритій сторінці. Розбираємо, що кожна архітектура бачить про візит і як вона поводиться під час збоїв, з кешем і проксі.

Основи клоакінгу9 хв читання
Серверна клоака чи клоака в браузері: як влаштовані PHP-файл і JS-тег
Зміст
  1. Серверна клоака (server-side cloaking): як іде запит
  2. Клоака в браузері: як працює JS-тег
  3. Що кожна клоака бачить про візит
  4. Швидкість: де губляться мілісекунди
  5. Надійність: як клоака поводиться під час збоїв
  6. Кеш, CDN і проксі: тихі вороги серверної клоаки
  7. Що вміє тільки серверна схема
  8. Оновлення й обслуговування
  9. PHP клоака чи JS-тег: що обрати
  10. Серверна фільтрація і правила майданчиків
  11. Підсумок

Серверна клоака — це фільтр, який ухвалює рішення на сервері вашого сайту: запит відвідувача надходить на хостинг, PHP-код питає в сервісу фільтрації, хто перед ним, і лише після відповіді віддає браузеру офер або нейтральну сторінку. Клоака в браузері працює інакше: сторінка вже завантажується, а JS-тег у її <head> ховає вміст, перевіряє візит і показує потрібний варіант.

Обидві схеми розв’язують одне завдання — відсіяти ботів, сканери, спай-сервіси й нецільовий трафік, — але бачать візит з різних боків і ламаються по-різному. Покрокове встановлення розібрано в статті як підключити клоаку; тут — архітектура: що відбувається всередині, де в кожного способу сильні місця, а де слабкі.

Серверна клоака (server-side cloaking): як іде запит

Шлях візиту в серверній схемі:

  1. Відвідувач натискає на оголошення, браузер запитує ваш-сайт.com.
  2. Запит потрапляє на ваш сервер, і першим відповідає PHP-файл, а не лендинг.
  3. Файл передає сервісу дані запиту: IP, заголовки, параметри посилання.
  4. Сервіс перевіряє візит і повертає рішення.
  5. Сервер віддає браузеру офер або White Page. До цього моменту браузер не отримав жодного байта сторінки.

Ключова властивість — сторінка не йде до відвідувача до рішення. Ботові нічого зберегти, блокувальнику реклами нічого вирізати, повільному інтернету нічого показати завчасно.

Клоака в браузері: як працює JS-тег

У браузерній схемі порядок зворотний:

  1. Браузер запитує сторінку, ваш хостинг віддає її всім однаково.
  2. Першим рядком у <head> стоїть тег — він завантажується раніше за все інше й ховає сторінку.
  3. Тег збирає сигнали браузера й надсилає їх сервісу.
  4. Прийшло рішення «офер» — сторінка показується. «White Page» або рішення немає — відвідувача відводить на нейтральну сторінку.

Плюс такої схеми — простота: тег вставляється в будь-яку сторінку, де є доступ до <head>, навіть на конструкторі без власного сервера. Мінус — HTML лендингу фізично вже в браузера. Тег ховає його, але не може «не віддати».

Що кожна клоака бачить про візит

Головна відмінність архітектур — набір сигналів.

Сигнал Сервер Браузер
IP, провайдер, мережа, країна за адресою Так Так, через сервіс
User-Agent, мова, реферер, заголовки запиту Так Так
Параметри посилання: fbclid, gclid, ttclid, UTM Так Так
Чи виконує клієнт JavaScript Ні Так
Часовий пояс і мова браузера Ні Так
Ознаки автоматизації (webdriver, headless) Частково, за заголовками Так
Екран, платформа, властивості браузера Ні Так
Рухи миші й дотики Ні Так
Час, проведений на сторінці Ні Так

Сервер бачить запит, браузер — середовище, у якому цей запит виконується. Простого бота з дата-центру спіймають обидва. Автоматизований браузер на домашньому проксі з правильним User-Agent сервер за одним запитом від людини не відрізнить — його видає вже поведінка JavaScript: розбіжність часового поясу з країною адреси, сліди автоматизації, відсутність рухів. Про такі ознаки — у статтях headless-браузери та відбиток і VPN, проксі та IP дата-центрів.

Гібрид: серверне рішення плюс сторінка перевірки

Тому суто серверна схема на практиці трапляється рідше, ніж здається. Серверний фільтр вирішує одразу, якщо все ясно із запиту, а в спірних випадках віддає коротку сторінку перевірки: вона виконує JavaScript, збирає сигнали браузера й запитує рішення повторно. Для людини це частки секунди очікування, для простого бота — глухий кут.

В ArtisanClo PHP-файл працює саме так: якщо правила потоку вимагають JavaScript чи мінімального часу на сторінці, відвідувач бачить сторінку очікування й проходить перевірку заново. А от під час підключення фільтром для Keitaro або шлюзом для Binom сторінки перевірки немає — рішення ухвалюється лише за мережею й ознаками запиту, тому перевірка JavaScript і час на сторінці там не діють.

Швидкість: де губляться мілісекунди

Будь-який фільтр додає до завантаження час на рішення. Різниця — в тому, де саме.

  • Серверна схема додає запит від вашого хостингу до сервісу ще до віддачі першого байта. Швидкість залежить від мережевої зв’язності хостингу: добрий сервер у дата-центрі відповідає швидко, перевантажений віртуальний хостинг гальмує і лендинг, і перевірку.
  • Браузерна схема додає завантаження скрипта й запит із браузера відвідувача. На мобільному інтернеті це помітніше, але сторінка тим часом уже завантажується паралельно — після рішення її не треба завантажувати знову.
  • Сторінка перевірки навмисно додає очікування. Вмикайте її там, де суворість виправдана джерелом, а не всюди за замовчуванням.

На практиці лендинг із десятком скриптів аналітики й важкими картинками втрачає більше часу, ніж будь-який зі способів фільтрації. Оптимізація сторінки зазвичай дає більше, ніж вибір архітектури.

Надійність: як клоака поводиться під час збоїв

Відмовостійкість — місце, де архітектури розходяться найсильніше.

Якщо не завантажився JS-тег

Тег — це зовнішній скрипт. Якщо його не пропустила мережа, корпоративний фільтр або блокувальник на сервері, сторінка просто не сховається, і її побачать усі, включно з ботами й спай-сервісами. Збій тут «відкритий». Якщо ж тег завантажився, але рішення немає, він відводить відвідувача на White Page — це збій «закритий».

Якщо сервіс не відповів серверу

Серверний спосіб чекає відповіді обмежений час. В ArtisanClo PHP-файл чекає до 4 секунд, а в разі втрати зв’язку добу обслуговує візити за останньою отриманою відповіддю: відвідувачів із міткою рекламного кліку веде на офер, решту — на White Page. Візит, що надійшов раніше за найпершу відповідь, отримає помилку 503. У фільтра для Keitaro та шлюзу для Binom межа — 3 секунди, після неї візит іде на White Page.

Якщо зламався хостинг

Тут обидві схеми рівні: лендинг живе у вас, і фільтр не підніме сервер, що впав. Сервіс відповідає за рішення, ви — за доступність сторінки й сертифікат.

Ситуація JS-тег PHP-файл
Скрипт заблоковано дорогою Сторінку бачать усі Не застосовується
Сервіс не відповів White Page Робота за останньою відповіддю до доби
Немає вихідних з’єднань із хостингу Не впливає Помилка 503, довге завантаження
Захисний фільтр хостингу (WAF) Зазвичай не впливає Може різати запити перевірки

Кеш, CDN і проксі: тихі вороги серверної клоаки

Серверна схема розраховує на те, що кожен запит дійде до PHP-файлу. Цьому заважають три речі.

  • Кеш сторінок. Плагін кешування, кеш хостингу чи CDN віддають збережену копію, не запитавши рішення. У результаті всі бачать ту саму сторінку — ту, що потрапила в кеш. Лендинг із фільтром треба виключати з кешування. Тегу кеш HTML заважає менше: скрипт усередині копії однаково виконається в браузері, якщо копію зроблено після його встановлення.
  • Проксі перед сайтом. Якщо хостинг ставить перед сервером свій проксі, PHP-файл бачить адресу проксі замість адреси відвідувача, і фільтр оцінює ваш сервер, а не людей. Ознака — в усіх візитів у журналі один IP. Лікується передаванням справжньої адреси (налаштування real IP) або проксуванням через Cloudflare, чиї заголовки файл розуміє.
  • Кеш рішення в браузері. Щоб не питати сервіс на кожне перезавантаження, рішення для одного відвідувача може зберігатися недовго. В ArtisanClo з PHP-файлом — до хвилини, тож після правки потоку перевіряйте в новому вікні інкогніто.

Розбір цих та інших несправностей — у статті клоака не працює.

Що вміє тільки серверна схема

Є можливості, фізично недоступні коду в браузері.

  • Код відповіді замість сторінки. Сервер може відповісти 403 чи 404, як закрита адреса. Тег змінити код відповіді не може — на його місці лишиться порожня сторінка.
  • Тіньовий режим. Усі відвідувачі йдуть на офер, а журнал показує, кого фільтр відсік би. Так перевіряють нове правило без втрати трафіку.
  • Режим «Трекер». Фільтр нікого не відсікає, лише рахує кліки, конверсії й гроші та позначає ботів у звітах. Підходить трафіку, якому потрібен облік, а не фільтрація, — докладніше в статті трекер для арбітражу.

В ArtisanClo тіньовий режим і режим «Трекер» працюють під час підключення PHP-файлом, фільтром Keitaro або шлюзом Binom; на JS-тезі потік фільтрує як звичайна клоака.

Оновлення й обслуговування

Ще одна відмінність, про яку згадують не одразу, — хто відповідає за актуальність коду на сайті.

  • JS-тег завантажується із сервісу під час кожного візиту. Коли сервіс покращує перевірки браузера, усі сайти з тегом отримують нову версію автоматично — на вашому боці нічого міняти не треба.
  • PHP-файл лежить на вашому хостингу й сам не оновлюється. Логіка перевірок і бази ботів живуть на боці сервісу, тож основна робота фільтра покращується й без вас, але нові можливості самого файлу потребують заміни. В ArtisanClo про це повідомляє плашка «Доступна нова версія PHP-файлу» з переліком того, чого не вміє ваша поточна версія.

Водночас налаштування потоку в обох випадках зберігаються в кабінеті, а не в коді на сайті. Змінили країни, суворість чи White Page — зміни діють з наступного візиту, перезаливати файл або вставляти тег наново не потрібно.

Окремо варто пам’ятати про права доступу. PHP-файл виконується на вашому сервері, тож беріть його лише з кабінету сервісу й не правте вручну: «доопрацьований» файл із чату чи форуму може робити на хостингу що завгодно.

PHP клоака чи JS-тег: що обрати

Ваша ситуація Що підходить
Конструктор сайтів без доступу до сервера JS-тег
Власний хостинг із PHP PHP-файл
WordPress Плагін, який ставить той самий серверний спосіб
Потрібен облік без фільтрації або тіньова перевірка правил PHP-файл
Трафік уже йде через Keitaro чи Binom Фільтр або шлюз трекера — див. Keitaro і клоака
Хостинг забороняє вихідні з’єднання JS-тег

Коротко: тег швидше поставити, серверний спосіб надійніший і дає більше режимів. Налаштування фільтрації при цьому не залежать від архітектури — вони зберігаються в потоці, і спосіб підключення можна змінити без правки правил. Про порівняння із самописними скриптами, які теж часто називають «PHP-клоакою», — у матеріалі хмарна клоака чи скрипт.

Порада. Хоч яку схему ви оберете, після встановлення відкрийте рекламне посилання в інкогніто й знайдіть свій візит у журналі кліків. Причина рішення одразу покаже, чи бачить фільтр справжній IP, чи спрацьовує перевірка і чи не віддає кеш стару копію.

Серверна фільтрація і правила майданчиків

Архітектура не змінює правового боку. Рекламні майданчики забороняють показувати системі перевірки оголошень не те, що побачить користувач, — байдуже, чи вирішує це сервер, чи браузер. Чесна користь будь-якої схеми — відсів ботів, скликування, спай-сервісів і нецільового гео, чиста статистика й облік грошей. Про це докладніше в статті клоака для арбітражу.

Підсумок

  • Серверна клоака вирішує ще до віддачі сторінки: не залежить від блокувальників, уміє коди відповіді, тіньовий режим і режим «Трекер», але потребує PHP, вихідних з’єднань і акуратності з кешем та проксі.
  • Клоака в браузері ставиться в будь-який <head> і бачить сигнали, недоступні серверу, але HTML сторінки вже в браузера, а скрипт, що не завантажився, нічого не ховає.
  • Найкраще з двох світів дає серверне рішення зі сторінкою перевірки: мережу й запит дивиться сервер, поведінку й середовище — короткий JavaScript у браузері.
  • Умови, можливості й склад тарифів — на сторінках можливостей і тарифів.

Часті запитання

01

Що таке server-side cloaking?

Це схема, у якій рішення про показ сторінки ухвалюється на сервері сайту, ще до відповіді браузеру. Сервер дивиться на IP, заголовки й параметри запиту, запитує рішення в сервісу фільтрації та віддає або офер, або нейтральну сторінку. Браузер відвідувача отримує вже готовий результат.

02

Чи бачить серверна клоака, що відвідувач — бот?

За мережею й заголовками — частково: дата-центр, проксі, явну програму замість браузера, відому адресу бота. Ознаки, які проявляються лише під час виконання JavaScript, сервер сам не побачить. Тому серверний спосіб часто доповнюють короткою сторінкою перевірки, де код у браузері збирає сигнали, яких бракує.

03

Чи працює PHP клоака на будь-якому хостингу?

Потрібен хостинг із PHP, дозволеними вихідними HTTPS-запитами та розширенням curl або увімкненим allow_url_fopen. На конструкторах сайтів без доступу до сервера PHP-файл не поставити, там лишається JS-тег. Якщо перед сайтом стоїть проксі хостингу, він має передавати справжній IP відвідувача.

04

Що буде, якщо сервіс фільтрації недоступний?

Залежить від архітектури. JS-тег, який не завантажився, не може сховати сторінку, і її бачать усі. Серверний спосіб чекає відповіді обмежений час, а далі діє за закладеним правилом: в ArtisanClo PHP-файл до доби працює за останньою отриманою відповіддю.

05

Чи можна використовувати серверну й браузерну клоаку одночасно?

На одному потоці досить одного способу підключення, ставити обидва на одну сторінку не потрібно. До того ж серверний спосіб в ArtisanClo вже вміє показати сторінку перевірки з JavaScript, тож сигнали браузера він теж отримує. Вибір зазвичай визначає хостинг, а не бажання поєднати.

Читайте також

9 хв читання

Клоака для арбітражу трафіку: навіщо баєрам і командам фільтр і де його межі

Клоака для арбітражу — фільтр між оголошенням і лендингом, який відсікає ботів, скликування, спай-сервіси та нецільове гео, а заразом рахує гроші. Розбираємо, які завдання він вирішує в закупівлі, що прямо забороняють майданчики і як виглядає робота без обіцянок пройти модерацію.

9 хв читання

Фільтрація трафіку: що це, що фільтрують і як не зрізати живих

Фільтрація трафіку вирішує щодо кожного візиту, чи пускати його на офер. Розбираємо, що саме відсіює фільтр трафіку, з яких рівнів він складається і як зрозуміти, що він приносить користь, а не шкоду.

9 хв читання

Як вибрати сервіс фільтрації трафіку: критерії та чек-лист для баєра

Сервіс фільтрації трафіку вирішує, кого пустити на офер, а кого ні, і від цього рішення залежать і бюджет, і конверсії. Зібрали критерії, за якими варто вибирати антибот, і питання, які треба поставити до оплати.

Перевірте свій трафік на ділі

Підключіть ArtisanClo до свого сайту — і побачите, хто насправді приходить із реклами та чому кожен клік отримав саме таке рішення.