Hushfort

Как распознать и заблокировать поддельный Googlebot в WordPress?

Автор: Eureka Studio · Обновлено

Коротко

Настоящий Googlebot приходит из опубликованных Google диапазонов IP; всё, что использует это имя с других адресов, — подделка, и её можно блокировать. Для остальных вредных ботов задайте каждому IP бюджет запросов в минуту, где дорогие запросы вроде поиска и 404 стоят больше, отвечайте IP сверх бюджета коротким 429 и всегда пропускайте оформление заказа.

Шаги

  1. 1Шаг 1

    Найдите самозванцев в своём трафике

    Многие боты называют себя Googlebot, потому что сайты редко его блокируют. Имя скопировать легко, IP-адрес — нет. Загрузив официальные списки Google и Bing, Hushfort помечает «Googlebot» с любого другого адреса как поддельного поискового бота.

    «Последние блокировки» в модуле «Защита от нагрузки»: поддельный поисковый бот, выдающий себя за Googlebot, с 203.0.113.120 и два IP сверх бюджета — всё записано в режиме наблюдения
  2. 2Шаг 2

    Включите «Защиту от нагрузки» в режиме наблюдения

    В Hushfort откройте «Защита от нагрузки» и включите модуль. Режим по умолчанию — «Только записывать — режим наблюдения (рекомендуется для начала)»: он записывает, какие IP упёрлись бы в лимит, никого не блокируя. Оставьте «Поддельные поисковые боты» включёнными.

    «Защита от нагрузки» включена в режиме наблюдения, «Поддельные поисковые боты» включены
  3. 3Шаг 3

    Задайте бюджет, который честно оценивает запросы

    Каждый IP получает «Бюджет на IP в минуту» (по умолчанию 120 баллов). Просмотр страницы стоит 1, поиск — 5, вызов XML-RPC — 10, а 404 добавляет 4. Оформление заказа и обратные вызовы платёжных систем бесплатны.

    Бюджет на IP в минуту — 120 баллов со списком стоимости, длительность блокировки 10 минут, поддельные поисковые боты и сканирование 404 включены
  4. 4Шаг 4

    IP сверх бюджета получают короткую паузу

    В режиме защиты IP, израсходовавший бюджет, получает страницу 429 «Слишком много запросов» на время блокировки — по умолчанию 10 минут. Проверенные поисковые боты не ограничиваются, а оформление заказа продолжает работать.

    На поиск посетителя сверх бюджета пришёл ответ: «Слишком много запросов за короткое время. Попробуйте снова через несколько минут».
  5. 5Шаг 5

    Проверьте журнал, затем переключитесь на защиту

    После нескольких дней в режиме наблюдения просмотрите «Последние блокировки». Если реальных посетителей там нет, выберите режим «Защита — останавливать IP сверх бюджета ответом 429» и сохраните.

    Режим «Защиты от нагрузки» изменён на «Защита — останавливать IP сверх бюджета ответом 429» и сохранён

Почему это важно

Поддельный Googlebot легко распознать по IP: настоящий приходит только с адресов из официальных списков Google, поэтому «Googlebot» с любого другого адреса можно блокировать. Остальных плохих ботов сдерживает бюджет запросов в минуту на каждый IP, при котором оформление заказа всегда проходит.

Не каждый всплеск нагрузки — это успех. Некоторые боты обходят сайт гораздо агрессивнее любого человека: забивают поиск случайными словами, проверяют сотни несуществующих файлов или выдают себя за Googlebot, чтобы никто не решился их заблокировать. Каждый такой запрос минует кэш страниц и заставляет WordPress и базу данных выполнять реальную работу.

На виртуальном хостинге это значит медленные страницы, упор в лимиты CPU, а иногда и приостановленный аккаунт. В магазине — реальные покупатели ждут, пока бот гоняет поиск.

Весь фокус в том, чтобы отличать дорогие запросы от дешёвых. Подсчёт «запросов в минуту» уравнивает просмотр кэшированной страницы и некэшируемый поиск. Если оценивать запросы по стоимости, можно быть щедрым к настоящим посетителям и строгим к шаблонам, которые создают только боты.

Частые ошибки

  • Блокировка по user agent. Назваться Googlebot может кто угодно, а блокировка по имени блокирует и настоящего. Проверяйте по IP.
  • Один лимит на всё. Плоское правило «запросов в минуту» либо пропускает поисковый флуд, либо ловит покупателей, которые быстро листают страницы. Оценивайте запросы по стоимости.
  • Блокировка оформления заказа. Лимит, который может остановить обратный вызов платёжной системы или оформление заказа, стоит вам реальных денег. Оставляйте их бесплатными.
  • Долгие баны. Бан на сутки для общего IP может отрезать целый офис или мобильную сеть. Коротких пауз достаточно, чтобы сбить ботов с ритма.
  • Ожидание, что плагин остановит сетевой флуд. Трафик, способный забить канал сервера, до WordPress не доходит. Это задача для вашего CDN.

Без плагина

Проверьте Googlebot вручную. Для подозрительного IP из журнала доступа:

host 66.249.66.1
# 1.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-1.googlebot.com.
host crawl-66-249-66-1.googlebot.com
# crawl-66-249-66-1.googlebot.com has address 66.249.66.1

Оба направления должны совпадать и заканчиваться на googlebot.com или google.com. Google также публикует диапазоны IP своих краулеров в виде JSON-файла, с которым можно сверяться.

Ограничьте частоту запросов на сервере. В Nginx можно ограничить число запросов с одного IP:

# in the http block
limit_req_zone $binary_remote_addr zone=perip:10m rate=60r/m;

# in the server block
location / {
    limit_req zone=perip burst=20 nodelay;
    limit_req_status 429;
    try_files $uri $uri/ /index.php?$args;
}

Серверные правила работают быстро, но ничего не знают о WordPress. Они не отличают оформление заказа от поиска, требуют root-доступа, которого большинство тарифов хостинга не даёт, а вручную поддерживать список IP Google утомительно. Ещё один хороший вариант — файрвол CDN, если ваш позволяет писать правила.

Если что-то пошло не так

  • Реальный посетитель получил 429. Найдите его IP в журнале. Если это офис или инструмент, которым вы пользуетесь, добавьте IP в белый список. Подумайте, не поднять ли бюджет в минуту.
  • Search Console сообщает об ошибках сканирования. Настоящие краулеры Google не ограничиваются, поэтому проверьте, не вызваны ли ошибки правилом сервера или CDN вне Hushfort.
  • Сайт всё равно не справляется. Возможно, флуд слишком велик для любого плагина. Включите режим защиты от атак в своём CDN. Аварийный режим Hushfort может сам включить в Cloudflare режим «Under Attack» с вашим собственным API-ключом, а потом выключить его.

С Hushfort

«Защита от нагрузки» входит в Hushfort Pro — платное дополнение к Hushfort Security, бесплатному плагину безопасности для WordPress.

Уровень «Защита от нагрузки» в Hushfort по умолчанию даёт каждому IP бюджет 120 баллов в минуту. Просмотр страницы стоит 1, admin-ajax GET — 1, POST — 2, REST GET — 2, POST — 3, добавление в корзину — 3, поиск — 5, прочие POST — 5, XML-RPC — 10, а 404 добавляет 4. Оформление заказа, обратные вызовы платёжных систем, WP-Cron и экраны wp-admin бесплатны.

  • IP сверх бюджета получают короткий 429 и паузу на 10 минут.
  • Поддельные Googlebot и Bingbot, которые называются этим именем, но приходят с IP не из официального списка, блокируются. Проверенные поисковые боты не ограничиваются. Единственный исходящий запрос — загрузка публичных списков IP краулеров Google и Bing.
  • Аварийный режим может включить в Cloudflare режим «Under Attack» с вашим собственным API-ключом.
  • Модуль стартует в режиме наблюдения.

В нашем собственном тесте IP сверх бюджета всё равно успешно оформил заказ, а на остальные его запросы приходил 429.

Частые вопросы

Как понять, что визит Googlebot настоящий?

Проверьте IP. Google публикует диапазоны IP своих краулеров, а обратный DNS-запрос для IP настоящего Googlebot заканчивается на googlebot.com или google.com. User agent Googlebot с любого другого IP — подделка.

Не навредит ли блокировка поддельных Googlebot моему SEO?

Нет, если проверка идёт по IP. Настоящие краулеры Google и Bing распознаются и не ограничиваются, так что отсекаются только самозванцы.

Что означает статус 429?

Это Too Many Requests — «слишком много запросов». Он просит клиента притормозить. 429 от Hushfort действует недолго, так что реальный человек, который просто был очень активен, сможет продолжить после паузы.

Может ли плагин остановить DDoS-атаку?

Атаку сетевого уровня — нет. Такой трафик перегружает сервер ещё до запуска WordPress. Настоящий щит здесь — CDN вроде Cloudflare; плагин справляется с флудом, который доходит до WordPress.

Почему поиск и 404 стоят дороже?

Поиск выполняет запрос к базе данных, а 404 — обычно сканер, который ищет файлы. И то и другое обходится серверу намного дороже, чем просмотр кэшированной страницы.

Сообщить об ошибке или предложить функцию

Ваше сообщение попадёт прямо к команде, которая разрабатывает Hushfort.

О чём сообщение?

Используется только для ответа вам.

Мы используем эти данные только для ответа вам. Конфиденциальность