Wie kann man die Suchmaschinen-Bots mit PHP erkennen?
php
web-crawler
bots
umwerfend
quelle
quelle
strpos
kehrt auchFALSE
nach dem Scheitern zurück. Es ist jedoch schneller und effizienter (keine Vorverarbeitung und kein O (m) -Speicher).Ich verwende den folgenden Code, der anscheinend gut funktioniert:
Update 16-06-2017 https://support.google.com/webmasters/answer/1061943?hl=de
Mediapartner hinzugefügt
quelle
Überprüfen Sie die
$_SERVER['HTTP_USER_AGENT']
Zeichenfolge auf einige der hier aufgeführten Zeichenfolgen:http://www.useragentstring.com/pages/useragentstring.php
Oder genauer gesagt für Crawler:
http://www.useragentstring.com/pages/useragentstring.php?typ=Crawler
Wenn Sie die Anzahl der Besuche der meisten gängigen Suchmaschinen-Crawler protokollieren möchten, können Sie diese verwenden
quelle
Sie können überprüfen, ob es sich um eine Suchmaschine mit dieser Funktion handelt:
Dann können Sie es wie folgt verwenden:
quelle
Ich benutze dies, um Bots zu erkennen:
Außerdem verwende ich eine Whitelist, um unerwünschte Bots zu blockieren:
Ein unerwünschter Bot (= falsch positiver Benutzer) kann dann ein Captcha lösen, um sich für 24 Stunden zu entsperren. Und da niemand dieses Captcha löst, weiß ich, dass es keine falsch positiven Ergebnisse erzeugt. Die Bot-Erkennung scheint also perfekt zu funktionieren.
Hinweis: Meine Whitelist basiert auf Facebooks robots.txt .
quelle
)
in Ihrem ersten Code vergessen .Da jeder Client den Benutzeragenten auf das einstellen kann, was er möchte, ist die Suche nach "Googlebot", "Bingbot" usw. nur die halbe Miete.
Der zweite Teil überprüft die IP des Clients. Früher mussten IP-Listen gepflegt werden. Alle Listen, die Sie online finden, sind veraltet. Die Top-Suchmaschinen unterstützen offiziell die Überprüfung über DNS, wie von Google https://support.google.com/webmasters/answer/80553 und Bing http://www.bing.com/webmaster/help/how-to-verify erläutert -bingbot-3905dc26
Führen Sie zunächst eine Reverse-DNS-Suche der Client-IP durch. Für Google bringt dies einen Hostnamen unter googlebot.com, für Bing unter search.msn.com. Da dann jemand ein solches Reverse-DNS für seine IP festlegen könnte, müssen Sie dies mit einer Forward-DNS-Suche für diesen Hostnamen überprüfen. Wenn die resultierende IP mit der des Besuchers der Site identisch ist, ist es sicher ein Crawler dieser Suchmaschine.
Ich habe eine Bibliothek in Java geschrieben, die diese Überprüfungen für Sie durchführt. Fühlen Sie sich frei, es auf PHP zu portieren. Es ist auf GitHub: https://github.com/optimaize/webcrawler-verifier
quelle
Ich benutze diese Funktion ... ein Teil des regulären Ausdrucks stammt von Prestashop, aber ich habe noch einen Bot hinzugefügt.
Achten Sie auf jeden Fall darauf, dass einige Bots einen Browser wie einen Benutzeragenten verwenden, um ihre Identität zu fälschen
(ich habe viele russische IP-Adressen, die dieses Verhalten auf meiner Website aufweisen).
Eine Besonderheit der meisten Bot ist, dass sie keine Cookies enthalten und daher keine Sitzung mit ihnen verbunden ist.
(Ich bin nicht sicher, wie, aber dies ist sicher der beste Weg, um sie zu verfolgen)
quelle
Sie können den Benutzeragenten (
$_SERVER['HTTP_USER_AGENT']
) analysieren oder die IP-Adresse ($_SERVER['REMOTE_ADDR']
) des Clients mit einer Liste von IP-Adressen von Suchmaschinen-Bots vergleichen .quelle
Verwenden Sie die Open Source-Bibliothek Device Detector. Sie bietet eine isBot () -Funktion: https://github.com/piwik/device-detector
quelle
Das wäre der ideale Weg, um sich für Spinnen zu tarnen. Es stammt aus einem Open-Source-Skript namens [YACG] - http://getyacg.com
Benötigt ein bisschen Arbeit, aber definitiv den richtigen Weg.
quelle
Ich habe eine gute und schnelle Funktion dafür gemacht
Dies deckt 99% aller möglichen Bots, Suchmaschinen usw. ab.
quelle
Ich benutze diesen Code, ziemlich gut. Sie werden sehr leicht wissen, dass Benutzeragenten Ihre Website besucht haben. Dieser Code öffnet eine Datei und schreibt den user_agent in die Datei. Sie können diese Datei jeden Tag überprüfen, indem Sie sich
yourdomain.com/useragent.txt
über neue user_agents informieren und sie in den Zustand der if-Klausel versetzen.Dies ist der Inhalt von useragent.txt
quelle
100% funktionierender Bot-Detektor. Es funktioniert erfolgreich auf meiner Website.
quelle
Wenn Sie GOOGLE-Engine-Bots wirklich erkennen müssen, sollten Sie sich niemals auf die Adresse "user_agent" oder "IP" verlassen, da "user_agent" gemäß den Angaben von Google in: Überprüfen von Googlebot geändert werden kann
Hier ist mein getesteter Code:
In diesem Code überprüfen wir "Hostname", der "googlebot.com" oder "google.com" am Ende von "Hostname" enthalten sollte, was wirklich wichtig ist, um die genaue Domain und nicht die Subdomain zu überprüfen. Ich hoffe es gefällt dir ;)
quelle
Für Google verwende ich diese Methode.
Credits: https://support.google.com/webmasters/answer/80553
quelle
quelle