Серверная клоака или клоака в браузере: как устроены 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 к своему сайту, посмотрите, кто на самом деле приходит по рекламе, и почему каждый клик получил своё решение.