Ich betreibe eine Website für einen Kunden, auf der eine große Datenbank mit Informationen angezeigt wird, die er im Laufe der Jahre genau und langsam gesammelt hat. Sie finden ihre Daten über das Internet an verschiedenen Orten. Höchstwahrscheinlich liegt es daran, dass ein Schaber die Site Seite für Seite durchläuft und die benötigten Informationen in eine eigene Datenbank extrahiert. Und falls Sie sich fragen, wissen sie, dass es sich um ihre Daten handelt, da in jeder Kategorie auf ihrer Website nur ein einziges Datenelement gepflanzt ist.
Ich habe in den letzten Tagen viel darüber recherchiert, und ich kann Ihnen sagen, dass es keine perfekte Gesamtlösung gibt. Ich habe einige Dinge gefunden, die es ihnen jedoch ein bisschen schwerer machen, dies zu erreichen. Dies habe ich für den Kunden implementiert.
Paginierte Daten
Wenn Sie viele paginierte Daten haben und Ihre Daten paginieren, indem Sie einfach eine andere Nummer an das Ende Ihrer URL anhängen, dh http://www.domain.com/category/programming/2 - Dann machen Sie die Arbeit des Crawlers ist viel einfacher. Das erste Problem ist, dass es ein leicht zu identifizierendes Muster aufweist, so dass es kinderleicht ist, einen Schaber auf diesen Seiten loszulassen. Zweites Problem, unabhängig von der URL der nachfolgenden Seiten in der Kategorie, es würde höchstwahrscheinlich einen nächsten und vorherigen Link geben, auf den sie zugreifen können.
Durch das Laden der paginierten Daten über Javascript ohne Neuladen einer Seite wird die Arbeit für viele Schaber da draußen erheblich erschwert. Google selbst hat erst vor kurzem damit begonnen, Javascript auf der Seite zu analysieren. Es ist wenig nachteilig, die Daten auf diese Weise neu zu laden. Sie stellen Google ein paar Seiten weniger für den Index zur Verfügung. Technisch gesehen sollten jedoch alle paginierten Daten über die Kanonisierung auf die Stammkategorieseite verweisen. Ajaxifizieren Sie Ihre Seiten mit Daten.
Zufällige Vorlagenausgabe
Abstreifer werden häufig speziell für Ihre Daten angepasst. Sie werden an eine bestimmte Div-ID oder Klasse für den Titel, die dritte Zelle in jeder Zeile für Ihre Beschreibung usw. gebunden. Es gibt ein leicht identifizierbares Muster, mit dem die meisten Schaber arbeiten können, da die meisten Daten aus derselben Tabelle stammen. wird von der gleichen Vorlage angezeigt. Ordnen Sie Ihre Div-IDs und Klassennamen nach dem Zufallsprinzip zu und fügen Sie leere Tabellenspalten mit einer Breite von 0 ein. Zeigen Sie Ihre Daten in einer Tabelle auf einer Seite, in gestalteten Divs und in einer Kombination auf einer anderen Vorlage an. Indem Sie Ihre Daten vorhersehbar darstellen, können Sie sie vorhersehbar und genau verarbeiten.
Honigtopf
Dies ist in seiner Einfachheit ziemlich ordentlich. Ich bin auf mehreren Seiten auf diese Methode gestoßen, um das Scraping von Websites zu verhindern.
- Erstellen Sie eine neue Datei mit dem Namen gotcha.html auf Ihrem Server.
- Fügen Sie in Ihrer robots.txt-Datei Folgendes hinzu:
User-Agent: *
Disallow: /gotcha.html
Dadurch werden alle Roboter und Spinnen, die Ihre Site indizieren, angewiesen, die Datei gotcha.html nicht zu indizieren. Jeder normale Webcrawler respektiert die Wünsche Ihrer robots.txt-Datei und greift nicht auf diese Datei zu. dh Google und Bing. Möglicherweise möchten Sie diesen Schritt tatsächlich implementieren und 24 Stunden warten, bevor Sie mit dem nächsten Schritt fortfahren. Dadurch wird sichergestellt, dass ein Crawler nicht versehentlich von Ihnen blockiert wird, da er bereits während des Crawls war, als Sie Ihre robots.txt-Datei aktualisiert haben. - Platzieren Sie irgendwo auf Ihrer Website einen Link zu gotcha.html. Egal wo. Ich würde empfehlen, in der Fußzeile jedoch sicherzustellen, dass dieser Link nicht sichtbar ist, in CSS anzeigen: keine;
- Protokollieren Sie nun die IP- / allgemeinen Informationen des Täters, der diese Seite besucht hat, und blockieren Sie sie. Alternativ können Sie ein Skript erstellen, um falsche und fehlerhafte Daten bereitzustellen. Oder vielleicht eine nette persönliche Nachricht von dir an sie.
Normale Web-Viewer können den Link nicht sehen, sodass er nicht versehentlich angeklickt wird. Seriöse Crawler (z. B. Google) respektieren die Wünsche Ihrer robots.txt und besuchen die Datei nicht. Die einzigen Computer, die über diese Seite stolpern sollten, sind solche mit böswilligen Absichten oder jemand, der Ihren Quellcode ansieht und zufällig herumklickt (und na ja, wenn das passiert).
Es gibt mehrere Gründe, die möglicherweise nicht immer funktionieren. Erstens funktionieren viele Scraper nicht wie normale Webcrawler und ermitteln die Daten nicht nur, indem Sie jedem Link auf jeder Seite Ihrer Website folgen. Schaber werden oft gebaut, um auf bestimmten Seiten zu fixieren und nur bestimmten Strukturen zu folgen. Beispielsweise kann ein Scraper auf einer Kategorieseite gestartet und dann angewiesen werden, nur URLs mit dem Wort / den Daten im Slug zu besuchen. Zweitens: Wenn jemand seinen Scraper im selben Netzwerk wie andere ausführt und eine gemeinsame IP-Adresse verwendet wird, müssen Sie das gesamte Netzwerk sperren. Sie müssten in der Tat eine sehr beliebte Website haben, damit dies ein Problem ist.
Schnelles Schreiben von Daten in Bilder
Suchen Sie ein kleineres Datenfeld, nicht unbedingt lange Textzeichenfolgen, da dies das Gestalten der Seite etwas erschwert. Ich bin mir ziemlich sicher, dass es in fast jeder Programmiersprache Methoden gibt, um Text dynamisch in ein Bild zu schreiben (in PHP, Bildtext). Dies ist bei numerischen Werten wahrscheinlich am effektivsten, da Zahlen einen wesentlich unbedeutenderen SEO-Vorteil bieten.
Alternative
Dies war keine Option für dieses Projekt. Nach einer bestimmten Anzahl von Seitenaufrufen eine Anmeldung erforderlich machen oder eine begrenzte Anzahl von Daten anzeigen, ohne angemeldet zu sein. Wenn Sie also 10 Spalten haben, zeigen Sie nicht angemeldeten Benutzern nur 5 an.
Mach diesen Fehler nicht
Versuchen Sie nicht, eine Lösung zu finden, die auf dem User-Agent des Bots basiert. Diese Informationen können leicht von einem Schaber gefälscht werden, der weiß, was er tut. Der Google Bot zum Beispiel kann einfach emuliert werden. Sie möchten Google höchstwahrscheinlich nicht verbieten.