bot-verifier: Ein Suchindex-Bot-Verifizierungsmodul für NGINX
Installation
Sie können dieses Modul in jeder RHEL-basierten Distribution installieren, einschließlich, aber nicht beschränkt auf:
- RedHat Enterprise Linux 7, 8, 9 und 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 und 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
Aktivieren Sie das Modul, indem Sie Folgendes an den Anfang von /etc/nginx/nginx.conf hinzufügen:
load_module modules/ngx_http_bot_verifier_module.so;
Dieses Dokument beschreibt nginx-module-bot-verifier v0.0.17 veröffentlicht am 06. Februar 2026.
NGINX-Modul zur Überprüfung der Identitäten von Suchmaschinen-Bots über Reverse-/Forward-DNS-Abfragen.
Dieses Modul validiert Akteure, die behaupten, Suchmaschinen-Crawler (Google, Bing, Yahoo, Baidu, Yandex) zu sein, indem es die von jedem Suchanbieter empfohlene DNS-Verifizierungsmethode durchführt. Es verhindert, dass böswillige Akteure Sicherheitsmaßnahmen umgehen, indem sie Bot-User-Agent-Strings fälschen.
Ein Drop-in-Ersatz für das ursprüngliche ngx_bot_verifier von Aaron Bedra.
Funktionen
- Reverse/Forward-DNS-Verifizierung gemäß den Richtlinien der Suchmaschinenanbieter
- Asynchrone DNS-Auflösung mit dem integrierten Resolver von NGINX (nicht blockierend)
- Redis-Caching mit Verbindungspooling zur Minimierung des DNS-Abfrageaufwands
- Konfigurierbare Anbieter - fügen Sie benutzerdefinierte Bot-Anbieter über die Standardwerte hinaus hinzu
- Fail-open-Design - Verifizierungsfehler lassen Anfragen durch, um legitimen Verkehr nicht zu blockieren
- Echte IP-Unterstützung über
ngx_http_realip_modulefür Bereitstellungen hinter Proxys
Unterstützte Anbieter
Eingebaute Anbieter
| Anbieter | Verifizierte Domains |
|---|---|
google.com, googlebot.com |
|
| Bing | search.msn.com |
| Yahoo | yahoo.com |
| Baidu | crawl.baidu.com |
| Yandex | yandex.com, yandex.net, yandex.ru |
Benutzerdefinierte Anbieter
Fügen Sie benutzerdefinierte Anbieter mit der Direktive bot_verifier_provider hinzu:
bot_verifier_provider facebook .facebook.com .fbcdn.net;
bot_verifier_provider apple .applebot.apple.com;
Benutzerdefinierte Anbieter werden zusätzlich zu den eingebauten Anbietern verifiziert.
Zusammenfassung
http {
# Erforderlich: Konfigurieren Sie das realip-Modul, um Ihren upstream-Proxys zu vertrauen
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;
# Erforderlich: Konfigurieren Sie den Resolver für nicht blockierende DNS-Abfragen
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: Fügen Sie benutzerdefinierte Anbieter hinzu
bot_verifier_provider applebot .applebot.apple.com;
}
}
}
Direktiven
bot_verifier
syntax: bot_verifier on|off;
default: off
context: http, server, location
Aktiviert oder deaktiviert die Bot-Verifizierung. Wenn aktiviert, werden Anfragen mit User-Agent-Strings, die bekannten Bot-Mustern entsprechen, über eine DNS-Abfrage verifiziert.
bot_verifier_provider
syntax: bot_verifier_provider <name> <domain1> [domain2] ...;
default: keine
context: http, server, location
Fügt einen benutzerdefinierten Bot-Anbieter zur Verifizierung hinzu. Der name wird mit User-Agent-Strings (nicht groß-/kleinschreibungssensitiv) verglichen. Die Domains werden verwendet, um das Ergebnis der Reverse-DNS-Abfrage zu verifizieren.
Beispiel:
bot_verifier_provider facebook .facebook.com .fbcdn.net;
bot_verifier_provider apple .applebot.apple.com;
bot_verifier_provider duckduckgo .duckduckgo.com;
Benutzerdefinierte Anbieter werden zusätzlich zu den eingebauten Anbietern (Google, Bing, Yahoo, Baidu, Yandex) überprüft.
bot_verifier_redis_host
syntax: bot_verifier_redis_host <hostname>;
default: localhost
context: http, server, location
Hostname des Redis-Servers für das Caching von Verifizierungsergebnissen.
bot_verifier_redis_port
syntax: bot_verifier_redis_port <port>;
default: 6379
context: http, server, location
Port des Redis-Servers.
bot_verifier_redis_connection_timeout
syntax: bot_verifier_redis_connection_timeout <milliseconds>;
default: 10
context: http, server, location
Timeout für die Herstellung von Redis-Verbindungen.
bot_verifier_redis_read_timeout
syntax: bot_verifier_redis_read_timeout <milliseconds>;
default: 10
context: http, server, location
Timeout für Redis-Lesevorgänge.
bot_verifier_redis_expiry
syntax: bot_verifier_redis_expiry <seconds>;
default: 3600
context: http, server, location
TTL für zwischengespeicherte Verifizierungsergebnisse. Nach Ablauf wird die nächste Anfrage von derselben IP eine frische DNS-Verifizierung auslösen.
bot_verifier_redis_database
syntax: bot_verifier_redis_database <number>;
default: 0
context: http, server, location
Redis-Datenbanknummer, die zur Speicherung von Verifizierungsergebnissen verwendet wird.
bot_verifier_redis_password
syntax: bot_verifier_redis_password <password>;
default: leer
context: http, server, location
Passwort für die Redis-Authentifizierung. Leer lassen, wenn Redis keine Authentifizierung erfordert.
Asynchrone DNS-Auflösung
Wenn die NGINX-Direktive resolver konfiguriert ist, führt das Modul DNS-Abfragen asynchron mit dem integrierten Resolver von NGINX durch. Dies ist die empfohlene Konfiguration für die Produktion:
- Nicht blockierend - DNS-Abfragen blockieren keine NGINX-Worker-Prozesse
- Skalierbar - bewältigt hohen Verkehr ohne durch DNS verursachte Verzögerungsspitzen
- Sanfte Timeouts - langsame DNS-Antworten beeinflussen andere Anfragen nicht
Der Verifizierungsfluss:
- Reverse-DNS-Abfrage (PTR-Datensatz) für die Client-IP
- Überprüfen, ob der aufgelöste Hostname mit einer bekannten Anbieter-Domain endet
- Forward-DNS-Abfrage (A-Datensatz), um zu bestätigen, dass die IP übereinstimmt
- Ergebnis im Redis cachen
GitHub
Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentation für dieses Modul im GitHub-Repository für nginx-module-bot-verifier.