bot-verifier: Um módulo de verificação de bots de índice de busca para NGINX
Instalação
Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:
- RedHat Enterprise Linux 7, 8, 9 e 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 e 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
Habilite o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:
load_module modules/ngx_http_bot_verifier_module.so;
Este documento descreve o nginx-module-bot-verifier v0.0.17 lançado em 06 de fevereiro de 2026.
Módulo NGINX para verificar identidades de bots de mecanismos de busca por meio de consulta DNS reversa/direta.
Este módulo valida atores que afirmam ser rastreadores de mecanismos de busca (Google, Bing, Yahoo, Baidu, Yandex) executando o método de verificação DNS recomendado por cada provedor de busca. Ele impede que atores maliciosos contornem medidas de segurança falsificando strings de User-Agent de bots.
Um substituto direto do ngx_bot_verifier original, de Aaron Bedra.
Recursos
- Verificação DNS reversa/direta seguindo as diretrizes dos provedores de mecanismos de busca
- Resolução DNS assíncrona usando o resolver integrado do NGINX (não bloqueante)
- Cache em Redis com pool de conexões para minimizar a sobrecarga de consultas DNS
- Provedores configuráveis - adicione provedores de bots personalizados além dos padrões
- Design fail-open - erros de verificação permitem que as requisições passem, para evitar bloquear tráfego legítimo
- Suporte a Real IP via
ngx_http_realip_modulepara implantações atrás de proxies
Provedores Suportados
Provedores Integrados
| Provedor | Domínios Verificados |
|---|---|
google.com, googlebot.com |
|
| Bing | search.msn.com |
| Yahoo | yahoo.com |
| Baidu | crawl.baidu.com |
| Yandex | yandex.com, yandex.net, yandex.ru |
Provedores Personalizados
Adicione provedores personalizados usando a diretiva bot_verifier_provider:
bot_verifier_provider facebook .facebook.com .fbcdn.net;
bot_verifier_provider apple .applebot.apple.com;
Provedores personalizados são verificados além dos provedores integrados.
Sinopse
http {
# Required: Configure realip module to trust your upstream proxies
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;
real_ip_recursive on;
# Required: Configure resolver for non-blocking DNS lookups
resolver 8.8.8.8 8.8.4.4 valid=300s ipv6=off;
resolver_timeout 5s;
server {
location / {
bot_verifier on;
bot_verifier_redis_host localhost;
bot_verifier_redis_port 6379;
bot_verifier_redis_expiry 3600;
# Optional: Add custom providers
bot_verifier_provider applebot .applebot.apple.com;
}
}
}
Diretivas
bot_verifier
syntax: bot_verifier on|off;
default: off
context: http, server, location
Habilita ou desabilita a verificação de bots. Quando habilitada, requisições com strings de User-Agent que correspondem a padrões de bots conhecidos são verificadas por meio de consulta DNS.
bot_verifier_provider
syntax: bot_verifier_provider <name> <domain1> [domain2] ...;
default: none
context: http, server, location
Adiciona um provedor de bots personalizado para verificação. O name é comparado com strings de User-Agent (sem diferenciar maiúsculas de minúsculas). Os domínios são usados para verificar o resultado da consulta DNS reversa.
Exemplo:
bot_verifier_provider facebook .facebook.com .fbcdn.net;
bot_verifier_provider apple .applebot.apple.com;
bot_verifier_provider duckduckgo .duckduckgo.com;
Provedores personalizados são verificados além dos provedores integrados (Google, Bing, Yahoo, Baidu, Yandex).
bot_verifier_redis_host
syntax: bot_verifier_redis_host <hostname>;
default: localhost
context: http, server, location
Hostname do servidor Redis para armazenar em cache os resultados de verificação.
bot_verifier_redis_port
syntax: bot_verifier_redis_port <port>;
default: 6379
context: http, server, location
Porta do servidor Redis.
bot_verifier_redis_connection_timeout
syntax: bot_verifier_redis_connection_timeout <milliseconds>;
default: 10
context: http, server, location
Timeout para estabelecer conexões com o Redis.
bot_verifier_redis_read_timeout
syntax: bot_verifier_redis_read_timeout <milliseconds>;
default: 10
context: http, server, location
Timeout para operações de leitura no Redis.
bot_verifier_redis_expiry
syntax: bot_verifier_redis_expiry <seconds>;
default: 3600
context: http, server, location
TTL para resultados de verificação em cache. Após a expiração, a próxima requisição do mesmo IP dispara uma nova verificação DNS.
bot_verifier_redis_database
syntax: bot_verifier_redis_database <number>;
default: 0
context: http, server, location
Número do banco de dados Redis a ser usado para armazenar os resultados de verificação.
bot_verifier_redis_password
syntax: bot_verifier_redis_password <password>;
default: empty
context: http, server, location
Senha para autenticação no Redis. Deixe vazio se o Redis não exigir autenticação.
Resolução DNS Assíncrona
Quando a diretiva resolver do NGINX está configurada, o módulo realiza consultas DNS de forma assíncrona usando o resolver integrado do NGINX. Esta é a configuração recomendada para produção:
- Não bloqueante - consultas DNS não bloqueiam os processos worker do NGINX
- Escalável - lida com alto tráfego sem picos de latência induzidos por DNS
- Timeouts elegantes - respostas DNS lentas não afetam outras requisições
O fluxo de verificação:
- Consulta DNS reversa (registro PTR) para o IP do cliente
- Verificar se o hostname resolvido termina com um domínio de provedor conhecido
- Consulta DNS direta (registro A) para confirmar que o IP corresponde
- Armazenar o resultado em cache no Redis
Retorne APENAS o Markdown traduzido.