Привет, дорогой читатель. Сегодня мы поговорим о клоакинге с технической стороны.
Клоакинг на сегодняшний день это куча логических проверок входящих запросов со стороны сервера с клоакой, которые по отдельности бесполезны, но в купе представляют мощный инструмент для
Ранний период. Поисковые системы. Конец 90-х, начало 2000-х.
Начинались клоаки с очень простой логики проверки запроса. Проверялся заголовок User-Agent, он отправляется всеми браузерами и поисковыми роботами. Тогда было всё очень просто, роботы отправляли специфические для них значения по типу googlebot, bingbot, facebot. И это был рабочий подход долгое время. Пользователь получал нужный контент, а поисковой робот страницу с кучей ключевых слов.
Позже добавились проверки по диапазонам IP адресов, но работало это не долго. Интернет всё больше и больше входил в жизнь обывателя, поисковики наращивали инфраструктуру и списки IP адресов быстро теряли свою актуальность, что приводило к запалу и последующим санкциям со стороны поисковых систем. Из-за этого к примитивной проверке IP адресов добавились обратные DNS запросы.
Поведенческий клоакинг. 2005 — 2014.
Развитие интернета неслось со скоростью арбитражника, который спалил связку. Поисковики начали во всю имитировать браузеры пользователей. Клоакинг сервисы не успевали находить новые IP адреса. Нужно было что-то делать и попытки нахлобучить поисковики начали принимать более технологический характер.
Если поисковик имитирует пользователя, значит он должен вести себя как пользователь. И понеслось:
- JavaScript. Поисковики на заре битвы не умели выполнять JavaScript сценарии, а уж тем более детектить, что страница визуально меняется. Потому поисковик получал страницу со всем, что пологается ему видеть, а обычный пользователь получал ту же страницу, но она быстро визуально менялась на то, что он должен был увидеть.
- Последовательность действий. Не бывает так, что пользователь зашёл на страницу, а CSS/JS/изображения не скачал, а если и скачал, то точно не одновременно с максимально похожими временными интервалами. Со стороны сервиса клоаки такую проверку реализовать крайне просто.
- Flash и Java плагины. Первые попытки фингерпринтинга. Проверки были надёжными, но ввиду непродолжительности существования вышеупомянутых, прожило не долго.
Эра headless-браузеров и фингерпринтинга (2012 — 2018)
Появление PhantomJS, а затем Headless Chrome кардинально изменило баланс сил. Модерирующие системы начали полноценно рендерить страницы, исполнять JS и всё эффективнее проходить fingerprint. Клоакинг индустрия реагировала:
- Проверка headless режимов, присущих headless-браузерам.
- Детекция расхождений между заявленным User-Agent и реальными возможностями рендеринга. Ннапример, отсутствие поддержки определённых CSS-фич в headless-сборках.
- Canvas/WebGL fingerprinting. Рендеринг тестового изображения и сравнение с средними по палате метриками.
- Проверка таймингов исполнения JS. Исполнение JS в headless-браузере отличимо от браузера обычного пользователя. Оно быстрое, не "шумное".
- TLS/JA3 фингерпринтинг. Сопоставление порядка cipher suites и extensions в ClientHello с ожидаемым для заявленного User-Agent браузера. Про это я напишу отдельную статью потому, что эта технология легла в основу современного фингерпринтинга.
Продолжение 👇
