Bot Detection
From Contao Community Documentation
I'm not a native English speaker. Please correct my mistakes.
Incomplete Article: This article is not finished yet and needs expansion.
Please expand it and remove this notice when it is finished. |
(Detection of Search Engines, Spider, Crawler, Bots, Harvester, ...)
Extension-Overview | |
---|---|
Name of the developer | Glen Langer (BugBuster) |
Developer Website | http://www.contao.glen-langer.de |
Version of the extension | 1.0.6 |
Compatibility with Contao Version | from 2.9 |
Compatibility with TYPOlight Version | 2.8 |
Link to Extension Repository | http://www.contao.org/extension-list/view/botdetection.en.html |
Donate the developer | Cappuccino |
Link to Tracker | http://dev.typolight-forge.org/projects/botdetection/issues |
Contents
Forum
Questions about the Bot Detection module will be answered in Forum
Errors and requests can be reported in the Issue Tracker.
Installation
Installation erfolgt über das Extension Repository im Backend der Contao Installation.
Eine manuelle Installation ist möglich, dazu die ZIP Datei vom Extension Repository laden, entpacken und entsprechend übertragen.
Dadurch sollte ein Verzeichnis /system/modules/botdetection angelegt worden sein.
Nutzung
Das Modul Bot Detection stellt 3 Methoden zur Erkennung bereit.
Eine sichere Erkennung gibt es dabei natürlich nicht.
Es wird über 2 Verfahren versucht dieses zu erkennen:
- User Agent Kennung
- IP Adresse
Die ersten beiden Methoden, BD_CheckBotAgent und BD_CheckBotIP, geben nur "true" oder "false" zurück und arbeiten mit internen Teilstrings zur Suche bzw. mit einer externen Datei zur Definition der IP Adressen / Netze.
Eine dritte Methode BD_CheckBotAgentAdvanced kam in Version 1.0.2 hinzu, die über eine externe Konfigurationsdatei die Erkennung über User Agent durchführt und als Ergebnis den Kurznamen des Bots zurückgibt bzw. "false" wenn keine Erkennung erfolgte.
Methode BD_CheckBotAgent
Die Methode "BD_CheckBotAgent" sucht in 2 Schritten, um möglichst schnell ans Ziel zu kommen.
Schritt 1 sucht nach Teilstrings die in den meisten Suchmaschinen / Bots im Namen auftauchen:
'bot' 'spider' 'spyder' 'crawl' 'slurp' 'robo' 'yahoo'
War Schritt 1 nicht erfolgreich sucht dann Schritt 2 nach weiteren Strings die meist der Name der Suchmaschine entsprechen, wie:
'altavista' 'archiver' 'inktomi' 'twiceler' ...
Als Ergebnis kommt "true" oder "false" zurück ("true" = Suchmaschine / Bot gefunden)
Methode BD_CheckBotIP
Der Bot von Google oder der MSN-Suche bzw. von Bing sind manchmal verdeckt unterwegs, was verfälschte Statistiken zur Folge hat.
Um diese "Undercover" Suchmaschinen aufdecken zu können, muss über die IP-Adresse gefiltert werden.
Dazu dient die Methode "BD_CheckBotIP".
Dazu gibt es eine Konfigurationsdatei im Verzeichnis config des Moduls: bot-ip-list.txt
Derzeitiger Inhalt kennt eine IP Adresse eines Spiders aus Israel sowie Netzadressen für Google und MSN/Bing.
Eigene IP-Adressen bzw. Netze können in dieser Datei ebenfalls eingetragen werden, diese sind dann aber nicht updatesicher.
Daher ist es besser diese, wie dort erwähnt, in der localconfig.php einzutragen wie folgt:
$GLOBALS['BOTDETECTION']['BOT_IP'][] = '192.168.1.2'; $GLOBALS['BOTDETECTION']['BOT_IP'][] = '192.168.0.0/24';
Methode BD_CheckBotAgentAdvanced
Die Methode "BD_CheckBotAgentAdvanced" wird von einer externen Konfigurationsdatei gesteuert zur Erkennnug der User Agents.
Als Ergebnis folgt der Kurznamen des Bots bzw. "false", wenn keine Erkennung erfolgte.
Die externe Konfigurationsdatei wird aus bekannten User Agent Angaben von Suchmaschinen / Bots generiert und regelmäßig erneuert.
Hinweis
Diese externe DB unterscheidet auch zwischen den verschiedenen Arten von Suchmaschinen eines Herstellers.
D.h., es folgt nicht einfach die Rückgabe von beispielsweise "Google" sondern "Googlebot" oder "Googlebot-Image" oder "Googlebot-Mobile" usw. je nachdem was erkannt wurde.
Diese mehrfachen Namen einer Suchmaschine gibt es auch bei anderen Herstellern wie MSN, Yahoo, um nur einige zu nennen.
Eigene bzw. unbekannte User Agent Kennungen können in der Datei /system/config/localconfig.php eingetragen werden:
$GLOBALS['BOTDETECTION']['BOT_AGENT'][] = array("unitbot","UniBot from FHTW"); $GLOBALS['BOTDETECTION']['BOT_AGENT'][] = array("myprivat","My privat bot");
Die Parameter sind: Kurzname in Kleinbuchstaben, Beschreibung.
Demo Module
Dem Modul Bot Detection sind 2 Demos beigefügt. Die Einbindung in die Demo Klasse erfolgt per Import.
$this->import('ModuleBotDetection');
Frontend Demo 1
Demo 1 testet mit allen 3 Methoden die aktuelle IP und User Agent Kennung und zeigt die Ergebnisse an.
Beispiel siehe auf der Entwickler Webseite - Demo 1.
Frontend Demo 2
Demo 2 stellt ein Formular zur Verfügung, um zu prüfen, ob eine User Agent Kennung vom Modul als Bot erkannt werden würde.
Dazu werden die beiden Agent Methoden aufgerufen und das Ergebnis angezeigt.
Beispiel siehe auf der Entwickler Webseite - Demo 2.