Перейти к содержанию

bot-verifier: Модуль проверки ботов поисковых систем для NGINX

Установка

Вы можете установить этот модуль в любом дистрибутиве на базе RHEL, включая, но не ограничиваясь:

  • RedHat Enterprise Linux 7, 8, 9 и 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 и Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-bot-verifier
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-bot-verifier

Включите модуль, добавив следующее в верхнюю часть файла /etc/nginx/nginx.conf:

load_module modules/ngx_http_bot_verifier_module.so;

Этот документ описывает nginx-module-bot-verifier v0.0.14, выпущенный 2 февраля 2026 года.


Синопсис

http {
    # Обязательно: Настройте модуль realip для доверия вашим прокси-серверам
    set_real_ip_from 10.0.0.0/8;
    set_real_ip_from 172.16.0.0/12;
    set_real_ip_from 192.168.0.0/16;
    real_ip_header X-Forwarded-For;

    server {
        location / {
            bot_verifier on;
            bot_verifier_redis_host localhost;
            bot_verifier_redis_port 6379;
            bot_verifier_redis_connection_timeout 10;
            bot_verifier_redis_read_timeout 10;
            bot_verifier_redis_expiry 3600;
            bot_verifier_repsheet_enabled on;
        }
    }
}

Описание

Это модуль NGINX, предназначенный для проверки действительности актеров, утверждающих, что они являются индексаторами поисковых систем. Правильно отключать механизмы безопасности для действительных ботов поисковых систем, чтобы гарантировать, что ваши меры контроля не мешают позициям страниц в любых поисковых системах. Проблема в том, что заголовок User Agent не может быть доверен. Чтобы убедиться, что вы допускаете только действительных индексаторов поисковых систем, вы должны проверять в соответствии с их опубликованными стандартами. Этот модуль выполняет эту проверку и кэширует результаты, чтобы гарантировать, что вы не несете штрафы за проверку на каждом запросе.

Директивы

Следующие директивы используются только для конфигурации модуля.

bot_verifier

синтаксис: bot_verifier [on|off]

по умолчанию: off

контекст: location

фаза: access

Включает или отключает модуль. Модуль не будет действовать, если он не установлен на on.

bot_verifier_redis_host

синтаксис: bot_verifier_redis_host <string>

по умолчанию: localhost

контекст: location

фаза: access

Устанавливает хост Redis. Эта настройка используется для подключения к базе данных Redis, используемой для кэширования результатов поиска.

bot_verifier_redis_port

синтаксис: bot_verifier_redis_port <int>

по умолчанию: 6379

контекст: location

фаза: access

Устанавливает порт Redis. Эта настройка используется для подключения к базе данных Redis, используемой для кэширования результатов поиска.

bot_verifier_redis_connection_timeout

синтаксис: bot_verifier_redis_connection_timeout <int>

по умолчанию: 10

контекст: location

фаза: access

Устанавливает тайм-аут при подключении к Redis. Эта настройка используется для подключения к базе данных Redis, используемой для кэширования результатов поиска.

bot_verifier_redis_read_timeout

синтаксис: bot_verifier_redis_read_timeout <int>

по умолчанию: 10

контекст: location

фаза: access

Устанавливает тайм-аут при запросе к Redis. Эта настройка используется для подключения к базе данных Redis, используемой для кэширования результатов поиска.

bot_verifier_redis_expiry

синтаксис: bot_verifier_redis_expiry <seconds>

по умолчанию: 3600

контекст: location

фаза: access

Устанавливает тайм-аут при запросе к Redis. Эта настройка используется для подключения к базе данных Redis, используемой для кэширования результатов поиска.

bot_verifier_repsheet_enabled

синтаксис: bot_verifier_repsheet_enabled [on|off]

по умолчанию: off

контекст: location

фаза: access

Включает черный список неудачных актеров в Repsheet. Предполагает, что кэш Repsheet находится на уже настроенном сервере redis.

Проверка функциональности

Чтобы убедиться, что модуль работает правильно, вам нужно выполнить запрос, который вызовет случаи неудачи и успеха.

Сначала убедитесь, что realip настроен:

http {
    set_real_ip_from 127.0.0.1;
    real_ip_header X-Forwarded-For;
    # ... остальная конфигурация
}

Чтобы вызвать случай неудачи, выполните следующий запрос:

curl -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html" localhost:8888

Это выполнит запрос, который идентифицирует себя как бот Google. Процедура обратного и прямого поиска не сработает, и вы получите ответ 403.

Чтобы убедиться, что проверка работает, когда бот идентифицирован, выполните следующий запрос:

curl -H "X-Forwarded-For: 66.249.66.1" -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html" localhost:8888

Когда модуль realip настроен на доверие 127.0.0.1 (localhost), он будет использовать значение заголовка X-Forwarded-For как IP клиента. Запрос должен пройти успешно и вернуть нормальный ответ, потому что 66.249.66.1 является действительным IP Google.

Настройка для разработчиков

Этот модуль содержит полностью самодостаточную среду разработки. Это сделано для того, чтобы работа над модулем не мешала другим установкам NGINX. Чтобы настроить среду, выполните команду script/bootstrap. Это создаст следующие директории:

vendor - Установка NGINX будет находиться здесь
build - Установка NGINX будет находиться здесь

Файл nginx.conf в корне этого репозитория будет связан с build/nginx/conf/nginx.conf, чтобы упростить изменения конфигурации. Вы можете запустить NGINX, используя следующую команду:

build/nginx/sbin/nginx

Файлы журналов доступны по адресу build/nginx/logs. Вы можете остановить сервер, выполнив

build/nginx/sbin/nginx -s stop

Если вы вносите изменения в модуль, вы можете перекомпилировать их, выполнив make compile. Не забудьте перезапустить NGINX после успешного завершения.

Запуск тестового набора

Этот репозиторий поставляется с тестовым набором, который использует библиотеку Test::Nginx. Чтобы запустить тест, вам нужно установить следующие библиотеки:

cpanm -S install Test::Nginx Test::Nginx::Socket

После установки библиотек просто выполните make, и набор тестов будет запущен. Если вы вносите изменения в этот модуль, пожалуйста, убедитесь, что вы запустили тестовый набор перед этим. Любые изменения, которые ломают тестовый набор, не будут приняты.

GitHub

Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-bot-verifier.