Seite 1 von 1

Fake Google-bots ausssperren

Verfasst: 18.02.2009, 20:26
von GreenHorn
Hat jemand den htaccess code zur Hand, mit dem man per allow-ip-liste alle anderen ips die mit Google UA aufschlagen aussperren kann. Ist zur Zeit echt eine Plage, finde aber im Momment nicht den passenden code...

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 19.02.2009, 12:49
von t-rex
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 :oops:

Sonnige Grüsse
HaPe

Verfasst: 19.02.2009, 15:10
von bloddy newbie
Hallo,

in der Art (schließt andere IP-Adressen als aufgeführt mit dem User Agent "googlebot" aus):

Code: Alles auswählen

RewriteCond %{HTTP_USER_AGENT} googlebot
RewriteCond %{REMOTE_ADDR} !^1.1.1.1 [OR] 
RewriteCond %{REMOTE_ADDR} !^2.2.2.2 [OR] 
# alles was nicht aus 2.2.3.* kommt
RewriteCond %{REMOTE_ADDR} !^2.2.3. [OR]
RewriteRule ^.* - [F]
Es können sowohl einzelne IP Adressen oder auch ganze Blocks zu definiert werden.

Grüße
BN

Verfasst: 19.02.2009, 21:18
von GreenHorn
Könnte also das korrekt sein?

Code: Alles auswählen

RewriteCond %{HTTP_USER_AGENT} Googlebot
RewriteCond %{REMOTE_ADDR} !^209.185. [OR]
RewriteCond %{REMOTE_ADDR} !^209.85. [OR]
RewriteCond %{REMOTE_ADDR} !^216.239. [OR] 
RewriteCond %{REMOTE_ADDR} !^216.33. [OR]
RewriteCond %{REMOTE_ADDR} !^64.233. [OR]
RewriteCond %{REMOTE_ADDR} !^64.68. [OR]
RewriteCond %{REMOTE_ADDR} !^66.249. [OR]
RewriteCond %{REMOTE_ADDR} !^72.14. [OR]
RewriteCond %{REMOTE_ADDR} !^8.6.
RewriteRule ^.* - [F]
Danke für die bisherigen Antworten!

Verfasst: 19.02.2009, 22:08
von Michael

Verfasst: 19.02.2009, 22:51
von GreenHorn
Michael hat geschrieben:Hier eine Empfehlung von Google!

https://googlewebmastercentral.blogspot ... lebot.html
Danke. aber das geht mir meilenweit am Popo vorbei, es geht hier um Prävention und nicht um Nachsorge...

Verfasst: 20.02.2009, 00:15
von profo
@greenhorn, wo hast Du denn die schicke Liste her? Aber bist Du Dir bei den IPs sicher?

Da sind ja schließlich auch Netze von großen Webhostern dabei; bei einem 16er Range im htaccess hättest Du dann natürlich trotzdem massenhaft Spamkandidaten. Was ist zum Beispiel mit 209.85/16 (209.85.0.0/17 == NETBLK-THEPLANET-BLK-EV1-15)..., ist da irgendwo Google dabei?

Verfasst: 20.02.2009, 01:02
von w3news
GreenHorn hat geschrieben:
Michael hat geschrieben:Hier eine Empfehlung von Google!

https://googlewebmastercentral.blogspot ... lebot.html
Danke. aber das geht mir meilenweit am Popo vorbei, es geht hier um Prävention und nicht um Nachsorge...
Wenn ich das aber richtig verstehe muss man doch nur die IP des Googlebots umwandeln und checken ob dann dabei *.googlebot.com herauskommt und das sollte man doch auch schon vorab checken können...

Verfasst: 20.02.2009, 01:34
von profo
@w3news, das geht, ist aber nicht ganz trivial. Gerade wenn Du "live" bei den Requests nachschaust. Das verlangt dann wahrscheinlich eine gute Caching-Strategie und ein bisschen Nachdenken; die DNS-Lookups dauern nämlich selbst bei gut laufenden DSN-Servern ohne Netzwerkstörung ein bisschen. Auf jeden Fall ist das nichts, was man mal so eben in die htaccess eintragen kann, meine ich...

Verfasst: 20.02.2009, 09:47
von GreenHorn
@profo
Ja... :D Kann man präzisieren, je nach Bedarf.
Hier eine IP Liste https://www.iplists.com/google.txt
Muß man natürlich up to date bleiben...