Ich habe eine ziemlich große Musikwebsite mit einer großen Künstlerdatenbank. Ich habe bemerkt, dass andere Musikseiten die Daten unserer Seite kratzen (ich gebe hier und da Dummy-Künstlernamen ein und suche dann bei Google nach ihnen).
Wie kann ich Bildschirmkratzer verhindern? Ist es überhaupt möglich?
Antworten:
Hinweis: Da die vollständige Version dieser Antwort das Längenlimit von Stack Overflow überschreitet, müssen Sie zu GitHub gehen , um die erweiterte Version mit weiteren Tipps und Details zu lesen.
Um das Scraping zu verhindern (auch als Webscraping , Screenscraping , Web Data Mining , Web Harvesting oder Web Data Extraction bezeichnet ), ist es hilfreich zu wissen, wie diese Scraper funktionieren und was sie im weiteren Sinne daran hindert , gut zu funktionieren.
Es gibt verschiedene Arten von Schabern, und jeder funktioniert anders:
Spinnen wie Googles Bot oder Website-Kopierer wie HTtrack folgen rekursiv Links zu anderen Seiten, um Daten abzurufen . Diese werden manchmal zum gezielten Scraping verwendet, um bestimmte Daten abzurufen, häufig in Kombination mit einem HTML-Parser, um die gewünschten Daten von jeder Seite zu extrahieren.
Shell-Skripte: Manchmal werden gängige Unix-Tools zum Scraping verwendet: Wget oder Curl zum Herunterladen von Seiten und Grep (Regex) zum Extrahieren der Daten.
HTML-Parser, z. B. auf Jsoup, Scrapy und anderen. Ähnlich wie bei Regex-basierten Shell-Skripten werden bei diesen Daten Daten aus Seiten extrahiert, die auf Mustern in HTML basieren, wobei normalerweise alles andere ignoriert wird.
Beispiel: Wenn Ihre Website über eine Suchfunktion verfügt, sendet ein solcher Scraper möglicherweise eine Suchanforderung und ruft dann alle Ergebnislinks und ihre Titel von der HTML-Ergebnisseite ab, um speziell nur Suchergebnislinks und deren Titel abzurufen . Dies sind die häufigsten.
Bildschirmkratzer, basierend auf z. Selenium oder PhantomJS , die Ihre Website in einem echten Browser öffnen, führen JavaScript, AJAX usw. aus und rufen dann den gewünschten Text von der Webseite ab, normalerweise von:
Abrufen des HTML-Codes aus dem Browser, nachdem Ihre Seite geladen und JavaScript ausgeführt wurde, und Verwenden eines HTML-Parsers zum Extrahieren der gewünschten Daten. Dies sind die häufigsten, und so viele der Methoden zum Brechen von HTML-Parsern / Scrapern funktionieren auch hier.
Machen Sie einen Screenshot der gerenderten Seiten und extrahieren Sie dann mit OCR den gewünschten Text aus dem Screenshot. Dies sind seltene Fälle, und nur dedizierte Scraper, die Ihre Daten wirklich wollen, werden dies einrichten.
Webscraping-Dienste wie ScrapingHub oder Kimono . Tatsächlich gibt es Leute, deren Aufgabe es ist, herauszufinden, wie Sie Ihre Website kratzen und den Inhalt für andere herausholen können.
Es ist nicht überraschend, dass professionelle Scraping-Services am schwierigsten abzuschrecken sind. Wenn Sie es jedoch schwierig und zeitaufwändig machen, herauszufinden, wie Sie Ihre Website kratzen, müssen sich diese (und die Personen, die sie dafür bezahlen) möglicherweise nicht die Mühe machen, Ihre Website zu kratzen.
Einbetten Ihrer Website in die Seiten anderer Websites mit Frames und Einbetten Ihrer Website in mobile Apps.
Mobile Apps (Android und iOS) können Websites einbetten und benutzerdefiniertes CSS und JavaScript einfügen, wodurch das Erscheinungsbild Ihrer Seiten vollständig verändert wird.
Menschliches Kopieren - Einfügen: Die Benutzer kopieren und fügen Ihre Inhalte ein, um sie an anderer Stelle zu verwenden.
Es gibt viele Überschneidungen zwischen diesen verschiedenen Arten von Abstreifern, und viele Abstreifer verhalten sich ähnlich, selbst wenn sie unterschiedliche Technologien und Methoden verwenden.
Diese Tipps sind hauptsächlich meine eigenen Ideen, verschiedene Schwierigkeiten, auf die ich beim Schreiben von Schabern gestoßen bin, sowie Informationen und Ideen aus den Interwebs.
Wie man aufhört zu kratzen
Sie können es nicht vollständig verhindern , da entschlossene Schaber, was auch immer Sie tun, immer noch herausfinden können, wie man kratzt. Sie können jedoch viel Kratzen stoppen, indem Sie einige Dinge tun:
Überwachen Sie Ihre Protokolle und Verkehrsmuster. Beschränken Sie den Zugriff, wenn Sie ungewöhnliche Aktivitäten sehen:
Überprüfen Sie Ihre Protokolle regelmäßig. Bei ungewöhnlichen Aktivitäten, die auf einen automatisierten Zugriff (Scraper) hinweisen, z. B. bei vielen ähnlichen Aktionen von derselben IP-Adresse, können Sie den Zugriff blockieren oder einschränken.
Insbesondere einige Ideen:
Ratenbegrenzung:
Erlauben Sie Benutzern (und Scrapern) nur, eine begrenzte Anzahl von Aktionen in einer bestimmten Zeit auszuführen. Lassen Sie beispielsweise nur wenige Suchvorgänge pro Sekunde von einer bestimmten IP-Adresse oder einem bestimmten Benutzer aus zu. Dies verlangsamt die Schaber und macht sie unwirksam. Sie können auch ein Captcha anzeigen, wenn Aktionen zu schnell oder schneller ausgeführt werden als ein echter Benutzer.
Ungewöhnliche Aktivitäten erkennen:
Wenn Sie ungewöhnliche Aktivitäten feststellen, z. B. viele ähnliche Anforderungen von einer bestimmten IP-Adresse, eine übermäßige Anzahl von Seiten oder eine ungewöhnliche Anzahl von Suchvorgängen, können Sie den Zugriff verhindern oder ein Captcha für nachfolgende Anforderungen anzeigen.
Überwachen und bewerten Sie das Limit nicht nur anhand der IP-Adresse, sondern verwenden Sie auch andere Indikatoren:
Wenn Sie ein Block- oder Ratenlimit verwenden, tun Sie dies nicht nur auf der Basis einer IP-Adresse. Sie können andere Indikatoren und Methoden verwenden, um bestimmte Benutzer oder Schaber zu identifizieren. Einige Indikatoren, mit denen Sie bestimmte Benutzer / Abstreifer identifizieren können, sind:
Wie schnell Benutzer Formulare ausfüllen und wo sie auf eine Schaltfläche klicken;
Mit JavaScript können Sie viele Informationen sammeln, z. B. Bildschirmgröße / Auflösung, Zeitzone, installierte Schriftarten usw.; Sie können dies verwenden, um Benutzer zu identifizieren.
HTTP-Header und deren Reihenfolge, insbesondere User-Agent.
Wenn Sie beispielsweise viele Anfragen von einer einzigen IP-Adresse erhalten, die alle denselben Benutzeragenten verwenden, klicken Bildschirmgröße (in diesem Fall mit JavaScript festgelegt) und Benutzer (in diesem Fall Scraper) immer auf dieselbe Weise und unter auf die Schaltfläche In regelmäßigen Abständen handelt es sich wahrscheinlich um einen Bildschirmschaber. und Sie können ähnliche Anforderungen vorübergehend blockieren (z. B. alle Anforderungen mit diesem Benutzeragenten und der Bildschirmgröße blockieren, die von dieser bestimmten IP-Adresse stammen), und auf diese Weise werden Sie echten Benutzern diese IP-Adresse nicht stören, z. im Falle einer gemeinsamen Internetverbindung.
Sie können dies auch weiter verfolgen, da Sie ähnliche Anforderungen identifizieren können, auch wenn diese von unterschiedlichen IP-Adressen stammen, was auf verteiltes Scraping hinweist (ein Scraper, der ein Botnetz oder ein Netzwerk von Proxys verwendet). Wenn Sie viele ansonsten identische Anforderungen erhalten, diese jedoch von unterschiedlichen IP-Adressen stammen, können Sie diese blockieren. Beachten Sie auch hier, dass Sie echte Benutzer nicht versehentlich blockieren.
Dies kann gegen Bildschirmschaber wirksam sein, auf denen JavaScript ausgeführt wird, da Sie viele Informationen von ihnen erhalten können.
Verwandte Fragen zu Security Stack Exchange:
Wie kann man Benutzer mit derselben externen IP-Adresse eindeutig identifizieren? für weitere Details und
Warum verwenden Menschen IP-Adressverbote, wenn sich IP-Adressen häufig ändern? Informationen zu den Grenzen dieser Methoden.
Verwenden Sie ein Captcha, anstatt den Zugriff vorübergehend zu blockieren:
Die einfache Möglichkeit, eine Ratenbegrenzung zu implementieren, besteht darin, den Zugriff für eine bestimmte Zeit vorübergehend zu blockieren. Die Verwendung eines Captcha ist jedoch möglicherweise besser, siehe den Abschnitt über Captchas weiter unten.
Registrierung & Login erforderlich
Erstellen Sie ein Konto, um Ihre Inhalte anzuzeigen, sofern dies für Ihre Website möglich ist. Dies ist eine gute Abschreckung für Schaber, aber auch eine gute Abschreckung für echte Benutzer.
Um zu vermeiden, dass Skripte viele Konten erstellen, sollten Sie:
Fordern Sie eine E-Mail-Adresse für die Registrierung an und überprüfen Sie diese E-Mail-Adresse, indem Sie einen Link senden, der geöffnet werden muss, um das Konto zu aktivieren. Erlaube nur ein Konto pro E-Mail-Adresse.
Bei der Registrierung / Kontoerstellung muss ein Captcha gelöst werden.
Wenn zum Anzeigen von Inhalten eine Kontoerstellung erforderlich ist, werden Benutzer und Suchmaschinen vertrieben. Wenn Sie zum Anzeigen eines Artikels eine Kontoerstellung benötigen, werden Benutzer an eine andere Stelle verschoben.
Blockieren Sie den Zugriff von IP-Adressen des Cloud-Hosting- und Scraping-Dienstes
Manchmal werden Scraper von Webhosting-Diensten wie Amazon Web Services oder GAE oder VPSes ausgeführt. Beschränken Sie den Zugriff auf Ihre Website (oder zeigen Sie ein Captcha an) für Anfragen, die von den IP-Adressen stammen, die von solchen Cloud-Hosting-Diensten verwendet werden.
In ähnlicher Weise können Sie auch den Zugriff von IP-Adressen einschränken, die von Proxy- oder VPN-Anbietern verwendet werden, da Scraper möglicherweise solche Proxyserver verwenden, um zu verhindern, dass viele Anforderungen erkannt werden.
Beachten Sie, dass Sie durch Blockieren des Zugriffs von Proxyservern und VPNs echte Benutzer negativ beeinflussen.
Machen Sie Ihre Fehlermeldung unscheinbar, wenn Sie blockieren
Wenn Sie den Zugriff blockieren / einschränken, sollten Sie sicherstellen, dass Sie dem Schaber nicht mitteilen, was den Block verursacht hat, und ihm dadurch Hinweise geben, wie der Schaber repariert werden kann. Eine schlechte Idee wäre es also, Fehlerseiten mit folgendem Text anzuzeigen:
Zu viele Anfragen von Ihrer IP-Adresse, versuchen Sie es später erneut.
Fehler, User Agent Header nicht vorhanden!
Zeigen Sie stattdessen eine freundliche Fehlermeldung an, die dem Schaber nicht mitteilt, was ihn verursacht hat. So etwas ist viel besser:
[email protected]
, falls das Problem weiterhin besteht.Dies ist auch für echte Benutzer viel benutzerfreundlicher, falls sie jemals eine solche Fehlerseite sehen sollten. Sie sollten auch in Betracht ziehen, ein Captcha für nachfolgende Anforderungen anstelle eines harten Blocks anzuzeigen, falls ein realer Benutzer die Fehlermeldung sieht, damit Sie nicht blockieren und legitime Benutzer Sie kontaktieren.
Verwenden Sie Captchas, wenn Sie den Verdacht haben, dass ein Scraper auf Ihre Website zugreift.
Captchas ("Vollständig automatisierter Test, um Computer und Menschen voneinander zu unterscheiden") sind sehr effektiv gegen das Stoppen von Schabern. Leider sind sie auch sehr effektiv bei der Irritation von Benutzern.
Als solche sind sie nützlich, wenn Sie einen möglichen Schaber vermuten und das Schaben stoppen möchten, ohne auch den Zugriff zu blockieren, falls es sich nicht um einen Schaber, sondern um einen echten Benutzer handelt. Wenn Sie einen Scraper vermuten, sollten Sie ein Captcha anzeigen, bevor Sie den Zugriff auf den Inhalt zulassen.
Dinge, die Sie bei der Verwendung von Captchas beachten sollten:
Rollen Sie nicht Ihre eigenen, verwenden Sie etwas wie Googles reCaptcha : Es ist viel einfacher als das Implementieren eines Captchas selbst. Es ist benutzerfreundlicher als eine verschwommene und verzerrte Textlösung , die Sie sich möglicherweise selbst einfallen lassen (Benutzer müssen häufig nur ein Kästchen ankreuzen) ), und es ist für einen Scripter auch viel schwieriger zu lösen als ein einfaches Bild, das von Ihrer Site bereitgestellt wird
Nehmen Sie die Lösung für das Captcha nicht in das HTML-Markup auf: Ich habe tatsächlich eine Website gesehen, die die Lösung für das Captcha auf der Seite selbst hatte (obwohl sie ziemlich gut versteckt ist), was sie ziemlich nutzlos macht. Mach so etwas nicht. Verwenden Sie wieder einen Dienst wie reCaptcha, und Sie werden diese Art von Problem nicht haben (wenn Sie ihn richtig verwenden).
Captchas können in großen Mengen gelöst werden: Es gibt Captcha-Lösungsdienste, bei denen tatsächliche, schlecht bezahlte Menschen Captchas in großen Mengen lösen. Auch hier ist die Verwendung von reCaptcha eine gute Idee, da sie über Schutzfunktionen verfügen (z. B. die relativ kurze Zeit, die der Benutzer hat, um das Captcha zu lösen). Es ist unwahrscheinlich, dass diese Art von Service verwendet wird, es sei denn, Ihre Daten sind wirklich wertvoll.
Servieren Sie Ihren Textinhalt als Bild
Sie können Text auf einer Bildserverseite rendern und zur Anzeige bereitstellen, wodurch einfache Schaber beim Extrahieren von Text behindert werden.
Dies ist jedoch schlecht für Bildschirmleser, Suchmaschinen, Leistung und so ziemlich alles andere. Es ist auch an einigen Orten illegal (aufgrund der Zugänglichkeit, z. B. dem Gesetz über Amerikaner mit Behinderungen), und es ist auch leicht, es mit einer OCR zu umgehen, also tun Sie es nicht.
Sie können mit CSS-Sprites etwas Ähnliches tun, aber das hat die gleichen Probleme.
Machen Sie nicht Ihren gesamten Datensatz verfügbar:
Wenn möglich, bieten Sie einem Skript / Bot keine Möglichkeit, Ihren gesamten Datensatz abzurufen. Als Beispiel: Sie haben eine Nachrichtenseite mit vielen einzelnen Artikeln. Sie können diese Artikel nur zugänglich machen, indem Sie über die On-Site-Suche nach ihnen suchen. Wenn Sie nicht über eine Liste aller Artikel auf der Site und ihrer URLs verfügen, können Sie auf diese Artikel nur über die Suche zugreifen Feature. Dies bedeutet, dass ein Skript, das alle Artikel von Ihrer Website entfernen möchte, nach allen möglichen Phrasen suchen muss, die in Ihren Artikeln erscheinen können, um sie alle zu finden. Dies ist zeitaufwändig, schrecklich ineffizient und wird hoffentlich funktionieren Der Schaber gibt auf.
Dies ist unwirksam, wenn:
example.com/article.php?articleId=12345
. Dies (und ähnliche Dinge) ermöglicht es Schabern, einfach allearticleId
s zu durchlaufen und alle Artikel auf diese Weise anzufordern.Stellen Sie Ihre APIs, Endpunkte und ähnliche Dinge nicht offen:
Stellen Sie sicher, dass Sie auch unbeabsichtigt keine APIs verfügbar machen. Wenn Sie beispielsweise AJAX- oder Netzwerkanforderungen in Adobe Flash oder Java Applets verwenden (Gott bewahre!), Um Ihre Daten zu laden, ist es trivial, die Netzwerkanforderungen auf der Seite zu überprüfen und herauszufinden, wohin diese Anforderungen gehen, und Führen Sie dann ein Reverse Engineering durch und verwenden Sie diese Endpunkte in einem Scraper-Programm. Stellen Sie sicher, dass Sie Ihre Endpunkte verschleiern und sie anderen wie beschrieben schwer zugänglich machen.
So verhindern Sie HTML-Parser und Scraper:
Da HTML-Parser Inhalte aus Seiten extrahieren, die auf identifizierbaren Mustern im HTML basieren, können wir diese Muster absichtlich ändern, um diese Schaber zu beschädigen oder sogar mit ihnen zu verschrauben. Die meisten dieser Tipps gelten auch für andere Schaber wie Spinnen und Bildschirmschaber.
Ändern Sie häufig Ihren HTML-Code
Scraper, die HTML direkt verarbeiten, extrahieren dazu Inhalte aus bestimmten, identifizierbaren Teilen Ihrer HTML-Seite. Beispiel: Wenn alle Seiten Ihrer Website
div
eine ID mit der ID habenarticle-content
, die den Text des Artikels enthält, ist es trivial, ein Skript zu schreiben, um alle Artikelseiten Ihrer Website zu besuchen und den Inhaltstext desarticle-content
div zu extrahieren Auf jeder Artikelseite und voilà hat der Scraper alle Artikel von Ihrer Site in einem Format, das an anderer Stelle wiederverwendet werden kann.Wenn Sie den HTML-Code und die Struktur Ihrer Seiten häufig ändern, funktionieren solche Scraper nicht mehr.
Sie können die IDs und Elementklassen in Ihrem HTML-Code häufig ändern, möglicherweise sogar automatisch. Wenn Sie also so
div.article-content
etwas wiediv.a4c36dda13eaf0
werden und sich jede Woche ändern, funktioniert der Schaber zunächst einwandfrei, bricht jedoch nach einer Woche ab. Stellen Sie sicher, dass Sie auch die Länge Ihrer IDs / Klassen ändern, da sonst derdiv.[any-14-characters]
Scraper stattdessen das gewünschte Div findet. Achten Sie auch auf andere ähnliche Löcher.Wenn es nicht möglich ist, den gewünschten Inhalt aus dem Markup zu finden, wird der Scraper dies anhand der Struktur des HTML-Codes tun. Wenn also alle Ihre Artikelseiten dahingehend ähnlich sind, dass jedes
div
in a,div
das nach ah1
kommt, der Artikelinhalt ist, erhalten Schaber den Artikelinhalt basierend darauf. Um dies zu verhindern, können Sie Ihrem HTML-Code regelmäßig und zufällig zusätzliches Markup hinzufügen / entfernen, z. Hinzufügen von zusätzlichendiv
s oderspan
s. Bei der modernen serverseitigen HTML-Verarbeitung sollte dies nicht zu schwierig sein.Dinge, die Sie beachten sollten:
Es wird mühsam und schwierig zu implementieren, zu warten und zu debuggen sein.
Sie werden das Caching behindern. Insbesondere wenn Sie IDs oder Klassen Ihrer HTML-Elemente ändern, sind entsprechende Änderungen an Ihren CSS- und JavaScript-Dateien erforderlich. Dies bedeutet, dass diese bei jeder Änderung vom Browser erneut heruntergeladen werden müssen. Dies führt zu längeren Ladezeiten für wiederkehrende Besucher und einer erhöhten Serverlast. Wenn Sie es nur einmal pro Woche ändern, wird es kein großes Problem sein.
Clevere Schaber können Ihren Inhalt weiterhin abrufen, indem sie ableiten, wo sich der tatsächliche Inhalt befindet, z. durch das Wissen, dass ein großer einzelner Textblock auf der Seite wahrscheinlich der eigentliche Artikel ist. Dies ermöglicht es, die gewünschten Daten weiterhin auf der Seite zu finden und zu extrahieren. Boilerpipe macht genau das.
Stellen Sie im Wesentlichen sicher, dass es für ein Skript nicht einfach ist, den tatsächlichen gewünschten Inhalt für jede ähnliche Seite zu finden.
Weitere Informationen dazu, wie dies in PHP implementiert werden kann, finden Sie unter Verhindern, dass Crawler in Abhängigkeit von XPath Seiteninhalte abrufen.
Ändern Sie Ihren HTML-Code basierend auf dem Standort des Benutzers
Dies ähnelt dem vorherigen Tipp. Wenn Sie je nach Standort / Land Ihres Benutzers (bestimmt durch die IP-Adresse) unterschiedlichen HTML-Code bereitstellen, können die an Benutzer gelieferten Scraper beschädigt werden. Wenn zum Beispiel jemand eine mobile App schreibt, die Daten von Ihrer Website entfernt, funktioniert dies zunächst einwandfrei, bricht jedoch ab, wenn sie tatsächlich an Benutzer verteilt wird, da sich diese Benutzer möglicherweise in einem anderen Land befinden, und erhält daher einen anderen HTML-Code, den die Der eingebettete Schaber wurde nicht zum Verzehr entwickelt.
Ändern Sie häufig Ihren HTML-Code und schrauben Sie dabei aktiv mit den Schabern!
Ein Beispiel: Sie haben eine Suchfunktion auf Ihrer Website unter
example.com/search?query=somesearchquery
, die den folgenden HTML-Code zurückgibt:Wie Sie vielleicht vermutet haben, ist dies leicht zu kratzen: Ein Scraper muss lediglich die Such-URL mit einer Abfrage treffen und die gewünschten Daten aus dem zurückgegebenen HTML-Code extrahieren. Sie können den HTML-Code nicht nur wie oben beschrieben regelmäßig ändern , sondern auch das alte Markup mit den alten IDs und Klassen belassen, es mit CSS ausblenden und mit gefälschten Daten füllen, wodurch der Scraper vergiftet wird. So könnte die Suchergebnisseite geändert werden:
Dies bedeutet, dass Scraper, die zum Extrahieren von Daten aus dem HTML-Code basierend auf Klassen oder IDs geschrieben wurden, scheinbar weiterhin funktionieren, aber gefälschte Daten oder sogar Anzeigen erhalten, Daten, die echte Benutzer niemals sehen werden, da sie mit CSS versteckt sind.
Schrauben Sie mit dem Schaber: Fügen Sie gefälschte, unsichtbare Honeypot-Daten in Ihre Seite ein
Wenn Sie das vorherige Beispiel ergänzen, können Sie Ihrem HTML-Code unsichtbare Honeypot-Elemente hinzufügen, um Schaber zu fangen. Ein Beispiel, das der zuvor beschriebenen Suchergebnisseite hinzugefügt werden könnte:
Ein Scraper, der geschrieben wurde, um alle Suchergebnisse zu erhalten, nimmt dies auf, genau wie alle anderen echten Suchergebnisse auf der Seite, und besucht den Link, um nach dem gewünschten Inhalt zu suchen. Ein echter Mensch wird es niemals sehen (da es mit CSS versteckt ist) und den Link nicht besuchen. Eine echte und begehrenswerte Spinne wie die von Google wird den Link ebenfalls nicht besuchen, da Sie dies
/scrapertrap/
in Ihrer robots.txt nicht zugelassen haben.Sie können beispielsweise den
scrapertrap.php
Zugriff für die IP-Adresse blockieren, die sie besucht hat, oder ein Captcha für alle nachfolgenden Anforderungen von dieser IP erzwingen.Vergessen Sie nicht, Ihr honeypot (
/scrapertrap/
) in Ihrer robots.txt-Datei zu verbieten , damit Suchmaschinen-Bots nicht hineinfallen.Sie können / sollten dies mit dem vorherigen Tipp kombinieren, Ihr HTML häufig zu ändern.
Ändern Sie dies auch häufig, da Schaber irgendwann lernen werden, dies zu vermeiden. Ändern Sie die Honeypot-URL und den Text. Sie sollten auch in Betracht ziehen, das zum Ausblenden verwendete Inline-CSS zu ändern und stattdessen ein ID-Attribut und externes CSS zu verwenden, da Scraper lernen, alles zu vermeiden, was ein
style
Attribut mit CSS zum Ausblenden des Inhalts enthält. Versuchen Sie auch, es nur manchmal zu aktivieren, damit der Schaber zunächst funktioniert, aber nach einer Weile kaputt geht. Dies gilt auch für den vorherigen Tipp.Böswillige Personen können den Zugriff für echte Benutzer verhindern, indem sie einen Link zu Ihrem Honeypot freigeben oder diesen Link sogar irgendwo als Bild einbetten (z. B. in einem Forum). Ändern Sie die URL häufig und verkürzen Sie die Sperrzeiten relativ.
Stellen Sie gefälschte und nutzlose Daten bereit, wenn Sie einen Schaber entdecken
Wenn Sie feststellen, was offensichtlich ein Schaber ist, können Sie gefälschte und nutzlose Daten bereitstellen. Dadurch werden die Daten beschädigt, die der Scraper von Ihrer Website erhält. Sie sollten es auch unmöglich machen, solche gefälschten Daten von realen Daten zu unterscheiden, damit die Schaber nicht wissen, dass sie verschraubt werden.
Als Beispiel: Sie haben eine Nachrichten-Website; Wenn Sie einen Schaber entdecken, anstatt den Zugriff zu blockieren, servieren Sie gefälschte, zufällig generierte Artikel. Dadurch werden die Daten vergiftet, die der Schaber erhält. Wenn Sie Ihre gefälschten Daten nicht von der realen Sache unterscheiden, wird es für Schaber schwierig, das zu bekommen, was sie wollen, nämlich die tatsächlichen, realen Daten.
Akzeptieren Sie keine Anfragen, wenn der User Agent leer ist / fehlt
Faul geschriebene Scraper senden häufig keinen User Agent-Header mit ihrer Anfrage, wohingegen alle Browser sowie Suchmaschinenspinnen dies tun.
Wenn Sie eine Anfrage erhalten, bei der der User Agent-Header nicht vorhanden ist, können Sie ein Captcha anzeigen oder den Zugriff einfach blockieren oder einschränken. (Oder liefern Sie gefälschte Daten wie oben beschrieben oder etwas anderes ..)
Es ist trivial zu fälschen, aber als Maßnahme gegen schlecht geschriebene Schaber lohnt es sich, sie zu implementieren.
Akzeptieren Sie keine Anfragen, wenn der User Agent ein gewöhnlicher Scraper ist. schwarze Liste von Schabern verwendet
In einigen Fällen verwenden Scraper einen User Agent, den kein echter Browser oder Suchmaschinen-Spider verwendet, wie z.
Wenn Sie feststellen, dass eine bestimmte User Agent-Zeichenfolge von Scrapern auf Ihrer Website verwendet wird und nicht von echten Browsern oder legitimen Spinnen verwendet wird, können Sie sie auch Ihrer Blacklist hinzufügen.
Wenn keine Assets (CSS, Bilder) angefordert werden, handelt es sich nicht um einen echten Browser.
Ein echter Browser fordert (fast immer) Assets wie Bilder und CSS an und lädt sie herunter. HTML-Parser und Scraper werden dies nicht tun, da sie nur an den tatsächlichen Seiten und deren Inhalten interessiert sind.
Sie können Anforderungen in Ihren Assets protokollieren. Wenn Sie nur für HTML viele Anforderungen sehen, handelt es sich möglicherweise um einen Scraper.
Beachten Sie, dass Suchmaschinen-Bots, alte mobile Geräte, Bildschirmleser und falsch konfigurierte Geräte möglicherweise auch keine Assets anfordern.
Cookies verwenden und benötigen; Verwenden Sie sie, um Benutzer- und Schaberaktionen zu verfolgen.
Sie können die Aktivierung von Cookies verlangen, um Ihre Website anzeigen zu können. Dies wird unerfahrene und unerfahrene Schaberautoren abschrecken, es ist jedoch für einen Schaber einfach, Cookies zu senden. Wenn Sie sie verwenden und benötigen, können Sie Benutzer- und Scraper-Aktionen mit ihnen verfolgen und so Ratenbegrenzungen, Blockierungen oder Anzeigen von Captchas pro Benutzer anstelle einer IP-Basis implementieren.
Beispiel: Wenn der Benutzer eine Suche durchführt, setzen Sie ein eindeutiges identifizierendes Cookie. Überprüfen Sie dieses Cookie, wenn die Ergebnisseiten angezeigt werden. Wenn der Benutzer alle Suchergebnisse öffnet (das können Sie dem Cookie entnehmen), handelt es sich wahrscheinlich um einen Schaber.
Die Verwendung von Cookies kann unwirksam sein, da Schaber die Cookies auch mit ihren Anforderungen senden und bei Bedarf verwerfen können. Sie verhindern auch den Zugriff für echte Benutzer, bei denen Cookies deaktiviert sind, wenn Ihre Website nur mit Cookies funktioniert.
Beachten Sie, dass Sie, wenn Sie JavaScript zum Setzen und Abrufen des Cookies verwenden, Scraper blockieren, auf denen kein JavaScript ausgeführt wird, da sie das Cookie nicht mit ihrer Anforderung abrufen und senden können.
Verwenden Sie JavaScript + Ajax, um Ihre Inhalte zu laden
Sie können JavaScript + AJAX verwenden, um Ihren Inhalt zu laden, nachdem die Seite selbst geladen wurde. Dadurch wird der Inhalt für HTML-Parser, auf denen kein JavaScript ausgeführt wird, unzugänglich. Dies ist oft eine wirksame Abschreckung für Neulinge und unerfahrene Programmierer, die Schaber schreiben.
Sich bewusst sein:
Die Verwendung von JavaScript zum Laden des eigentlichen Inhalts beeinträchtigt die Benutzererfahrung und -leistung
Suchmaschinen führen möglicherweise auch kein JavaScript aus, sodass sie Ihre Inhalte nicht indizieren können. Dies ist möglicherweise kein Problem für Suchergebnisseiten, aber möglicherweise auch für andere Dinge, z. B. Artikelseiten.
Verschleiern Sie Ihr Markup, Netzwerkanforderungen von Skripten und alles andere.
Wenn Sie Ajax und JavaScript zum Laden Ihrer Daten verwenden, verschleiern Sie die übertragenen Daten. Beispielsweise könnten Sie Ihre Daten auf dem Server codieren (mit etwas so Einfachem wie base64 oder komplexer) und sie dann nach dem Abrufen über Ajax dekodieren und auf dem Client anzeigen. Dies bedeutet, dass jemand, der den Netzwerkverkehr überprüft, nicht sofort sieht, wie Ihre Seite funktioniert und Daten lädt, und es für jemanden schwieriger ist, Anforderungsdaten direkt von Ihren Endpunkten anzufordern, da er Ihren Entschlüsselungsalgorithmus rückentwickeln muss.
Wenn Sie Ajax zum Laden der Daten verwenden, sollten Sie es schwierig machen, die Endpunkte zu verwenden, ohne zuerst die Seite zu laden, z. B. indem Sie einen Sitzungsschlüssel als Parameter benötigen, den Sie in Ihr JavaScript oder Ihren HTML-Code einbetten können.
Sie können Ihre verschleierten Daten auch direkt in die ursprüngliche HTML-Seite einbetten und sie mit JavaScript deobfuscieren und anzeigen, wodurch zusätzliche Netzwerkanforderungen vermieden werden. Dadurch wird es erheblich schwieriger, die Daten mit einem Nur-HTML-Parser zu extrahieren, auf dem kein JavaScript ausgeführt wird, da derjenige, der den Scraper schreibt, Ihr JavaScript rückentwickeln muss (was Sie auch verschleiern sollten).
Möglicherweise möchten Sie Ihre Verschleierungsmethoden regelmäßig ändern, um Schaber zu beschädigen, die es herausgefunden haben.
Dies zu tun hat jedoch mehrere Nachteile:
Es wird mühsam und schwierig zu implementieren, zu warten und zu debuggen sein.
Es ist unwirksam gegen Scraper und Screenscraper, die tatsächlich JavaScript ausführen und dann die Daten extrahieren. (Die meisten einfachen HTML-Parser führen jedoch kein JavaScript aus.)
Dadurch wird Ihre Website für echte Benutzer funktionsunfähig, wenn JavaScript deaktiviert ist.
Die Leistung und die Ladezeiten der Seiten leiden darunter.
Nicht technisch:
Sagen Sie den Leuten, sie sollen nicht kratzen, und einige werden es respektieren
Finde einen Anwalt
Stellen Sie Ihre Daten zur Verfügung und stellen Sie eine API bereit:
Sie könnten Ihre Daten leicht verfügbar machen und eine Zuordnung und einen Link zurück zu Ihrer Site benötigen. Vielleicht $$$ dafür verlangen.
Verschiedenes:
Es gibt auch kommerzielle Scraping-Schutzdienste, wie das Anti-Scraping von Cloudflare oder Distill Networks (Details zur Funktionsweise hier ), die diese Dinge tun, und vieles mehr für Sie.
Finden Sie ein Gleichgewicht zwischen Benutzerfreundlichkeit für echte Benutzer und Abstreifsicherheit: Alles, was Sie tun, wirkt sich auf die eine oder andere Weise negativ auf die Benutzererfahrung aus. Finden Sie Kompromisse.
Vergessen Sie nicht Ihre mobile Website und Apps. Wenn Sie über eine mobile App verfügen, kann diese ebenfalls gescreent werden, und der Netzwerkverkehr kann überprüft werden, um die verwendeten REST-Endpunkte zu ermitteln.
Schaber können andere Schaber kratzen: Wenn es eine Website gibt, auf der Inhalte von Ihrer abgekratzt wurden, können andere Schaber von der Website dieses Schabers kratzen.
Weiterführende Literatur:
Wikipedia-Artikel über Web Scraping . Viele Details zu den beteiligten Technologien und den verschiedenen Arten von Web Scraper.
Verhindern Sie, dass Scripter Ihre Website hunderte Male pro Sekunde zuschlagen . Fragen und Antworten zu einem sehr ähnlichen Problem - Bots, die eine Website überprüfen und Dinge kaufen, sobald sie in den Verkauf gehen. Viele relevante Informationen, insb. auf Captchas und Ratenbegrenzung.
quelle
A real browser will (almost always) request and download assets such as images and CSS
auch für barrierefreie leser? CAPTCHA ist kaputt, so dass zumindest professionelle Dienstleistungen wahrscheinlich nicht dadurch behindert werden. Die Verwendung von Cookies erfordert eine Benachrichtigung / Zustimmung in der EU.Find a balance between usability for real users and scraper-proofness
Balance zwischen Programmierzeit / Komplexität und finanziellem Nutzen.Ich gehe davon aus, dass Sie eingerichtet haben
robots.txt
.Wie andere bereits erwähnt haben, können Schaber fast jeden Aspekt ihrer Aktivitäten vortäuschen, und es ist wahrscheinlich sehr schwierig, die Anfragen zu identifizieren, die von den Bösen kommen.
Ich würde überlegen:
/jail.html
.robots.txt
(so dass die respektvollen Spinnen niemals besuchen werden).display: none
)./jail.html
.Dies kann Ihnen helfen, Anfragen von Schabern schnell zu identifizieren, die Ihre offenkundig ignorieren
robots.txt
.Vielleicht wollen Sie auch Ihre macht
/jail.html
eine ganze gesamte Website, die die gleichen, genauen Markup wie normale Seiten, aber mit gefälschten Daten (/jail/album/63ajdka
,/jail/track/3aads8
usw.). Auf diese Weise werden die fehlerhaften Schaber nicht auf "ungewöhnliche Eingaben" aufmerksam gemacht, bis Sie die Möglichkeit haben, sie vollständig zu blockieren.quelle
Sue sie.
Im Ernst: Wenn Sie etwas Geld haben, sprechen Sie mit einem guten, netten, jungen Anwalt, der sich im Internet auskennt. Hier könnte man wirklich etwas tun können. Je nachdem, wo sich die Websites befinden, kann ein Anwalt in Ihrem Land eine Unterlassungsverfügung oder eine gleichwertige Vereinbarung treffen. Möglicherweise können Sie die Bastarde zumindest erschrecken.
Dokumentieren Sie das Einfügen Ihrer Dummy-Werte. Fügen Sie Dummy-Werte ein, die deutlich (aber dunkel) auf Sie verweisen. Ich denke, dass dies bei Telefonbuchfirmen üblich ist, und hier in Deutschland gab es mehrere Fälle, in denen Nachahmer durch gefälschte Einträge, die sie 1: 1 kopierten, in die Knie gezwungen wurden.
Es wäre eine Schande, wenn dies Sie dazu bringen würde, Ihren HTML-Code durcheinander zu bringen, SEO, Gültigkeit und andere Dinge zu beeinträchtigen (obwohl ein Template-System, das bei jeder Anfrage nach identischen Seiten eine etwas andere HTML-Struktur verwendet, möglicherweise bereits viel dagegen hilft Scraper, die sich immer auf HTML-Strukturen und Klassen- / ID-Namen stützen, um den Inhalt herauszuholen.)
Für solche Fälle sind Urheberrechte gut. Die ehrliche Arbeit anderer Leute abzureißen, um damit Geld zu verdienen, ist etwas, gegen das man kämpfen sollte.
quelle
Es gibt wirklich nichts, was Sie tun können, um dies vollständig zu verhindern. Scraper können ihren Benutzeragenten fälschen, mehrere IP-Adressen verwenden usw. und als normaler Benutzer angezeigt werden. Das einzige, was Sie tun können, ist, den Text zum Zeitpunkt des Ladens der Seite nicht verfügbar zu machen - erstellen Sie ihn mit Bild, Flash oder laden Sie ihn mit JavaScript. Die ersten beiden sind jedoch schlechte Ideen, und die letzte wäre ein Problem mit der Barrierefreiheit, wenn JavaScript für einige Ihrer regulären Benutzer nicht aktiviert ist.
Wenn sie Ihre Website absolut zuschlagen und alle Ihre Seiten durchsuchen, können Sie eine Art Ratenbegrenzung vornehmen.
Es gibt jedoch einige Hoffnung. Scraper verlassen sich darauf, dass die Daten Ihrer Site in einem konsistenten Format vorliegen. Wenn Sie es irgendwie randomisieren könnten, könnte es ihren Schaber brechen. Dinge wie das Ändern der ID oder der Klassennamen von Seitenelementen bei jedem Laden usw. Aber das ist eine Menge Arbeit und ich bin mir nicht sicher, ob es sich lohnt. Und selbst dann könnten sie es wahrscheinlich mit genügend Engagement umgehen.
quelle
Stellen Sie eine XML-API bereit, um auf Ihre Daten zuzugreifen. auf eine Weise, die einfach zu bedienen ist. Wenn die Leute Ihre Daten wollen, bekommen sie sie, Sie können genauso gut alles geben.
Auf diese Weise können Sie eine Teilmenge der Funktionen auf effektive Weise bereitstellen und sicherstellen, dass zumindest die Scraper keine HTTP-Anforderungen und keine große Bandbreite verschlingen.
Dann müssen Sie nur noch die Personen überzeugen, die möchten, dass Ihre Daten die API verwenden. ;)
quelle
Entschuldigung, das ist wirklich ziemlich schwer ...
Ich würde vorschlagen, dass Sie sie höflich bitten, Ihre Inhalte nicht zu verwenden (wenn Ihre Inhalte urheberrechtlich geschützt sind).
Wenn sie ist , und sie nehmen es nicht nach unten, dann können Sie furthur Maßnahmen ergreifen und ihnen eine schicke Unterlassungserklärung .
Im Allgemeinen wird alles, was Sie tun, um ein Schaben zu verhindern, wahrscheinlich einen negativeren Effekt haben, z. B. Zugänglichkeit, Bots / Spinnen usw.
quelle
Okay, wie alle Beiträge sagen, wenn Sie es suchmaschinenfreundlich machen wollen, können Bots sicher kratzen.
Aber Sie können noch ein paar Dinge tun, und es kann für 60-70% Scraping-Bots von Bedeutung sein.
Erstellen Sie ein Überprüfungsskript wie unten.
Wenn eine bestimmte IP-Adresse sehr schnell besucht wird, geben Sie nach einigen Besuchen (5-10) ihre IP-Adresse + Browserinformationen in eine Datei oder Datenbank ein.
Der nächste Schritt
(Dies wäre ein Hintergrundprozess, der ständig ausgeführt oder nach einigen Minuten geplant wird.) Erstellen Sie ein anderes Skript, das diese verdächtigen IP-Adressen weiterhin überprüft.
Fall 1. Wenn der Benutzeragent einer bekannten Suchmaschine wie Google, Bing oder Yahoo angehört (weitere Informationen zu Benutzeragenten finden Sie, indem Sie ihn googeln). Dann müssen Sie http://www.iplists.com/ sehen . Diese Liste und versuchen, Muster abzugleichen. Und wenn es wie ein gefälschter User-Agent aussieht, bitten Sie beim nächsten Besuch, ein CAPTCHA auszufüllen . (Sie müssen etwas mehr über Bots-IP-Adressen recherchieren. Ich weiß, dass dies erreichbar ist, und versuchen Sie auch, die IP-Adresse zu ermitteln. Dies kann hilfreich sein.)
Fall 2. Kein Benutzeragent eines Suchbot: Bitten Sie einfach darum, beim nächsten Besuch ein CAPTCHA auszufüllen.
quelle
Späte Antwort - und auch diese Antwort ist wahrscheinlich nicht die, die Sie hören möchten ...
Ich selbst habe bereits viele (viele zehn) verschiedene spezialisierte Data-Mining-Schaber geschrieben. (nur weil ich die "Open Data" -Philosophie mag).
Hier sind bereits viele Ratschläge in anderen Antworten - jetzt werde ich die Fürsprecherrolle des Teufels spielen und ihre Wirksamkeit erweitern und / oder korrigieren.
Zuerst:
Der Versuch, einige technische Barrieren zu nutzen, ist die folgenden Probleme nicht wert:
Einfaches HMTL - Der einfachste Weg ist das Analysieren der einfachen HTML-Seiten mit genau definierten Struktur- und CSS-Klassen. Zum Beispiel reicht es aus, das Element mit Firebug zu untersuchen und die richtigen Xpaths und / oder CSS-Pfade in meinem Scraper zu verwenden.
Sie können die HTML-Struktur dynamisch generieren und auch die CSS-Klassennamen (und auch das CSS selbst) dynamisch generieren (z. B. mithilfe einiger zufälliger Klassennamen) - aber
Sie können die Struktur nicht für jede Antwort ändern, da Ihre regulären Benutzer Sie hassen werden. Dies verursacht auch mehr Probleme für Sie (Wartung), nicht für den Schaber. Der XPath- oder CSS-Pfad wird vom Scraping-Skript automatisch anhand des bekannten Inhalts bestimmt.
Ajax - am Anfang etwas schwieriger, beschleunigt aber oft den Schabeprozess :) - warum?
Bei der Analyse der Anfragen und Antworten richte ich einfach meinen eigenen Proxyserver (in Perl geschrieben) ein und mein Firefox verwendet ihn. Da es sich um meinen eigenen Proxy handelt - er ist vollständig verborgen -, sieht der Zielserver ihn natürlich als normalen Browser an. (Also kein X-Forwarded-For und solche Header). Basierend auf den Proxy-Protokollen ist es meistens möglich, die "Logik" der Ajax-Anforderungen zu bestimmen, z. B. könnte ich den größten Teil des HTML-Scrapings überspringen und nur die gut strukturierten Ajax-Antworten verwenden (meistens im JSON-Format).
Der Ajax hilft also nicht viel ...
Einige komplizierter sind Seiten, die viel gepackte Javascript-Funktionen verwenden .
Hier können zwei grundlegende Methoden verwendet werden:
Ein solches Scraping ist langsam (das Scraping erfolgt wie im normalen Browser), ist es aber
Die User-Agent- basierte Filterung hilft überhaupt nicht. Jeder ernsthafte Data Miner wird es auf einen korrekten Wert in seinem Scraper einstellen.
Login erforderlich - hilft nicht. Der einfachste Weg, dies zu übertreffen (ohne das Anmeldeprotokoll zu analysieren und / oder zu skripten), besteht darin, sich als regulärer Benutzer mit Mozilla bei der Site anzumelden und anschließend den Mozrepl-basierten Scraper auszuführen ...
Denken Sie daran, dass die erforderliche Anmeldung für anonyme Bots hilfreich ist, jedoch nicht gegen jemanden, der Ihre Daten kratzen möchte. Er registriert sich einfach auf Ihrer Website als regulärer Benutzer.
Die Verwendung von Frames ist ebenfalls nicht sehr effektiv. Dies wird von vielen Live-Filmdiensten verwendet und ist nicht sehr schwer zu übertreffen. Die Frames sind einfach eine weitere HTML / Javascript-Seite, die zur Analyse benötigt wird ... Wenn die Daten die Probleme wert sind, führt der Data Miner die erforderliche Analyse durch.
IP-basierte Begrenzung ist überhaupt nicht effektiv - hier gibt es zu viele öffentliche Proxyserver und auch hier ist der TOR ... :) Es verlangsamt das Scraping nicht (für jemanden, der Ihre Daten wirklich will).
Sehr schwer ist es, Daten in Bildern zu kratzen. (zB einfach die Daten serverseitig in Bilder konvertieren). Der Einsatz von "Tesseract" (OCR) hilft oft - aber ehrlich gesagt - die Daten müssen die Probleme für den Schaber wert sein. (was oft nicht wert ist).
Auf der anderen Seite werden Ihre Benutzer Sie dafür hassen. Ich selbst (auch wenn ich nicht kratzt) hasse Websites, die es nicht erlauben, den Seiteninhalt in die Zwischenablage zu kopieren (weil die Informationen in den Bildern enthalten sind, oder (die dummen) versuchen, mit der rechten Maustaste auf ein benutzerdefiniertes Javascript-Ereignis zu klicken .: )
Am schwierigsten sind die Websites, die Java-Applets oder Flash verwenden , und das Applet verwendet intern sichere https- Anforderungen . Aber überlegen Sie es sich zweimal - wie glücklich werden Ihre iPhone-Nutzer sein ...;). Daher verwenden derzeit nur sehr wenige Websites diese. Ich selbst blockiere alle Flash-Inhalte in meinem Browser (in regulären Browsersitzungen) - und verwende niemals Websites, die von Flash abhängen.
Ihre Meilensteine könnten ... sein, also können Sie diese Methode ausprobieren - denken Sie daran - Sie werden wahrscheinlich einige Ihrer Benutzer verlieren. Denken Sie auch daran, dass einige SWF-Dateien dekompilierbar sind. ;)
Captcha (die guten - wie reCaptcha) hilft sehr - aber Ihre Benutzer werden Sie hassen ... - Stellen Sie sich vor, wie Ihre Benutzer Sie lieben werden, wenn sie auf allen Seiten einige Captchas lösen müssen, die Informationen über die Musikkünstler enthalten.
Wahrscheinlich müssen Sie nicht fortfahren - Sie sind bereits ins Bild gekommen.
Was sollten Sie jetzt tun:
Denken Sie daran: Es ist fast unmöglich, Ihre Daten zu verbergen, wenn Sie sie auf der anderen Seite (auf freundliche Weise) für Ihre regulären Benutzer veröffentlichen möchten.
So,
Überlegen Sie zweimal, bevor Sie versuchen, einige technische Hindernisse zu überwinden.
Anstatt zu versuchen, die Data Miner zu blockieren, erhöhen Sie einfach die Benutzerfreundlichkeit Ihrer Website. Ihr Benutzer wird Sie lieben. Die Zeit (und Energie), die in technische Barrieren investiert wird, ist normalerweise nicht wert - verbringen Sie die Zeit besser damit, eine noch bessere Website zu erstellen ...
Außerdem sind Datendiebe nicht wie normale Diebe.
Wenn Sie einen preiswerten Hausalarm kaufen und eine Warnung hinzufügen: "Dieses Haus ist mit der Polizei verbunden", werden viele Diebe nicht einmal versuchen, einzubrechen. Weil eine falsche Bewegung von ihm - und er ins Gefängnis geht ...
Sie investieren also nur wenig Geld, aber der Dieb investiert und riskiert viel.
Aber der Datendieb hat solche Risiken nicht. Im Gegenteil - wenn Sie einen falschen Schritt machen (z. B. wenn Sie aufgrund technischer Hindernisse einen Fehler einführen), verlieren Sie Ihre Benutzer. Wenn der Scraping-Bot zum ersten Mal nicht funktioniert, passiert nichts - der Data Miner versucht nur einen anderen Ansatz und / oder debuggt das Skript.
In diesem Fall müssen Sie viel mehr investieren - und der Schaber viel weniger.
Denken Sie nur daran, wo Sie Ihre Zeit und Energie investieren möchten ...
Ps: Englisch ist nicht meine Muttersprache - also vergib mir mein gebrochenes Englisch ...
quelle
Aus technischer Sicht: Modellieren Sie einfach, was Google tut, wenn Sie zu viele Anfragen gleichzeitig stellen. Das sollte vieles zum Erliegen bringen.
Aus rechtlicher Sicht: Es scheint, dass die von Ihnen veröffentlichten Daten nicht urheberrechtlich geschützt sind. Das heißt, Sie veröffentlichen Namen, Statistiken und andere Informationen, die nicht urheberrechtlich geschützt sind.
In diesem Fall verletzen die Schaber nicht das Urheberrecht, indem sie Ihre Informationen über den Künstlernamen usw. weitergeben. Sie verletzen jedoch möglicherweise das Urheberrecht, wenn sie Ihre Site in den Speicher laden, da Ihre Site Elemente enthält, die urheberrechtlich geschützt sind (wie Layout usw.).
Ich empfehle, über Facebook v. Power.com zu lesen und die Argumente zu sehen, mit denen Facebook das Scraping des Bildschirms gestoppt hat. Es gibt viele legale Möglichkeiten, wie Sie versuchen können, jemanden davon abzuhalten, Ihre Website zu kratzen. Sie können weitreichend und einfallsreich sein. Manchmal kaufen die Gerichte die Argumente. Manchmal tun sie es nicht.
Angenommen, Sie veröffentlichen gemeinfreie Informationen, die nicht urheberrechtlich geschützt sind, wie Namen und grundlegende Statistiken. Sie sollten sie einfach im Namen der Redefreiheit und der offenen Daten loslassen. Darum geht es im Web.
quelle
Dinge, die gegen Anfängerschaber wirken könnten:
Dinge, die im Allgemeinen helfen:
Dinge, die helfen, aber Ihre Benutzer dazu bringen, Sie zu hassen:
quelle
Ich habe viel Web-Scraping durchgeführt und einige Techniken zusammengefasst, um Web-Scraper in meinem Blog zu stoppen, basierend auf dem, was ich als störend empfinde.
Es ist ein Kompromiss zwischen Ihren Benutzern und Schabern. Wenn Sie IPs einschränken, CAPTCHAs verwenden, sich anmelden usw., machen Sie es den Schabern schwer. Dies kann aber auch Ihre echten Benutzer vertreiben.
quelle
Ihre beste Option ist leider ziemlich manuell: Suchen Sie nach Verkehrsmustern, von denen Sie glauben, dass sie auf Scraping hinweisen, und verbieten Sie deren IP-Adressen.
Da es sich um eine öffentliche Site handelt, wird die Site durch Scrapen der Site auch suchmaschinenfreundlich. Wenn eine Suchmaschine Ihre Website crawlen und kratzen kann, kann dies auch ein böswilliger Scraper. Es ist eine feine Linie zu gehen.
quelle
Sicher ist es möglich. Schalten Sie Ihre Website für 100% Erfolg offline.
In Wirklichkeit können Sie einige Dinge tun , die das Schaben etwas erschweren. Google führt Browserprüfungen durch, um sicherzustellen, dass Sie kein Roboter sind, der Suchergebnisse abkratzt (obwohl dies, wie fast alles andere, gefälscht werden kann).
Sie können beispielsweise einige Sekunden zwischen der ersten Verbindung zu Ihrer Site und nachfolgenden Klicks benötigen. Ich bin mir nicht sicher, was der ideale Zeitpunkt wäre oder wie ich es genau machen soll, aber das ist eine andere Idee.
Ich bin sicher, dass es einige andere Leute gibt, die viel mehr Erfahrung haben, aber ich hoffe, dass diese Ideen zumindest etwas hilfreich sind.
quelle
Es gibt einige Dinge, die Sie tun können, um Bildschirmkratzer zu verhindern. Einige sind nicht sehr effektiv, andere (ein CAPTCHA), behindern jedoch die Benutzerfreundlichkeit. Sie müssen auch bedenken, dass dies legitime Site-Scraper wie Suchmaschinenindizes behindern kann.
Ich gehe jedoch davon aus, dass wenn Sie nicht möchten, dass es verschrottet wird, dies bedeutet, dass Sie nicht möchten, dass Suchmaschinen es auch indizieren.
Hier sind einige Dinge, die Sie ausprobieren können:
Wenn ich dies tun müsste, würde ich wahrscheinlich eine Kombination der letzten drei verwenden, da diese die Unannehmlichkeiten für legitime Benutzer minimieren. Sie müssten jedoch akzeptieren, dass Sie nicht alle auf diese Weise blockieren können, und wenn jemand herausfindet, wie er es umgehen kann, kann er es für immer kratzen. Sie könnten dann einfach versuchen, ihre IP-Adressen zu blockieren, wenn Sie sie entdecken, denke ich.
quelle
Es ist nicht die Antwort, die Sie wahrscheinlich wollen, aber warum sollten Sie verbergen, was Sie veröffentlichen möchten?
quelle
Methode 1 (nur kleine Sites):
Verschlüsselte / verschlüsselte Daten bereitstellen.
Ich habe das Web mit Python (urllib, Anfragen, beautifulSoup usw.) gestaltet und viele Websites gefunden, die verschlüsselte / verschlüsselte Daten bereitstellen, die in keiner Programmiersprache entschlüsselt werden können, nur weil die Verschlüsselungsmethode nicht existiert.
Ich habe dies auf einer PHP-Website erreicht, indem ich die Ausgabe verschlüsselt und minimiert habe (WARNUNG: Dies ist keine gute Idee für große Websites). Die Antwort war immer durcheinandergebrachter Inhalt.
Beispiel für die Minimierung der Ausgabe in PHP ( Wie minimiere ich die HTML-Ausgabe von PHP-Seiten? ):
Methode 2:
Wenn Sie sie nicht aufhalten können, schrauben Sie sie über und liefern Sie gefälschte / nutzlose Daten als Antwort.
Methode 3:
Blockieren Sie häufig verwendete Scraping-Benutzeragenten. Dies wird auf großen / großen Websites angezeigt, da es unmöglich ist, sie mit "python3.4" als User-Agent zu scrapen.
Methode 4:
Stellen Sie sicher, dass alle Benutzer-Header gültig sind. Manchmal stelle ich so viele Header wie möglich bereit, damit mein Scraper wie ein authentischer Benutzer erscheint. Einige davon sind nicht einmal wahr oder gültig wie en-FU :).
Hier ist eine Liste einiger der Header, die ich normalerweise zur Verfügung stelle.
quelle
Anstatt Bots auf die schwarze Liste zu setzen, sollten Sie sie vielleicht auf die Whitelist setzen. Wenn Sie Ihre Suchergebnisse für die wenigen Top-Engines nicht löschen möchten, können Sie deren User-Agent-Zeichenfolgen auf die Whitelist setzen, die im Allgemeinen gut bekannt sind. Die weniger ethischen Bots neigen dazu, User-Agent-Strings beliebter Webbrowser zu fälschen. Die wenigen Top-Suchmaschinen sollten mehr als 95% Ihres Datenverkehrs erreichen.
Die Identifizierung der Bots selbst sollte unter Verwendung der von anderen Postern vorgeschlagenen Techniken recht einfach sein.
quelle
Ein schneller Ansatz wäre, eine Spreng- / Bot-Falle zu stellen.
Erstellen Sie eine Seite, die bestimmte Informationen wie die IP-Adresse und so weiter erfasst, wenn sie eine bestimmte Anzahl von Malen oder gar nicht geöffnet wird (Sie können auch Unregelmäßigkeiten oder Muster berücksichtigen, aber diese Seite sollte überhaupt nicht geöffnet werden müssen).
Erstellen Sie auf Ihrer Seite einen Link dazu, der mit der CSS-Anzeige ausgeblendet ist: keine; oder links: -9999px; Position: absolut; Versuchen Sie, es an Stellen zu platzieren, an denen es weniger unwahrscheinlich ist, dass es ignoriert wird, z. B. an Stellen, an denen Ihr Inhalt unterliegt, und nicht an Ihrer Fußzeile, da Bots manchmal bestimmte Teile einer Seite vergessen können.
Legen Sie in Ihrer robots.txt-Datei eine ganze Reihe von Verbotsregeln für Seiten fest, auf denen keine freundlichen Bots (LOL, als hätten sie glückliche Gesichter!) Informationen sammeln und diese Seite als eine davon festlegen sollen.
Wenn nun ein freundlicher Bot durchkommt, sollte er diese Seite ignorieren. Richtig, aber das ist immer noch nicht gut genug. Machen Sie noch ein paar dieser Seiten oder leiten Sie eine Seite irgendwie um, um andere Namen zu akzeptieren. Fügen Sie diesen Trap-Seiten in Ihrer robots.txt-Datei neben den Seiten, die Sie ignorieren möchten, weitere Verbotsregeln hinzu.
Sammeln Sie die IP-Adresse dieser Bots oder aller Personen, die diese Seiten betreten. Verbieten Sie sie nicht, sondern verwenden Sie eine Funktion, um Nudeltexte in Ihren Inhalten anzuzeigen, z. B. Zufallszahlen, Copyright-Hinweise, bestimmte Textzeichenfolgen, unheimliche Bilder, im Grunde alles, was Sie behindert guter Inhalt. Sie können auch Links festlegen, die auf eine Seite verweisen, deren Laden ewig dauert. in PHP können Sie die Funktion sleep () verwenden. Dies wird den Crawler zurückschlagen, wenn er eine Art Erkennung hat, um Seiten zu umgehen, deren Laden viel zu lange dauert, da einige gut geschriebene Bots so eingestellt sind, dass sie jeweils X Links verarbeiten.
Wenn Sie bestimmte Textzeichenfolgen / -sätze erstellt haben, gehen Sie zu Ihrer bevorzugten Suchmaschine und suchen Sie nach diesen. Möglicherweise wird Ihnen angezeigt, wo Ihr Inhalt landet.
Wenn Sie taktisch und kreativ denken, könnte dies ein guter Ausgangspunkt sein. Am besten lernen Sie, wie ein Bot funktioniert.
Ich würde auch darüber nachdenken, einige IDs zu verschlüsseln oder wie Attribute auf dem Seitenelement angezeigt werden:
Dies ändert seine Form jedes Mal, wenn einige Bots so eingestellt sind, dass sie nach bestimmten Mustern auf Ihren Seiten oder nach bestimmten Elementen suchen.
quelle
Sie können das normale Scraping des Bildschirms nicht stoppen. Ob gut oder schlecht, es liegt in der Natur des Webs.
Sie können festlegen, dass niemand auf bestimmte Dinge (einschließlich Musikdateien) zugreifen kann , es sei denn, er ist als registrierter Benutzer angemeldet. In Apache ist das nicht allzu schwierig . Ich gehe davon aus, dass dies auch in IIS nicht allzu schwierig wäre.
quelle
Eine Möglichkeit besteht darin, den Inhalt als XML-Attribute, URL-codierte Zeichenfolgen, vorformatierten Text mit HTML-codiertem JSON oder Daten-URIs bereitzustellen und ihn dann auf dem Client in HTML umzuwandeln. Hier sind einige Websites, die dies tun:
Skechers : XML
Chrome Web Store : JSON
Bing News : Daten-URL
Protopage : URL-codierte Zeichenfolgen
TiddlyWiki : HTML-Entitäten + vorformatiertes JSON
Amazon : Faules Laden
XMLCalabash : Namespaced XML + Benutzerdefinierter MIME-Typ + Benutzerdefinierte Dateierweiterung
Wenn Sie die Quelle in einem der oben genannten Bereiche anzeigen, werden beim Scraping lediglich Metadaten und Navigation zurückgegeben.
quelle
Die meisten wurden bereits gesagt, aber haben Sie den CloudFlare-Schutz in Betracht gezogen? Ich meine das:
Wahrscheinlich tun dies auch andere Unternehmen. CloudFlare ist das einzige, das ich kenne.
Ich bin mir ziemlich sicher, dass dies ihre Arbeit erschweren würde. Ich habe auch einmal IP für 4 Monate automatisch gesperrt bekommen, als ich versucht habe, Daten einer Site, die durch CloudFlare geschützt ist, aufgrund eines Ratenlimits zu verschrotten (ich habe eine einfache AJAX-Anforderungsschleife verwendet).
quelle
Ich stimme den meisten der oben genannten Beiträge zu und möchte hinzufügen, dass Ihre Website umso kratzfester ist, je suchmaschinenfreundlicher Ihre Website ist. Sie könnten versuchen, ein paar Dinge zu tun, die es für Schaber sehr schwierig machen, aber es könnte auch Ihre Suchfähigkeit beeinträchtigen ... Es hängt natürlich davon ab, wie gut Ihre Website in Suchmaschinen rangieren soll.
quelle
Wenn Sie Ihre Inhalte hinter ein Captcha stellen, fällt es Robotern schwer, auf Ihre Inhalte zuzugreifen. Menschen wären jedoch unangenehm, so dass dies unerwünscht sein könnte.
quelle
Wenn Sie ein gutes Beispiel sehen möchten, besuchen Sie http://www.bkstr.com/ . Sie verwenden einen Aj / S-Algorithmus, um ein Cookie zu setzen, und laden dann die Seite neu, damit das Cookie verwendet werden kann, um zu überprüfen, ob die Anforderung in einem Browser ausgeführt wird. Eine Desktop-App, die zum Scrapen entwickelt wurde, könnte dies definitiv erreichen, aber sie würde das Scraping der meisten CURL-Typen stoppen.
quelle
Bildschirmschaber verarbeiten HTML. Und wenn sie entschlossen sind, Ihre Daten zu erhalten, können Sie technisch nicht viel tun, da der menschliche Augapfel alles verarbeitet. Rechtlich wurde bereits darauf hingewiesen, dass Sie möglicherweise Rückgriff haben, und das wäre meine Empfehlung.
Sie können den kritischen Teil Ihrer Daten jedoch mithilfe einer nicht HTML-basierten Präsentationslogik ausblenden
Denken Sie daran, dass dies wahrscheinlich Ihre Suchrankings beeinflussen würde.
quelle
Generieren Sie HTML, CSS und JavaScript. Es ist einfacher, Generatoren als Parser zu schreiben, sodass Sie jede bereitgestellte Seite anders generieren können. Sie können dann keinen Cache oder statischen Inhalt mehr verwenden.
quelle