Hi,
hatte mal was direkt in der Apache Dokumentation gelesen. RewriteMap ist dein Freund. Doku findest Du hier
https://httpsd.apache.org/docs/2.2/mod/mod_rewrite.html
Damit kannst du einfache Listen auswerten oder die Rule durch ein Perl, PHP oder Shell Skript auswerten lassen.
Ob es in der .htaccess erlaubt ist weiss ich nicht mehr sicher. Ich glaube mich zu erinnern, dass es da den einen oder anderen Stolperstein gab.
Mit einer IP-Liste wäre ich allerdings vorsichtig, zudem mit einer Whitelist. Da ist recht schnell mal der gute Bot nicht freigegeben. Blacklist ist zwar arbeitsintensiver, aber zumindest wird da kein falscher Bot ausgesperrt.
Ich würde das (zumindest als Gegenprobe) über einen Reverse Lookup gegenchecken.
Hier mal der Versuch von Pseudocode
Code: Alles auswählen
if ($USER_AGENT == 'Gogglebot') {
$blockit = true;
$google = in_array($REMOTE_ADDR, $IPLISTGOOGLE);
if (!$google) {
$badbot = in_array($REMOTE_ADDR, $IPLISTBADBOT);
$blockit = false;
}
if (!badbot && !$google) {
$hostname = gethostbyaddr($REMOTE_ADDR);
if (preg_match('/(google.com|googlebot.com)$/', $hostname)) {
$thisips = gethostbynamel($hostname);
if (in_array($REMOTE_ADDR, $thisip) {
$blockit = false;
}
}
}
if ($blockit) {
// Mach was du mit dem Client machen möchtest
}
}
1. Überprüfung Useragent. gibt er sich als Googlebot aus, Überprüfung starten.
2. Vorsorglich wird die Variable $blockit auf true gesetzt.
3. Überprüfung Whitelist. Wenn bekannt und richtig alles Okay. $blockit wird neutralisiert.
4. IP ist nicht in der Whitelist. Gegenprüfen, ob es ein bekannter Fake ist.
5. Ist er kein bekannter Googlebot und kein bekannter Fakebot, DNS-test starten
6. Hostname anhand der übergebenen IP ermitteln.
7. Ist der Hostname der Domain google.com oder dem googlebot.com zuzuordnen, gegen testen.
8. Nun wird die IP oder die IPs anhand des ermittelten Hostnames überprüft. Ist die REMOTE_ADDR in dieser Liste ist es vermutlich ein echter Googlebot. Und $blockit wird auf false gesetzt.
Hoffe es ist von der Logik her richtig

aber es sollte jedenfalls den Weg und den Sinn wiedergeben. Es sollte sich mit jeder Scriptsprache, die auf einem Server verfügbar ist, umsetzen lassen. Und es scheint mir auch der sicherste und alles erschlagende Weg sein, um böse Buben mit Fake-Bots auszuschliessen. Es gibt natürlich auch noch zahlreiche Variationen aund anpassungsmöglichkeiten, aber das alles war ja nicht Deine Frage
Sonnige Grüsse
HaPe