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

bot-verifier: Модуль проверки ботов для индексации в NGINX

Установка на Debian/Ubuntu

Эти документы относятся к APT пакету nginx-module-bot-verifier, предоставляемому репозиторием GetPageSpeed Extras.

  1. Настройте APT репозиторий, как описано в настройке APT репозитория.
  2. Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-bot-verifier
Показать дистрибутивы и архитектуры
| Дистрибутив | Версия            | Компонент   | Архитектуры   |
|-------------|-------------------|-------------|----------------|
| debian      | bookworm          | main        | amd64, arm64   |
| debian      | bookworm-mainline | main        | amd64, arm64   |
| debian      | trixie            | main        | amd64, arm64   |
| debian      | trixie-mainline   | main        | amd64, arm64   |
| ubuntu      | focal             | main        | amd64, arm64   |
| ubuntu      | focal-mainline    | main        | amd64, arm64   |
| ubuntu      | jammy             | main        | amd64, arm64   |
| ubuntu      | jammy-mainline    | main        | amd64, arm64   |
| ubuntu      | noble             | main        | amd64, arm64   |
| ubuntu      | noble-mainline    | main        | amd64, arm64   |

Статус

[BETA] Этот модуль был протестирован на нескольких продуктивных веб-сайтах. Он еще не был оценен в условиях масштабирования. Если вы хотели бы рассмотреть возможность тестирования этого на большом масштабе, я буду рад помочь и выделить время на исправление любых проблем.

Сводка

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 <строка>

по умолчанию: 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 <секунды>

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

контекст: location

фаза: access

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

bot_verifier_repsheet_enabled

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

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

контекст: location

фаза: access

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

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

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

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

Это подделает заголовок X-Forwarded-For и будет притворяться, что он исходит из действительного адреса 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, и набор тестов будет запущен. Если вы отправляете изменения в этот модуль, пожалуйста, убедитесь, что вы запустили тестовый набор перед этим. Любые изменения, которые нарушают работу тестового набора, не будут приняты.