TGViewer
Agentic World Agentic World @anti_notes · 1.21K subscribers
Post #73 1.15K
Парсинг тех, кто этого очень не хочет, или внутренности Cloudflare

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

Большую часть защиты на роботность в мире можно обойти заранее прогретой фабрикой браузеров. То есть, когда мы серверно запускаем браузер, ходим в гугл, гуляем из него по сайтам, двигаем по ним мышкой — в общем, создаём "историю", как будто мы человек. Но большая часть защиты построена на принципе "чтоб не мешали": сначала нас чекают мягко и пропускают даже с высоким скором роботности, а затем по мере нарастания подозрения повышают чекалку до максимальной. Прогрев и малый объем парсинга в таких ситуациях отводит большинство подозрений, и всё работает замечательно.

История с просто хождением через прокси, открытием в инкогнито и прочими трюками — работает, но на по-настоящему больших сайтах оно пускает лишь потому, что это разрешили. Если проблема роботов стоит остро, то под каждого юзера собирается сложный слепок его данных (т.н. "ml-фингерпринт"), который в себя включает как настоящие браузерный fingerprint на пару с ссетевым fingerpint, так и большое множество параметров юзера вообще. При желании найти того, кого уже задетектили, но он открыл еще один браузер — не очень сложно.

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

Это больно! Большинство вариантов обрубает даже до чекбокса (он не показывается, только загрузка). Если пробиться, то просто кликнуть мало — там очень хитрый shadow DOM.

Что пробовал
Перепробовал практически все стандартные подходы, которые обычно используют для обхода антиботов:
— Headless браузеры со stealth-патчами (Playwright + stealth, Camoufox)
— TLS-имперсонация с куками без браузера (curl_cffi)
— Альтернативные библиотеки автоматизации (DrissionPage + Chromium)
— Запуск через виртуальный дисплей (xvfb)
— undetected-chromedriver
— Клики по экрану через xdotool
— Полностью чистый Chrome без CDP/WebDriver вообще
— Попытки исправить WebGL окружение (SwiftShader)

Результат у всех вариантов по сути одинаковый: страница крутит "Just a moment...", либо чекбокс появляется, но не реагирует на клики (точнее клик как js-событие случается, но это не тот клик). Что-то из этого завелось, но на один раз - следующая показ чекбокса через несколько страниц уже снова отсекал такого клиента.

Вывод
Главный урок из всей этой истории — современные антиботы ушли ооочень далеко вперед и это огромная система корреляции сигналов, где одновременно анализируются: сетевой и браузерный fingerprint, tls, gpu/webgl, canvas, ip-репутация (не дай боже вам иметь подсеть IP хетцнера) и многое-многое другое.

Каждый сигнал можно подделать, но когда они начинают их склеивать и играть в вероятности - это становится инженерно очень больно и, честно говоря, никому с таким столкнуться не желаю 🤗😀
  • 👍 9
  • ✍ 3
  • 😱 2
  • 👾 1
More from @anti_notes
  1. Sep 18, 2026Пост конференций и полезных ссылок Конфы - я люблю. Послеживаю за расписанием на сайтике e…
  2. Sep 10, 2026А теперь хотелось бы поговорить про важное в эпоху дизрапта разработки продуктов: про скво…
  3. Sep 10, 2026Про deep tech night Конфа крутая! Собственно, как все tech-конфы Яндекса. Организация во в…
  4. Sep 5, 2026Это я еду на «главную tech-конференцию Яндекса» (они сами в рекламе так писали) deep tech…
  5. Sep 3, 2026Когда все-таки приехал в офис на встречу государственной важности, а там… (кручу назад, по…
  6. Aug 31, 2026Стартуем неделю с крутейшей темы: глубокий разбор того, как работает текстовый вотермарк в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →