Unerwünschte Bots vom Zugriff ausschließen

Unerwünschte Bots lassen sich in Weblication® direkt über die Projektkonfiguration filtern, um die Serverlast zu reduzieren.

Hierzu tragen Sie in aktuellen BASE Classic bzw. BASE (Mobile First) Projekten einfach die Namen der Robots in der Projektkonfiguration ein. Projekte, welche diese Möglichkeit noch nicht haben, können manuell nachgerüstet werden.
Über die globale Steuerungsdatei (pre.php), welche die Funktion zum Filtern aufruft (siehe unten), werden auf Grundlage der in der Projektkonfiguration eingetragenen Werte die angegebenen User-Agent Strings beim Aufruf von Seiten gefiltert und entsprechend geblockt (im Standard ein Status 403).

Schritt 1: Projektkonfiguration - Variable für zu blockierende Bots

Projektkonfiguration - Filter zu Bots
Projektkonfiguration - Filter zu Bots

Die Einstellung zum Filtern von unerwünschten Bots erfolgt über den UserAgent String. In aktuellen BASE Classic und BASE (Mobile First) Projekten finden Sie die Einstellung in der Projektkonfiguration (siehe Screen nebenan). Weiter unten finden Sie den Quelltext zum Nachrüsten in älteren Projekten.
Im Feld tragen Sie den eindeutigen String ein, welcher gefiltert werden soll. Meist handelt es sich dabei um unerwünschte Bots.

Ein UserAgent-String kann z.B. so aussehen (MJ12Bot):

  Mozilla/5.0 (compatible; MJ12bot/v1.2.4; http://www.majestic12.co.uk/bot.php?+)

Diesen müssen Sie nicht im gesamten eintragen, da die Einträge im Feld über die filterBots() Funktion mit regulären Ausdrücken abgefragt werden. Es reicht somit der kurze, aber eindeutige String, wie z.B. MJ12Bot.
Mehrere Einträge trennen Sie durch das Pipe-Zeichen, was dann z.B. so aussehen kann:

MJ12Bot|AhrefsBot|DomainCrawler|SEOkicks|SEMrushBot|Sogou|BLEXBot|PetalBot|DotBot|SeekportBot|serpstatbot


Beispiel: Auszug aus dem Quelltext der Projektkonfiguration

  <headline text="Filter"/>
  <variable description="Zu blockierende Bots" key="bots_block_regExp" type="char.default">MJ12Bot|AhrefsBot|DomainCrawler|SEOkicks|SEMrushBot|Sogou|BLEXBot|PetalBot|DotBot|SeekportBot|serpstatbot|GPTBot</variable>
  <info>Beispieleintrag über | getrennt: MJ12Bot|AhrefsBot|DomainCrawler|SEOkicks|SEMrushBot|Sogou|BLEXBot|PetalBot|DotBot|SeekportBot|serpstatbot<br/>Prüfen Sie bei jeder Änderung, ob der Zugriff über einen Standardbrowser noch möglich ist.</info>

Schritt 2: filterBots-Funktion in der wMyProject.php

Im Global-Projekt wird in der wMyProject.php die filterBots() Funktion definiert.
Aktuelle Projekte haben dies bereits definiert. In älteren Projekten setzen Sie diese Funktion manuel als erste Funktion in der genannten Datei.
Sie finden diese im Projekt unter /[IHR-LAYOUT-PROJEKT]/wGlobal/scripts/php/wMyProject.php.

Schritt 3: filterBots-Funktionsaufruf in der pre.php

Im Global-Projekt wird in der pre.php die filterBots() Funktion aufgerufen.
Aktuelle Projekte haben dies bereits definiert. In älteren Projekten setzen Sie diese Funktion manuel als erste Funktion in der genannten Datei.
Sie finden diese im Projekt unter /[IHR-LAYOUT-PROJEKT]/wGlobal/scripts/pre.php.

Hinweise

Sollte Ihr Projekt diese Möglichkeit noch nicht vorbereitet haben, können Sie dies aus einem aktuellen Projekt übernehmen.

Gerne kann Ihnen auch der Weblication® CMS Support über eine kostenpflichtige Projektdienstleistung weiterhelfen.

Die Namen der unerwünschten Bots können Sie übrigens im Weblication® Monitoring oder auch direkt in den access-logs auf dem Webserver finden.

Manuelle Erweiterung

Die Blockierung von Bots kann auch manuell direkt über die pre.php umgesetzt werden (nach dem wMyProject.php Include und Error-Handlung Eintrag):

Auszug aus der pre.php

// Bots blockieren (weitere Bots ggf. ergänzen)
if(preg_match('/MJ12Bot|AhrefsBot|DomainCrawler|SEOkicks|SEMrushBot|Sogou|BLEXBot|PetalBot|DotBot|SeekportBot|serpstatbot|GPTBot/i', $_SERVER['HTTP_USER_AGENT'])){
header('HTTP/1.1 403 Forbidden');
header('Status: 403 Forbidden');
exit;
}