Каталог статей
Недавно я проверил административную панель сайта, и среднее количество посещений в день составляет всего несколько тысяч.
Когда я открыл Google Analytics, я был совершенно ошеломлен.
Однажды количество просмотров моей страницы внезапно подскочило до более чем 20 000, и я был в восторге, думая, что наконец-то стал знаменитым. Но при более внимательном изучении распределения трафика по браузерам я обнаружил, что 90% трафика поступает из чего-то под названием "HeadlessChrome".
Я спросил у ChatGTP, что это за браузер? Это новая версия Chrome?
Искусственный интеллект ответил, что это не браузер.
Это робот.

Что же такое HeadlessChrome?
HeadlessChrome, как следует из названия, — это безголовый режим Chrome. Chrome — это браузер, которым вы пользуетесь каждый день. Безголовый режим отключает графический интерфейс браузера, позволяя ему работать в фоновом режиме, используя только командную строку.
Здесь нет адресной строки, нет панели закладок, ничего видимого. Это просто фрагмент кода, который запускает движок браузера, загружает вашу веб-страницу, а затем извлекает из неё контент.
Обычные пользователи никогда бы не стали использовать что-то подобное для просмотра веб-страниц. Мы с вами открываем Chrome, чтобы читать новости, смотреть видео и делать покупки на Taobao . HeadlessChrome открывает вашу веб-страницу, чтобы собрать ваши данные и уйти.
Таким образом, если в вашей статистике вы видите, что на HeadlessChrome приходится 80% или даже 90% трафика, вы можете сделать вывод, что этот трафик на 100% состоит из ботов.
Откуда берется весь этот бот-трафик?
Честно говоря, источники очень разнообразны.
Наиболее распространенный пример — веб-скрейпинг. Некоторые компании или частные лица используют фреймворки автоматизации, такие как Puppeteer, Playwright или Selenium, для запуска безголовых браузеров и пакетного сбора содержимого веб-страниц. Некоторые собирают цены на товары, другие — новостные статьи, а третьи — данные о конкурентах.
А еще есть искусственный интеллект. Сейчас различные инструменты ИИ, поисковые системы на основе ИИ и системы поиска информации на основе ИИ обрабатывают веб-страницы в фоновом режиме. Когда вы публикуете статью, десятки агентов ИИ могут одновременно читать ваш контент.
Другой, более тонкий метод — это использование собственных запланированных задач. Например, вы можете запустить скрипт мониторинга SEO , который будет проверять изменения позиций определенной страницы каждый час, используя HeadlessChrome. Или вы можете настроить автоматическую службу создания скриншотов, которая будет периодически делать снимки страницы, также используя этот инструмент.
Самый раздражающий тип — последний: вредоносное сканирование. Автоматизированные скрипты запускаются для сканирования вашего веб-сайта на наличие уязвимостей, тестирования интерфейса авторизации в административной панели и даже массовой рассылки спам-комментариев.
Как система сбора статистики идентифицирует HeadlessChrome?
На самом деле всё довольно просто. Каждый браузер при доступе к веб-странице включает поле User-Agent в заголовок запроса, сообщая серверу, «кто я». В HeadlessChrome по умолчанию User-Agent содержит строку "HeadlessChrome". Ваша система аналитики узнает об этом, как только обработает это поле.
Однако, если разработчик веб-краулера внесет небольшие изменения в код, заменив User-Agent на обычный идентификатор Chrome или Safari, вы вообще не сможете это определить по статистике. В этом и заключается настоящая головная боль.
用Cloudflare WAF блокирует работу безголового Chrome.
Хорошо, мы определили проблему. Как нам её решить?
Наиболее прямое и эффективное решение — перехват трафика на уровне CDN или WAF. Не ждите, пока трафик достигнет вашего сервера, прежде чем обрабатывать его; блокируйте его на пороге сервера.
Если вы используете Cloudflare, то на самом деле это очень просто.
Войдите в консоль Cloudflare, выберите целевой домен, найдите раздел «Безопасность», затем нажмите «WAF», перейдите в раздел «Пользовательские правила» и создайте новое правило.
Название правила может быть любым, например, "Challenge Headless Chromeи тому подобное.

Просто запомни это.
Выбор поляUser AgentВыбор оператораcontains, введите значениеHeadlessChrome.
На этом этапе вы увидите выражение предварительного просмотра, которое выглядит следующим образом:http.user_agent contains "HeadlessChrome"
Затем выберите в операцииManaged ChallengeилиJS Challenge.
- Я предлагаю выбрать
Managed ChallengeПотому что его метод проверки более интеллектуальный и оказывает меньшее влияние на реальных пользователей.
Наконец, нажмите кнопку «Развернуть», и это правило вступит в силу глобально.
Cloudflare располагает сотнями узлов по всему миру, настроенных на синхронизацию второго уровня. По сути, трафик безголового браузера блокируется в тот же момент, когда вы нажимаете кнопку.
Слепые пятна в системах защиты и передовых методов профилактики
Однако есть одно «но».
Одного лишь сопоставления User-Agent достаточно для решения большинства задач, связанных с настройкой веб-краулеров по умолчанию. Однако этого недостаточно против опытных краулеров.
Начиная с Chrome 110, Google представила новый безголовый режим, использующий...--headless=newПараметры запуска. В этом режиме User-Agent в HeadlessChrome точно такой же, как и в обычном Chrome, и вы совершенно не заметите разницы.
Существуют также и те, кто активно занимается подделкой. Разработчики веб-краулеров напрямую заменяют User-Agent обычным идентификатором Chrome или мобильного браузера в коде, что делает невозможным сопоставление даже с использованием самых точных правил.
В этой ситуации Cloudflare также предлагает две дополнительные расширенные функции, которые можно включить.
Первая называется проверкой целостности браузера.
Чтобы включить эту функцию, перейдите в раздел Безопасность → Настройки → Проверка целостности браузера и включите соответствующий переключатель.

Он выявляет аномальный трафик по отпечаткам TLS. Как бы хорошо вы ни маскировали User-Agent, отпечаток TLS подделать невозможно.
Второй режим называется «Режим боя роботов» или «Режим сражения роботов».
Путь к нему: Безопасность → Автоматические программы → Режим борьбы с ботами, который также должен быть включен.

Эта функция использует поведенческие характеристики для определения принадлежности трафика ботам, такие как частота запросов, траектория движения мыши, время пребывания на странице и т. д.
Бесплатная версия автоматически применяет управляемые проверки к подозрительным ботам, в то время как платная версия позволяет более детально настраивать правила.
От спама до веб-сканеров — битва между злоумышленниками и защитниками никогда не прекращается.
В связи с этим мне вдруг кое-что пришло в голову.
На самом деле, подобное противостояние между наступательными и оборонительными действиями разворачивалось на протяжении всей истории интернета. То же самое происходило и в первые годы существования спама: вы блокировали одну функцию, а отправитель её менял. Вы использовали фильтрацию по ключевым словам, а отправитель отсеивал чувствительные слова. Вы устанавливали ограничения на частоту рассылок, а отправитель уменьшал частоту отправки.
Сегодня это превратилось в битву между веб-сайтами и веб-краулерами. Вы используете фильтрацию по User-Agent, а другая сторона имитирует User-Agent. Вы используете TLS-отпечатки, а другая сторона начинает изучать, как имитировать TLS-отпечатки.
Технологии могут меняться, но лежащая в их основе логика теории игр остается неизменной.
Однако для большинства владельцев сайтов достаточно выполнить предыдущий шаг.
80% трафика Chrome в безголовом режиме поступает от поисковых роботов со стандартной конфигурацией, которые слишком ленивы, чтобы маскироваться, и эту проблему можно решить с помощью одного правила WAF. Что касается роботов со сложной маскировкой, то, если у вас нет особо конфиденциальных данных, требующих защиты, чрезмерно беспокоиться не стоит.
После включения всех необходимых функций, по сути, всё готово.
В заключение я хотел бы добавить еще одну вещь.
Многие считают, что чем больше трафика на сайте, тем лучше. Однако, если вы не можете отличить реальный трафик от ботов, эти заоблачные цифры — всего лишь показатели тщеславия. Они даже могут ввести вас в заблуждение, заставляя думать, что определенный контент особенно популярен, хотя на самом деле это просто веб-сканер, который массово загружает вашу страницу.
Понимание истинной природы транспортного потока гораздо важнее, чем погоня за статистическими данными.
Если у вас есть друзья, которые занимаются веб-сайтами или SEO, смело пересылайте им эту статью. Многие люди могут не осознавать, что их сайты подвергаются атакам большого количества ботов, и не знают, что решить эту проблему на самом деле довольно просто.
Раз уж вы дочитали до этого места, если вам это показалось полезным, пожалуйста, поставьте лайк и поделитесь этим постом. Если вы хотите получать обновления первыми, вы также можете подписаться на меня!
Спасибо за прочтение моей статьи. До встречи в следующий раз.
Надеюсь, статья «Аномальный всплеск трафика в HeadlessChrome? Пошаговое руководство из 3 шагов по его тщательной блокировке с помощью Cloudflare (с правилами WAF)», опубликованная в блоге Чен Вэйляна ( https://www.chenweiliang.com/ ), окажется для вас полезной.
Не стесняйтесь делиться ссылкой на эту статью: https://www.chenweiliang.com/cwl-34500.html
