Как это работает
Три слоя, одна ссылка
Вы добавляете на лендинг один скрипт. Первый слой есть у всех в этой нише. Второй мы построили сами, а третий - то, что делает второй окупаемым.
Что делает каждый слой
Принадлежность сети, до рендера страницы
Работает по самому запросу: адрес, сеть, к которой он относится, и заголовки.
Здесь закрываются диапазоны площадок, объявленные краулеры и дата-центровые сети. Это слой для трафика, который сам о себе объявляет: сканер TikTok приходит целиком с сетей ByteDance, а краулер Meta - с собственных сетей Meta.
Две вещи, которые здесь делают неправильно почти везде. Определение номера сети для некоторых крупных IPv6-диапазонов возвращает пустоту, поэтому опубликованные диапазоны адресов сверяются вместе с ним, а не вместо. И тот же токен краулера, пришедший с домашнего интернета, трактуется как покупатель во встроенном браузере приложения, потому что это он и есть.
Движок окружения браузера, после загрузки страницы
Работает для посетителей, которых первый слой не смог отнести ни к кому. Этого слоя в нише обычно нет.
Трафик модерации с обычных облачных адресов, с полными заголовками и совершенно нормальным user-agent, невидим для всего, что решает по запросу. На живых кампаниях мы его видим: со стороны сервера отделять там попросту нечего.
Против него работает движок межслойной согласованности окружения, изначально сделанный для обратной задачи: определить, когда браузер врёт о том, чем он является. Окружение модерации - это машина, выдающая себя за чей-то телефон. Какие именно сигналы он использует и с какой точностью, мы не публикуем - по очевидной причине.
Когда этот слой пропускает посетителя, оффер подставляется на той же ссылке. Когда не пропускает или не успевает отработать, на экране остаётся белая страница.
Перенос вердикта, чтобы он не пропал на одном визите
Работает постоянно, превращая подтверждённый вердикт браузера в метку на адресе.
Вердикту по окружению нужны несколько секунд на странице: он точен и редок одновременно. Читать его как вердикт об одном визите значит выбросить почти всю его ценность.
Вместо этого подтверждённое окружение модерации становится меткой на адресе, и метка закрывает все последующие запросы с него, включая те, что приходят за одну десятую секунды и не выполняют скриптов. Это единственный путь от редкого точного сигнала к покрытию реального трафика.
Порядок важен в обе стороны. Фильтр, который начинает с отпечатка браузера, решает лёгкую половину дважды, а сложную не решает вовсе. Фильтр, который смотрит только на запрос, до сложной половины не доходит. Первый слой дёшев и надёжен, второй дорог и редок, а третий - то, ради чего за второй имеет смысл платить.
Почему решение принимается на странице
Построить это можно тремя способами, и отличаются они одним: когда принимается решение. От этого зависит, какие данные вообще существуют к этому моменту.
Фильтр на редиректе выбирает до первого байта, поэтому никогда не видит того, что знает браузер. Этого хватает для трафика, который сам о себе объявляет, и ни для чего больше. Решение на странице стоит нескольких сотен миллисекунд и покупает тот слой, который действительно отделяет неатрибутируемого модератора от покупателя.
Оно же переворачивает поведение по умолчанию в полезную сторону. Редирект обязан сначала опознать краулера, чтобы придержать оффер. Страница, которая оффер подставляет, придерживает его от всего, что не выполняет скрипты, никого при этом не опознавая.
Что делаете вы
Держите обе страницы на одной ссылке
Белая страница и есть страница. Оффер - это то, что подставляется.
Ставите скрипт
Один тег в head. Без сборки, без своего сервера, без правок DNS.
Смотрите журнал
Каждый отфильтрованный визит записан вместе с причиной, так что видно, ловит ли фильтр модерацию или тихо прячет оффер от покупателей. Второй сбой дороже, и его как раз никто не измеряет.
Частые вопросы
- Почему решение принимается в JavaScript, а не на сервере?
- Потому что самый сложный случай виден только в браузере. Трафик модерации с обычных облачных адресов, с полными заголовками и нормальным user-agent, со стороны сервера неотличим от живого посетителя. Есть и второй эффект: всё, что не выполняет скрипты, по умолчанию получает белую страницу, а по замерам именно так ведёт себя большая часть трафика модерации.
- Что будет, если JavaScript отключён?
- Посетитель увидит белую страницу. Это и есть нужное направление отказа: когда мы не уверены, придерживается оффер, а не наоборот.
- Меняется ли адрес страницы?
- Нет. Подмена происходит на самой странице: ни редиректа, ни второго домена, ни цепочки, по которой можно пройти.
- Насколько быстро принимается решение?
- Первый слой отрабатывает до рендера вашей страницы. Второй запускается сразу после загрузки скрипта и не ждёт таймера бездействия: покупатель не должен смотреть на белую страницу, пока фильтр думает.
- Чего он не ловит?
- Живого модератора с адреса, который мы не можем отнести к сети, на настоящем браузере и с обычным поведением. Этого честно не ловит никто в нише, и мы предпочитаем это написать, а не продать вам цифру.
Записаться в лист ожидания
Входить пока некуда. Оставьте почту: напишем, когда откроется закрытая бета, и приложим настройки под ваш источник трафика.