it-swarm.com.de

Wie verhindere ich das Scraping von Websites?

Ich habe eine ziemlich große Musikwebsite mit einer großen Künstlerdatenbank. Ich habe bemerkt, dass andere Musikseiten die Daten unserer Seite abschaben (ich gebe hier und da Dummy-Künstlernamen ein und suche sie dann bei Google).

Wie kann ich das Scrapen von Bildschirmen verhindern? Ist es überhaupt möglich?

285
pixel

Hinweis: Da die vollständige Version dieser Antwort das Längenlimit von Stack Overflow überschreitet, müssen Sie Gehen Sie zu GitHub , 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 Webdatenextraktion), es hilft zu wissen, wie diese Abstreifer funktionieren und was sie insgesamt daran hindert, gut zu funktionieren.

Es gibt verschiedene Arten von Schabern, und jeder funktioniert anders:

  • Spinnen wie Googles Bot oder Website-Kopierer wie HTtrack , die rekursiv Links zu anderen Seiten folgen, um Daten abzurufen. Diese werden manchmal für gezieltes Scraping verwendet, um bestimmte Daten zu erhalten, häufig in Kombination mit einem HTML-Parser, um die gewünschten Daten von jeder Seite zu extrahieren.

  • Shell-Skripte: Manchmal werden zum Scrapen gängige Unix-Tools verwendet: Wget oder Curl zum Herunterladen von Seiten und Grep (Regex) zum Extrahieren der Daten.

  • HTML-Parser, z. B. solche, die auf Jsoup, Scrapy und anderen basieren. Ähnlich wie bei regex-basierten Shell-Skripten werden dabei 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 Anfrage für eine Suche und ruft dann alle Ergebnislinks und deren Titel aus dem HTML-Code der Ergebnisseite ab, um speziell nur die Suchergebnislinks und deren Titel abzurufen . Dies sind die häufigsten.

  • Screenscraper, basierend auf z. Selenium oder PhantomJS , die Ihre Website in einem echten Browser öffnen, JavaScript, AJAX usw. ausführen und dann die gewünschter Text von der Webseite, normalerweise von:

    • Abrufen des HTML-Codes vom Browser, nachdem Ihre Seite geladen und JavaScript ausgeführt wurde, und anschließende Verwendung eines HTML-Parsers zum Extrahieren der gewünschten Daten. Dies sind die am häufigsten verwendeten Methoden, und so funktionieren auch hier viele der Methoden, um HTML-Parser/Scraper zu beschädigen.

    • Machen Sie einen Screenshot der gerenderten Seiten und extrahieren Sie dann mit OCR den gewünschten Text aus dem Screenshot. Diese sind selten und nur engagierte Scraper, die Ihre Daten wirklich wollen, werden dies einrichten.

  • Webscraping-Dienste wie ScrapingHub oder Kimono . In der Tat gibt es Leute, deren Aufgabe es ist, herauszufinden, wie Sie Ihre Website kratzen und den Inhalt herausholen, damit andere ihn verwenden können.

    Es ist nicht überraschend, dass professionelle Scraping-Services am schwierigsten sind. Wenn Sie es jedoch schwierig und zeitaufwendig machen, herauszufinden, wie Ihre Website gescrappt werden soll, werden diese (und diejenigen, die sie dafür bezahlen) möglicherweise nicht die Mühe haben, Ihre Website zu scrappen.

  • 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, benutzerdefiniertes CSS und JavaScript einfügen und so das Erscheinungsbild Ihrer Seiten vollständig ändern.

  • Menschliches Kopieren - Einfügen: Die Benutzer kopieren Ihre Inhalte und fügen sie ein, um sie an anderer Stelle zu verwenden.

Es gibt eine große Überschneidung zwischen diesen verschiedenen Abstreifertypen, und viele Abstreifer verhalten sich ähnlich, auch wenn sie unterschiedliche Technologien und Methoden verwenden.

Diese Tipps sind hauptsächlich meine eigenen Ideen, verschiedene Schwierigkeiten, auf die ich beim Schreiben von Scrapern 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, was auch immer Sie tun, entschlossene Schaber noch herausfinden können, wie man schabt. Sie können jedoch viel Schaben stoppen, indem Sie ein paar Dinge tun:

Überwachen Sie Ihre Protokolle und Verkehrsmuster. Beschränken Sie den Zugriff, wenn ungewöhnliche Aktivitäten auftreten:

Überprüfen Sie Ihre Protokolle regelmäßig, und im Falle ungewöhnlicher Aktivitäten, die auf einen automatisierten Zugriff hinweisen (Scraper), wie z. B. viele ähnliche Aktionen mit derselben IP-Adresse, können Sie den Zugriff blockieren oder beschränken.

Im Einzelnen einige Ideen:

  • Ratenbegrenzung:

    Erlauben Sie nur Benutzern (und Scrapern), eine begrenzte Anzahl von Aktionen in einer bestimmten Zeit auszuführen. Erlauben Sie beispielsweise nur ein paar Suchvorgänge pro Sekunde von einer bestimmten IP-Adresse oder einem bestimmten Benutzer. Dies verlangsamt die Abstreifer und macht sie unwirksam. Sie können auch ein Captcha anzeigen, wenn Aktionen zu schnell oder schneller ausgeführt werden als ein echter Benutzer.

  • Erkennen Sie ungewöhnliche Aktivitäten:

    Wenn Sie ungewöhnliche Aktivitäten sehen, z. B. viele ähnliche Anfragen von einer bestimmten IP-Adresse, jemanden, der eine übermäßige Anzahl von Seiten betrachtet oder ungewöhnlich viele Suchanfragen durchführt, können Sie den Zugriff verhindern oder ein Captcha für nachfolgende Anfragen anzeigen.

  • Überwachen und bewerten Sie das Limit nicht nur anhand der IP-Adresse, sondern verwenden Sie auch andere Indikatoren:

    Wenn Sie blockieren oder die Rate begrenzen, 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, anhand derer Sie bestimmte Benutzer/Schaber 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 erfassen, 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 einzelnen IP-Adresse erhalten, die alle denselben Benutzeragenten verwenden, die Bildschirmgröße (bestimmt mit JavaScript) und den Benutzer (in diesem Fall den Scraper), klicken Sie immer auf die gleiche Weise und auf In regelmäßigen Abständen ist es wahrscheinlich ein Bildschirmschaber; und Sie können vorübergehend ähnliche Anforderungen blockieren (z. B. alle Anforderungen mit diesem Benutzeragenten und der Bildschirmgröße, die von dieser bestimmten IP-Adresse stammen), und auf diese Weise werden Sie echte Benutzer mit dieser IP-Adresse nicht belästigen, z. im Falle einer gemeinsamen Internetverbindung.

    Sie können dies auch noch weiter ausführen, 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 Anfragen erhalten, diese jedoch von unterschiedlichen IP-Adressen stammen, können Sie blockieren. Achten Sie auch hier darauf, echte Benutzer nicht versehentlich zu blockieren.

    Dies kann bei Screenscrappern, auf denen JavaScript ausgeführt wird, effektiv sein, da Sie viele Informationen von ihnen erhalten können.

    Verwandte Fragen zu Security Stack Exchange:

  • Verwenden Sie ein Captcha, anstatt den Zugriff vorübergehend zu blockieren:

    Die einfache Möglichkeit zur Implementierung der Ratenbegrenzung besteht darin, den Zugriff für eine bestimmte Zeitspanne vorübergehend zu sperren. Die Verwendung eines Captchas ist jedoch möglicherweise besser (siehe Abschnitt zu Captchas weiter unten).

Registrierung und 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.

  • Wenn Sie ein Konto erstellen und sich anmelden müssen, können Sie Benutzer- und Scraper-Aktionen genau verfolgen. Auf diese Weise können Sie leicht erkennen, wann ein bestimmtes Konto zum Scrapen verwendet wird, und es sperren. Dinge wie das Begrenzen der Rate oder das Erkennen von Missbrauch (z. B. eine große Anzahl von Suchvorgängen in kurzer Zeit) werden einfacher, da Sie bestimmte Scraper anstelle nur von IP-Adressen identifizieren können.

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 zur Aktivierung des Kontos geöffnet werden muss. Nur ein Konto pro E-Mail-Adresse zulassen.

  • Erfordert ein Captcha, das bei der Registrierung/Kontoerstellung gelöst werden muss.

Wenn Sie ein Konto erstellen müssen, um Inhalte anzuzeigen, werden Benutzer und Suchmaschinen davon abgehalten. Wenn Sie ein Konto erstellen müssen, um einen Artikel anzuzeigen, wechseln die Benutzer an einen anderen Ort.

Blockieren Sie den Zugriff von IP-Adressen von Cloud-Hosting- und Scraping-Diensten

Manchmal werden Scraper von Webhostingdiensten wie Amazon Web Services oder GAE oder VPS 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.

Ebenso können Sie den Zugriff von IP-Adressen, die von Proxy- oder VPN-Anbietern verwendet werden, einschränken, da Scraper möglicherweise solche Proxy-Server verwenden, um zu verhindern, dass viele Anforderungen erkannt werden.

Beachten Sie, dass durch das Blockieren des Zugriffs von Proxyservern und VPNs echte Benutzer beeinträchtigt werden.

Machen Sie Ihre Fehlermeldung unauffällig, 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 somit Hinweise geben, wie er den Schaber reparieren kann. Eine schlechte Idee wäre es, Fehlerseiten mit folgendem Text anzuzeigen:

  • Zu viele Anfragen von Ihrer IP-Adresse. Bitte versuchen Sie es später erneut.

  • Fehler, User Agent Header nicht vorhanden!

Zeigen Sie stattdessen eine freundliche Fehlermeldung an, die dem Schaber nicht sagt, was ihn verursacht hat. So etwas ist viel besser:

  • Entschuldigung, etwas ist schief gelaufen. Sie können den Support über [email protected] Kontaktieren, falls das Problem weiterhin besteht.

Dies ist auch viel benutzerfreundlicher für echte Benutzer, falls sie jemals eine solche Fehlerseite sehen sollten. Sie sollten auch in Betracht ziehen, ein Captcha für nachfolgende Anforderungen anstelle eines festen Blocks anzuzeigen, falls einem echten Benutzer die Fehlermeldung angezeigt wird, damit Sie nicht blockiert werden und berechtigte Benutzer sich daher an Sie wenden.

Verwenden Sie Captchas, wenn Sie den Verdacht haben, dass ein Scraper auf Ihre Website zugreift.

Captchas ("Vollständig automatisierter Test, um Computer und Menschen auseinanderzuhalten") sind sehr effektiv gegen das Stoppen von Schabern. Leider sind sie auch sehr effektiv bei irritierenden 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. Möglicherweise möchten Sie ein Captcha anzeigen, bevor Sie den Zugriff auf den Inhalt zulassen, wenn Sie den Verdacht haben, dass ein Scraper vorhanden ist.

Dinge, die Sie bei der Verwendung von Captchas beachten sollten:

  • Würfeln Sie nicht Ihre eigenen, sondern 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 möglicherweise finden Sie selbst (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 geliefert wird

  • Fügen Sie die Lösung für das Captcha nicht in das HTML-Markup ein: Ich habe tatsächlich eine Website gesehen, die die Lösung für das Captcha hatte in der Seite selbst (obwohl recht gut versteckt), wodurch es ist ziemlich nutzlos. Mach so etwas nicht. Verwenden Sie wieder einen Dienst wie reCaptcha, und Sie werden diese Art von Problem nicht haben (wenn Sie es richtig verwenden).

  • Captchas können in loser Schüttung gelöst werden: Es gibt Captcha-Löse-Dienste, bei denen tatsächliche, schlecht bezahlte Menschen Captchas in loser Schüttung lösen. Auch hier ist die Verwendung von reCaptcha eine gute Idee, da sie Schutzfunktionen haben (z. B. die relativ kurze Zeit, die der Benutzer zum Lösen des Captchas hat). Es ist unwahrscheinlich, dass diese Art von Service genutzt wird, es sei denn, Ihre Daten sind wirklich wertvoll.

Stellen Sie Ihren Textinhalt als Bild bereit

Sie können Text auf einer Bildserverseite rendern und für die Anzeige bereitstellen, wodurch das Extrahieren von Text durch einfache Schaber verhindert wird.

Dies ist jedoch schlecht für Screenreader, Suchmaschinen, Leistung und so ziemlich alles andere. Es ist auch an einigen Stellen illegal (aufgrund der Zugänglichkeit, z. B. dem Gesetz über Amerikaner mit Behinderungen), und es ist auch leicht, mit etwas OCR umzugehen, also tun Sie es nicht.

Mit CSS-Sprites können Sie etwas Ähnliches tun, das jedoch unter denselben Problemen leidet.

Machen Sie nicht Ihren gesamten Datensatz sichtbar:

Wenn möglich, geben Sie keinem Skript/Bot die Möglichkeit, Ihren gesamten Datensatz abzurufen. Als Beispiel: Sie haben eine News-Site mit vielen einzelnen Artikeln. Sie können diese Artikel nur zugänglich machen, indem Sie sie über die On-Site-Suche suchen. Wenn Sie keine Liste mit all den Artikeln auf der Site und ihren URLs haben, sind dies überall diejenigen Artikel sind nur über die Suchfunktion zugänglich. Dies bedeutet, dass ein Skript, das alle Artikel von Ihrer Website entfernen möchte, nach allen möglichen Ausdrücken suchen muss, die in Ihren Artikeln vorkommen können, um sie alle zu finden. Dies ist zeitaufwändig, schrecklich ineffizient und wird hoffentlich zu einer Verbesserung führen Der Schaber gibt auf.

Dies ist unwirksam, wenn:

  • Der Bot/das Skript möchte/benötigt ohnehin nicht den vollständigen Datensatz.
  • Ihre Artikel werden über eine URL geliefert, die ungefähr so ​​aussieht wie example.com/article.php?articleId=12345. Dies (und ähnliche Dinge) ermöglicht es Schabern, einfach alle articleIds zu durchlaufen und alle Artikel auf diese Weise anzufordern.
  • Es gibt andere Möglichkeiten, alle Artikel zu finden, z. B. durch Schreiben eines Skripts, um Links in Artikeln zu folgen, die zu anderen Artikeln führen.
  • Die Suche nach etwas wie "und" oder "das" kann fast alles offenbaren, das ist also etwas, das man beachten muss. (Sie können dies vermeiden, indem Sie nur die besten 10 oder 20 Ergebnisse zurückgeben.).
  • Sie benötigen Suchmaschinen, um Ihre Inhalte zu finden.

Machen Sie Ihre APIs, Endpunkte und ähnliche Dinge nicht verfügbar:

Stellen Sie sicher, dass Sie keine APIs verfügbar machen, auch nicht ungewollt. Wenn Sie zum Beispiel AJAX oder Netzwerkanforderungen aus Adobe Flash oder Java Applets (Gott bewahre!) Zum Laden Ihrer Daten verwenden, ist es trivial, nachzuschauen Überprüfen Sie die Netzwerkanforderungen auf der Seite und stellen Sie fest, wohin diese Anforderungen gehen. Führen Sie anschließend ein Reverse Engineering durch, und verwenden Sie diese Endpunkte in einem Scraper-Programm. Vergewissern Sie sich, dass Sie Ihre Endpunkte verschleiern, und machen Sie sie anderen Benutzern wie beschrieben unzugänglich.

So verhindern Sie HTML-Parser und Scraper:

Da HTML-Parser durch Extrahieren von Inhalten aus Seiten auf der Grundlage von identifizierbaren Mustern im HTML-Code funktionieren, können wir diese Muster absichtlich ändern, um diese Scraper zu brechen oder sogar zu beschädigen. Die meisten dieser Tipps gelten auch für andere Schaber wie Spinnen und Bildschirmschaber.

Ändern Sie häufig Ihr HTML

Scraper, die HTML direkt verarbeiten, extrahieren Inhalte aus bestimmten, identifizierbaren Teilen Ihrer HTML-Seite. Beispiel: Wenn alle Seiten Ihrer Website ein div mit der ID article-content Haben, das den Text des Artikels enthält, ist es trivial, ein Skript zu schreiben, um alle Artikelseiten aufzurufen Extrahieren Sie auf Ihrer Site den Inhaltstext des Divs article-content auf jeder Artikelseite, und voilà, der Scraper hat 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 Klassen von Elementen in Ihrem HTML-Code häufig ändern, möglicherweise sogar automatisch. Wenn also Ihr div.article-content Zu etwas wie div.a4c36dda13eaf0 Wird und sich jede Woche ändert, 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, andernfalls verwendet der Scraper div.[any-14-characters], Um stattdessen das gewünschte Div zu finden. Hüten Sie sich auch vor ähnlichen Löchern.

  • Wenn es nicht möglich ist, den gewünschten Inhalt aus dem Markup zu finden, wird dies vom Scraper anhand der Struktur des HTML-Codes durchgeführt. Wenn also alle Ihre Artikelseiten darin ähnlich sind, dass jeder div innerhalb eines div, der nach einem h1 Folgt, der Artikelinhalt ist, erhalten Schaber den Artikelinhalt basierend darauf . Um dies zu unterbrechen, können Sie Ihrem HTML-Code regelmäßig und nach dem Zufallsprinzip zusätzliches Markup hinzufügen/entfernen, z. Hinzufügen von zusätzlichen divs oder spans. Bei der modernen serverseitigen HTML-Verarbeitung sollte dies nicht zu schwierig sein.

Dinge zu beachten:

  • Das Implementieren, Warten und Debuggen wird mühsam und schwierig.

  • Sie behindern das Caching. Insbesondere wenn Sie IDs oder Klassen Ihrer HTML-Elemente ändern, sind entsprechende Änderungen in 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 weiterhin auf Ihre Inhalte zugreifen, indem sie darauf schließen, 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. Auf diese Weise können die gewünschten Daten immer noch auf der Seite gefunden und extrahiert werden. 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.

Siehe auch Wie Sie verhindern, dass Crawler in Abhängigkeit von XPath Seiteninhalte abrufen, um zu erfahren, wie dies in PHP implementiert werden kann.

Ändern Sie Ihren HTML-Code basierend auf dem Standort des Benutzers

Dies ähnelt dem vorherigen Tipp. Wenn Sie basierend auf dem Standort/Land Ihres Benutzers (bestimmt durch die IP-Adresse) unterschiedliche HTML-Informationen bereitstellen, kann dies dazu führen, dass die an Benutzer gelieferten Abstreifer beschädigt werden. Wenn zum Beispiel jemand eine mobile App schreibt, die Daten von Ihrer Website entfernt, funktioniert diese 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 somit unterschiedliches HTML erhalten, das die eingebetteter Schaber wurde nicht für den Verbrauch entwickelt.

Ändern Sie häufig Ihren HTML-Code, schrauben Sie dabei aktiv mit den Abstreifern!

Ein Beispiel: Sie haben eine Suchfunktion auf Ihrer Website unter example.com/search?query=somesearchquery, Die den folgenden HTML-Code zurückgibt:

<div class="search-result">
  <h3 class="search-result-title">Stack Overflow has become the world's most popular programming Q & A website</h3>
  <p class="search-result-excerpt">The website Stack Overflow has now become the most popular programming Q & A website, with 10 million questions and many users, which...</p>
  <a class"search-result-link" href="/stories/story-link">Read more</a>
</div>
(And so on, lots more identically structured divs with search results)

Wie Sie vielleicht vermutet haben, ist dies leicht zu schaben: Ein Schaber muss lediglich die Such-URL mit einer Abfrage treffen und die gewünschten Daten aus dem zurückgegebenen HTML extrahieren. Zusätzlich zu den oben beschriebenen regelmäßigen Änderungen des HTML-Codes können Sie auch das alte Markup mit den alten IDs und Klassen belassen, es mit CSS ausblenden und mit gefälschten Daten füllen, wodurch das HTML-Code vergiftet wird Schaber. So kann die Suchergebnisseite geändert werden:

<div class="the-real-search-result">
  <h3 class="the-real-search-result-title">Stack Overflow has become the world's most popular programming Q & A website</h3>
  <p class="the-real-search-result-excerpt">The website Stack Overflow has now become the most popular programming Q & A website, with 10 million questions and many users, which...</p>
  <a class"the-real-search-result-link" href="/stories/story-link">Read more</a>
</div>

<div class="search-result" style="display:none">
  <h3 class="search-result-title">Visit Example.com now, for all the latest Stack Overflow related news !</h3>
  <p class="search-result-excerpt">Example.com is so awesome, visit now !</p>
  <a class"search-result-link" href="http://example.com/">Visit Now !</a>
</div>
(More real search results follow)

Dies bedeutet, dass Scraper, die zum Extrahieren von Daten aus dem HTML-Code auf der Basis von 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 verborgen sind.

Schraube mit dem Schaber: Fügen Sie falsche, unsichtbare Honeypot-Daten in Ihre Seite ein

Als Ergänzung zum vorherigen Beispiel können Sie Ihrem HTML-Code unsichtbare Honeypot-Elemente hinzufügen, um Kratzer abzufangen. Ein Beispiel, das der zuvor beschriebenen Suchergebnisseite hinzugefügt werden könnte:

<div class="search-result" style="display:none">
  <h3 class="search-result-title">This search result is here to prevent scraping</h3>
  <p class="search-result-excerpt">If you're a human and see this, please ignore it. If you're a scraper, please click the link below :-)
  Note that clicking the link below will block access to this site for 24 hours.</p>
  <a class"search-result-link" href="/scrapertrap/scrapertrap.php">I'm a scraper !</a>
</div>
(The actual, real, search results follow.)

Ein Scraper, der geschrieben wurde, um alle Suchergebnisse zu erhalten, nimmt diese 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 nie sehen (weil es mit CSS versteckt ist) und wird den Link nicht besuchen. Ein echter und begehrenswerter Spider wie Google wird den Link auch nicht besuchen, weil Sie /scrapertrap/ In Ihrer robots.txt nicht zugelassen haben.

Sie können mit scrapertrap.php Den Zugriff auf die besuchte IP-Adresse blockieren oder ein Captcha für alle nachfolgenden Anforderungen dieser IP-Adresse erzwingen.

  • Vergessen Sie nicht, Ihren 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. Erwägen Sie auch, das zum Ausblenden verwendete Inline-CSS zu ändern, und verwenden Sie stattdessen ein ID-Attribut und externes CSS, da Schaber lernen, alles zu vermeiden, das ein style -Attribut hat, wobei CSS zum Ausblenden des Inhalts verwendet wird. Versuchen Sie auch, es nur manchmal zu aktivieren, damit der Schaber zunächst funktioniert, aber nach einer Weile abbricht. 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 irgendwo als Bild einbetten (z. B. in einem Forum). Ändern Sie die URL häufig und machen Sie die Sperrzeiten relativ kurz.

Stellen Sie gefälschte und unbrauchbare Daten bereit, wenn Sie einen Schaber entdecken

Wenn Sie feststellen, dass es sich offensichtlich um einen Schaber handelt, können Sie gefälschte und unbrauchbare 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 echten Daten zu unterscheiden, damit Schaber nicht wissen, dass sie verarscht werden.

Als Beispiel: Sie haben eine Nachrichten-Website; Wenn Sie einen Schaber entdecken, versorgen Sie ihn mit gefälschten zufällig generierten Artikeln, anstatt den Zugriff zu blockieren. Dadurch werden die Daten vergiftet, die der Schaber erhält. Wenn Sie Ihre gefälschten Daten von der Realität nicht unterscheiden, wird es für Schaber schwierig, das zu bekommen, was sie wollen, nämlich die tatsächlichen, realen Daten.

Akzeptiere 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 und Suchmaschinenspinnen dies tun.

Wenn Sie eine Anfrage erhalten, bei der der User Agent-Header nicht vorhanden ist, können Sie ein Captcha anzeigen oder einfach den Zugriff blockieren oder einschränken. (Oder dienen 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, es zu implementieren.

Akzeptieren Sie keine Anfragen, wenn es sich bei dem User Agent um einen allgemeinen Scraper handelt. Schwarze Listen, die von Schabern benutzt werden

In einigen Fällen verwenden Scraper einen User Agent, den kein echter Browser oder Suchmaschinen-Spider verwendet, wie zum Beispiel:

  • "Mozilla" (Nur das, sonst nichts. Ich habe ein paar Fragen zum Scraping hier gesehen. Ein echter Browser wird niemals nur diese verwenden.)
  • "Java 1.7.43_u43" (Standardmäßig verwendet Javas HttpUrlConnection so etwas.)
  • "BIZCO EasyScraping Studio 2.0"
  • "wget", "curl", "libcurl", .. (Wget und cURL werden manchmal für das grundlegende Scraping verwendet)

Wenn Sie feststellen, dass eine bestimmte User Agent-Zeichenfolge von Scrapern auf Ihrer Site verwendet wird und sie 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 nicht, da sie nur an den tatsächlichen Seiten und deren Inhalten interessiert sind.

Sie können Anforderungen in Ihren Assets protokollieren. Wenn Sie viele Anforderungen nur für HTML sehen, handelt es sich möglicherweise um einen Scraper.

Beachten Sie, dass Suchmaschinen-Bots, alte Mobilgeräte, Bildschirmlesegeräte und falsch konfigurierte Geräte möglicherweise auch keine Assets anfordern.

Cookies verwenden und benötigen; Verwenden Sie diese, um Benutzer- und Schaberaktionen zu verfolgen.

Es kann erforderlich sein, dass Cookies aktiviert sind, um Ihre Website anzuzeigen. Dies wird unerfahrene und unerfahrene Scraper-Autoren abschrecken, jedoch ist es für einen Scraper einfach, Cookies zu senden. Wenn Sie sie verwenden und benötigen, können Sie Benutzer- und Scraper-Aktionen mit ihnen verfolgen und so die Geschwindigkeit begrenzen, blockieren oder Captchas auf Benutzerbasis anstatt auf IP-Basis anzeigen.

Beispiel: Wenn der Benutzer eine Suche durchführt, legen Sie ein eindeutiges Identifikations-Cookie fest. Ü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 ineffektiv sein, da Schaber die Cookies auch mit ihren Anforderungen senden und sie nach 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.

Wenn Sie zum Setzen und Abrufen des Cookies JavaScript verwenden, blockieren Sie Scraper, auf denen kein JavaScript ausgeführt wird, da sie das Cookie nicht mit ihrer Anfrage abrufen und senden können.

Verwenden Sie JavaScript + Ajax, um Ihre Inhalte zu laden

Sie können JavaScript + AJAX) verwenden, um Ihren Inhalt nach dem Laden der Seite selbst zu laden. Dies macht den Inhalt für HTML-Parser, die kein JavaScript ausführen, unzugänglich. Dies ist häufig eine wirksame Abschreckung für Anfänger und Unerfahrene Programmierer schreiben Schaber.

Seien Sie sich bewusst über:

  • Die Verwendung von JavaScript zum Laden des tatsächlichen Inhalts beeinträchtigt die Benutzerfreundlichkeit und die 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 für andere Dinge, z. B. Artikelseiten.

Verschleiern Sie Ihre Markups, Netzwerkanforderungen von Skripten und alles andere.

Wenn Sie Ajax und JavaScript zum Laden Ihrer Daten verwenden, verschleiern Sie die übertragenen Daten. Als Beispiel könnten Sie Ihre Daten auf dem Server verschlüsseln (mit etwas so Einfachem wie base64 oder komplexerem) und sie dann dekodieren und auf dem Client anzeigen, nachdem Sie sie über Ajax abgerufen haben. Dies bedeutet, dass jemand, der den Netzwerkverkehr überprüft, nicht sofort erkennt, wie Ihre Seite funktioniert und Daten lädt, und es für jemanden schwieriger ist, Daten direkt von Ihren Endpunkten anzufordern, da er Ihren Descrambling-Algorithmus rückentwickeln muss.

  • Wenn Sie Ajax zum Laden der Daten verwenden, sollten Sie die Verwendung der Endpunkte erschweren, ohne zuerst die Seite zu laden, z. B. indem Sie einen Sitzungsschlüssel als Parameter benötigen, den Sie in JavaScript oder HTML einbetten können.

  • Sie können Ihre verschleierten Daten auch direkt in die ursprüngliche HTML-Seite einbetten und mithilfe von JavaScript die Verschleierung aufheben und anzeigen, um zusätzliche Netzwerkanforderungen zu vermeiden. Dadurch wird es erheblich schwieriger, die Daten mit einem reinen HTML-Parser zu extrahieren, der kein JavaScript ausführt, da derjenige, der den Scraper schreibt, Ihr JavaScript zurückentwickeln muss (was Sie auch verschleiern sollten).

  • Möglicherweise möchten Sie Ihre Verschleierungsmethoden regelmäßig ändern, um Schaber zu zerbrechen, die dies herausgefunden haben.

Dies hat jedoch einige Nachteile:

  • Das Implementieren, Warten und Debuggen wird mühsam und schwierig.

  • Gegen Scraper und Screenscraper, auf denen JavaScript ausgeführt wird und die dann die Daten extrahieren, ist dies ineffektiv. (Die meisten einfachen HTML-Parser führen jedoch kein JavaScript aus.)

  • Dadurch wird Ihre Website für echte Benutzer funktionsunfähig, wenn sie JavaScript deaktiviert haben.

  • Leistung und Ladezeiten werden darunter leiden.

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 zu Ihrer Site benötigen. Möglicherweise berechnen Sie $$$ dafür.

Sonstiges:

  • Es gibt auch kommerzielle Scraping-Schutzdienste, wie das Anti-Scraping von Cloudflare oder Distill Networks (Details zur Funktionsweise hier ), die diese Dinge und mehr für Sie tun.

  • Finden Sie ein Gleichgewicht zwischen Benutzerfreundlichkeit für echte Benutzer und Schaberfestigkeit: Alles, was Sie tun, wirkt sich auf die eine oder andere Weise negativ auf das Benutzererlebnis aus, und finden Sie Kompromisse.

  • Vergessen Sie nicht Ihre mobile Website und Apps. Wenn Sie über eine mobile App verfügen, kann diese auch gescreent werden, und der Netzwerkverkehr kann überprüft werden, um die verwendeten REST Endpunkte zu ermitteln.

  • Schaber können andere Schaber abkratzen: Wenn es eine Website gibt, deren Inhalt von Ihrer Website abgekratzt wurde, können andere Schaber von der Website dieses Schabers abkratzen.

Weitere Lektüre:

292
JonasCz

Ich gehe davon aus, dass Sie robots.txt Eingerichtet haben.

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 der Bösen zu identifizieren.

Ich würde überlegen:

  1. Richten Sie eine Seite ein, /jail.html.
  2. Verbieten Sie den Zugriff auf die Seite in robots.txt (Damit die respektvollen Spinnen sie niemals besuchen).
  3. Platzieren Sie einen Link auf einer Ihrer Seiten und verbergen Sie ihn mit CSS (display: none).
  4. Tragen Sie die IP-Adressen der Besucher in /jail.html Ein.

Dies kann Ihnen helfen, Anfragen von Abstreifern, die Ihren robots.txt Offenkundig missachten, schnell zu identifizieren.

Möglicherweise möchten Sie auch Ihre /jail.html - Website zu einer vollständigen Website machen, die das gleiche, exakte Markup wie normale Seiten aufweist, jedoch mit gefälschten Daten (/jail/album/63ajdka, /jail/track/3aads8 Usw.). . Auf diese Weise werden die fehlerhaften Abstreifer erst dann auf "ungewöhnliche Eingaben" aufmerksam gemacht, wenn Sie die Möglichkeit haben, sie vollständig zu blockieren.

239
Daniel Trebbien

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 machen. Je nachdem, wo sich die Standorte befinden, kann ein Anwalt in Ihrem Land ein Cease & Desist oder ein gleichwertiges Verfahren aufstellen. Sie können zumindest die Bastarde erschrecken.

Dokumentieren Sie die Einfügung Ihrer Dummy-Werte. Fügen Sie Dummy-Werte ein, die klar (aber dunkel) auf Sie verweisen. Ich glaube, das ist bei Telefonbuchfirmen üblich, und hier in Deutschland gab es meines Erachtens 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 verschlechtern (obwohl ein Templating-System, das bei jeder Anfrage nach identischen Seiten eine etwas andere HTML-Struktur verwendet, möglicherweise bereits Abhilfe schafft). lot gegen Scraper, die sich immer auf HTML-Strukturen und Klassen-/ID-Namen stützen, um den Inhalt herauszuholen.)

In solchen Fällen ist das Urheberrecht gut. Es ist etwas, gegen das man kämpfen sollte, wenn man die ehrliche Arbeit anderer Leute abstreift, um damit Geld zu verdienen.

47
Unicron

Es gibt wirklich nichts, was Sie tun können, um dies vollständig zu verhindern. Schaber können ihren Benutzeragenten vortäuschen, mehrere IP-Adressen verwenden usw. und als normaler Benutzer auftreten. Das einzige, was Sie tun können, ist, den Text zum Zeitpunkt des Ladens der Seite nicht verfügbar zu machen - machen Sie es mit Bild, Flash oder laden Sie es mit JavaScript. Die ersten beiden sind jedoch schlechte Ideen, und die letzte ist ein Problem mit der Barrierefreiheit, wenn für einige Ihrer regulären Benutzer JavaScript nicht aktiviert ist.

Wenn sie absolut auf Ihre Website zugreifen und alle Ihre Seiten durchsuchen, können Sie eine Art Ratenbegrenzung vornehmen.

Es gibt jedoch einige Hoffnung. Abstreifer verlassen sich darauf, dass die Daten Ihrer Site ein einheitliches Format haben. Wenn Sie es irgendwie zufällig machen könnten, könnte es ihren Schaber zerbrechen. Dinge wie das Ändern der ID oder der Klassennamen von Seitenelementen bei jedem Ladevorgang usw. Aber das ist eine Menge Arbeit und ich bin nicht sicher, ob es sich lohnt. Und selbst dann könnten sie es wahrscheinlich mit genug Engagement umgehen.

35
ryeguy

Bereitstellung einer XML-API für den Zugriff auf Ihre Daten; in einer Weise, die einfach zu bedienen ist. Wenn die Leute Ihre Daten wollen, bekommen sie sie, Sie können auch alles daran setzen.

Auf diese Weise können Sie eine Teilmenge der Funktionen auf effektive Weise bereitstellen und sicherstellen, dass die Scraper zumindest keine HTTP-Anforderungen und große Mengen an Bandbreite verschlingen.

Dann müssen Sie nur noch die Personen überzeugen, die möchten, dass Ihre Daten die API verwenden. ;)

31

Entschuldigung, es ist wirklich ziemlich schwer das zu tun ...

Ich würde vorschlagen, dass Sie sie höflich bitten, Ihre Inhalte nicht zu verwenden (wenn Ihre Inhalte urheberrechtlich geschützt sind).

Wenn dies der Fall ist und sie es nicht abbauen, können Sie weitere Maßnahmen ergreifen und ihnen einen Abmeldebrief senden.

Im Allgemeinen wird das, was Sie tun, um das Schaben zu verhindern, wahrscheinlich einen negativeren Effekt haben, z. Zugänglichkeit, Bots/Spinnen usw.

21
Lizard

Okay, wie alle Beiträge besagen, wenn Sie es suchmaschinenfreundlich machen möchten, können Bots mit Sicherheit kratzen.

Aber Sie können immer noch ein paar Dinge tun, und dies kann sich auf 60-70% der Scraping-Bots auswirken.

Erstellen Sie ein Überprüfungsskript wie unten.

Wenn eine bestimmte IP-Adresse sehr schnell besucht wird, geben Sie nach einigen Besuchen (5-10) die IP-Adresse und die Browserinformationen in eine Datei oder Datenbank ein.

Der nächste Schritt

(Dies ist ein Hintergrundprozess, der zu jeder Zeit ausgeführt wird oder nach ein paar Minuten geplant ist.) Erstellen Sie ein weiteres Skript, mit dem diese verdächtigen IP-Adressen weiterhin überprüft werden.

Fall 1. Wenn der User Agent von einer bekannten Suchmaschine wie Google stammt, Bing , Yahoo (Sie können weitere Informationen zu User Agents finden, indem Sie sie 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 versuche auch, die IP-Adresse zu ermitteln. Dies kann hilfreich sein.)

Fall 2. Kein Benutzeragent eines Suchbots: Bitten Sie einfach, beim nächsten Besuch ein CAPTCHA auszufüllen.

12
Arshdeep

Späte Antwort - und auch diese Antwort ist wahrscheinlich nicht die, die Sie hören möchten ...

Ich selbst schrieb bereits viele (viele Dutzend) verschiedener spezialisierter Data-Mining-Scraper. (Nur weil ich die "Open Data" -Philosophie mag).

Hier sind bereits viele Ratschläge in anderen Antworten - jetzt werde ich die Advocate-Rolle des Teufels spielen und deren Wirksamkeit erweitern und/oder korrigieren.

Zuerst:

  • wenn jemand wirklich Ihre Daten will
  • sie können Ihre Daten nicht effektiv (technisch) verbergen
  • wenn die Daten sollten sein für Ihre "Stammnutzer" öffentlich zugänglich sein

Der Versuch, einige technische Barrieren zu nutzen, ist die Mühe nicht wert.

  • ihre regelmäßigen Benutzer durch Verschlechterung ihrer Benutzererfahrung
  • an reguläre und gern gesehene Bots (Suchmaschinen)
  • etc...

Plain HMTL - Der einfachste Weg ist das Parsen der einfachen HTML-Seiten mit klar definierter Struktur und CSS-Klassen. Z.B. Es reicht aus, das Element mit Firebug zu untersuchen und die richtigen Xpaths und/oder CSS-Pfade in meinem Scraper zu verwenden.

Sie könnten die HTML-Struktur dynamisch generieren und Sie können auch dynamisch die CSS-Klassennamen (und auch das CSS selbst) generieren (z. B. durch Verwendung einiger zufälliger Klassennamen) - aber

  • sie möchten die Informationen Ihren regulären Benutzern konsistent präsentieren
  • z.B. wieder - es reicht aus, die Seitenstruktur noch einmal zu analysieren, um den Schaber einzurichten.
  • und es kann automatisch durchgeführt werden, indem einige "bereits bekannte Inhalte" analysiert werden
    • sobald jemand schon weiß (durch früheres kratzen), zb .:
    • was enthält die Informationen über "Phil Collins"
    • genug, um die Seite "phil collins" anzuzeigen und (automatisch) zu analysieren, wie die Seite "heute" aufgebaut ist :)

Sie können die Struktur nicht für jede Antwort ändern, da Ihre regulären Benutzer Sie hassen werden. Dies führt auch zu mehr Problemen für Sie (Wartung), nicht für den Abstreifer. Der XPath- oder CSS-Pfad kann vom Scraping-Skript automatisch aus dem bekannten Inhalt ermittelt werden.

Ajax - am Anfang etwas härter, aber der Schabevorgang wird um ein Vielfaches beschleunigt :) - warum?

Bei der Analyse der Anfragen und Antworten richte ich einfach meinen eigenen Proxy-Server (in Perl geschrieben) ein und mein Firefox verwendet ihn. Da es sich um meinen eigenen Proxy handelt - er ist vollständig verborgen -, wird er vom Zielserver als normaler Browser angesehen. (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. Ich könnte den größten Teil des HTML-Scrapings überspringen und einfach die gut strukturierten Ajax-Antworten verwenden (meist im JSON-Format).

Das ajax hilft also nicht viel ...

Etwas komplizierter sind Seiten, die much gepackte Javascript-Funktionen verwenden .

Hier können zwei grundlegende Methoden angewendet werden:

  • entpacke und verstehe das JS und erstelle einen Scraper, der der Javascript-Logik folgt (auf die harte Tour)
  • oder (am besten von mir selbst) - benutze einfach Mozilla mit Mozrepl für Scrape. Z.B. Das eigentliche Scraping wird in einem voll ausgestatteten Javascript-fähigen Browser durchgeführt, der so programmiert ist, dass er auf die richtigen Elemente klickt und die "dekodierten" Antworten direkt aus dem Browserfenster abruft.

Solches Scraping ist langsam (das Scraping erfolgt wie im normalen Browser), aber es ist so

  • sehr einfach einzurichten und zu verwenden
  • und es ist fast unmöglich, dem entgegenzuwirken :)
  • und die "Langsamkeit" wird sowieso benötigt, um dem "Blockieren der gleichen IP-basierten Anforderungen" entgegenzuwirken

Die auf User-Agent basierende Filterung hilft überhaupt nicht. Jeder seriöse Data Miner wird es in seinem Scraper auf einen korrekten Wert einstellen.

Login erforderlich - hilft nicht. Der einfachste Weg (ohne Analyse und/oder Skripterstellung des Anmeldeprotokolls), sich auf der Site als normaler Benutzer mit Mozilla anzumelden und danach den Mozrepl-basierten Scraper zu starten ...

Denken Sie daran, dass Login erforderlich für anonyme Bots hilfreich ist, aber 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 genutzt und ist nicht sehr schwer zu übertreffen. Die Frames sind einfach eine andere HTML/Javascript-Seite, die zur Analyse benötigt wird ... Wenn die Daten die Mühe wert sind - der Data-Miner wird die erforderliche Analyse durchführen.

IP-basierte Begrenzung ist überhaupt nicht wirksam - hier gibt es zu viele öffentliche Proxy-Server und hier ist auch das TOR ... :) t verlangsamt das Scraping (für jemanden, der wirklich Ihre Daten will).

Sehr schwer ist es, Daten in Bildern zu verbergen. (z. B. einfach die Daten serverseitig in Bilder konvertieren). Die Verwendung von "tesseract" (OCR) hilft oft - aber ehrlich -, die Daten müssen die Mühen für den Schaber wert sein. (was oft nicht wert ist).

Auf der anderen Seite werden Ihre Benutzer Sie dafür hassen. Ich selbst hasse (auch wenn ich nicht scrappe) Websites, die es nicht erlauben, den Seiteninhalt in die Zwischenablage zu kopieren (weil die Informationen in den Bildern sind oder (die dummen) versuchen, sich mit der rechten Maustaste auf ein benutzerdefiniertes Javascript-Ereignis zu verbinden). )

Am schwierigsten sind die Sites, die Java-Applets oder Flash verwenden, und das Applet verwendet sicheres https fragt sich intern. Aber überlegen Sie mal - wie glücklich werden Ihre iPhone-Nutzer sein ...;). Daher nutzen 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 viel - aber Ihre Benutzer werden Sie hassen ... - stellen Sie sich vor, wie Ihre Benutzer Sie lieben werden wenn sie ein paar Captchas auf allen Seiten lösen müssen, die Informationen über die Musikkünstler enthalten.

Wahrscheinlich brauchen Sie nicht fortzufahren - Sie haben sich bereits ins Bild gesetzt.

Was Sie jetzt tun sollten:

Denken Sie daran: Es ist fast unmöglich, Ihre Daten zu verbergen, wenn Sie sie (auf freundliche Weise) für Ihre regulären Benutzer veröffentlichen möchten.

So,

  • machen Sie Ihre Daten einfach zugänglich - mit einer API
    • dies ermöglicht den einfachen Datenzugriff
    • z.B. Entlasten Sie Ihren Server vom Scraping - gut für Sie
  • richten Sie die richtigen Nutzungsrechte ein (z. B. muss die Quelle angegeben werden).
  • denken Sie daran, dass viele Daten nicht urheberrechtlich geschützt sind - und schwer zu schützen sind
  • füge einige gefälschte Daten hinzu (wie du es bereits getan hast) und verwende legale Tools
    • wie andere bereits sagten, senden Sie einen "Unterlassungsbescheid"
    • andere rechtliche Schritte (verklagen und ähnliches) sind wahrscheinlich zu kostspielig und schwer zu gewinnen (insbesondere gegen Websites außerhalb der USA).

Überlegen Sie zweimal, bevor Sie versuchen, einige technische Barrieren zu nutzen.

Versuchen Sie nicht, die Data Miner zu blockieren, sondern verbessern Sie die Benutzerfreundlichkeit Ihrer Website. Ihr Benutzer wird Sie lieben. Die Zeit (und Energie), die in technische Barrieren investiert wird, lohnt sich normalerweise nicht - verbringen Sie die Zeit besser, um eine noch bessere Website zu erstellen ...

Auch Datendiebe sind nicht wie normale Diebe.

Wenn Sie eine preiswerte Hausalarmanlage kaufen und die Warnung "Dieses Haus ist mit der Polizei verbunden" hinzufügen, werden viele Diebe nicht einmal versuchen, in das Haus einzubrechen. Weil ein falscher Zug von ihm kommt - und er ins Gefängnis kommt ...

Sie investieren also nur wenig Geld, aber der Dieb investiert und riskiert viel.

Aber der Datendieb hat keine solchen Risiken. Im Gegenteil: Wenn Sie eine falsche Entscheidung treffen (z. B. wenn Sie aufgrund technischer Hindernisse einen BUG einführen), verlieren Sie Ihre Benutzer. Wenn der Scraping-Bot zum ersten Mal nicht funktioniert, passiert nichts - der Data Miner versucht einfach einen anderen Ansatz und/oder debuggt das Skript.

In diesem Fall müssen Sie viel mehr investieren - und der Schaber investiert viel weniger.

Überlegen Sie nur, wo Sie Ihre Zeit und Energie investieren möchten ...

Ps: Englisch ist nicht meine Muttersprache - also vergib mir mein gebrochenes Englisch ...

9
jm666

Dinge, die gegen Anfängerkratzer funktionieren könnten:

  • IP-Blockierung
  • benutze viel Ajax
  • überprüfen Sie den Header der Referer-Anfrage
  • login erforderlich

Dinge, die im Allgemeinen helfen werden:

  • ändere dein Layout jede Woche
  • robots.txt

Dinge, die helfen, aber Ihre Benutzer dazu bringen, Sie zu hassen:

  • captcha
8
pguardiario

Ich habe eine Menge Web Scraping gemacht und einige Techniken, um Web Scraper zu stoppen in meinem Blog zusammengefasst, basierend auf dem, was ich ärgerlich finde.

Es ist ein Kompromiss zwischen Ihren Benutzern und Abstreifern. Wenn Sie IPs einschränken, CAPTCHAs verwenden, sich anmelden müssen usw., machen Sie es den Abstreifern schwer. Dies kann aber auch Ihre echten Benutzer vertreiben.

8
hoju

Aus technischer Sicht: Modellieren Sie einfach, was Google macht, wenn Sie zu viele Anfragen auf einmal haben. Das sollte vieles stoppen.

Aus rechtlicher Sicht: Die von Ihnen veröffentlichten Daten scheinen nicht urheberrechtlich geschützt zu sein. Das heißt, Sie veröffentlichen Namen, Statistiken und andere Informationen, die nicht urheberrechtlich geschützt sind.

In diesem Fall verletzen die Scraper 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 Scrapen des Bildschirms beendet. Es gibt viele legale Möglichkeiten, wie Sie versuchen können, jemanden daran zu hindern, 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. Lassen Sie sie einfach im Namen der Redefreiheit und der offenen Daten. Genau darum geht es im Web.

8
dengeltrees

Ihre beste Option ist leider ziemlich manuell: Suchen Sie nach Datenverkehrsmustern, von denen Sie glauben, dass sie auf das Abwischen hindeuten, und sperren Sie ihre IP-Adressen.

Da es sich um eine öffentliche Site handelt, wird durch die Aktivierung der Site-Suchmaschine auch die Scraping-Fähigkeit der Site erhöht. Wenn eine Suchmaschine Ihre Website crawlen und kratzen kann, kann dies auch ein böswilliger Scraper. Es ist eine feine Linie, um zu gehen.

8
STW

Sicher ist es möglich. Schalten Sie Ihre Website für einen 100% igen 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 zwischen der ersten Verbindung zu Ihrer Site und nachfolgenden Klicks einige Sekunden 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 ein wenig hilfreich sind.

7
Wayne Werner
  1. Nein, es ist in keiner Weise möglich aufzuhören
  2. Umarme es. Warum nicht als RDFa veröffentlichen und supersuchmaschinenfreundlich werden und die Wiederverwendung von Daten fördern? Die Leute werden sich bei Ihnen bedanken und Kredit geben, wo dies fällig ist (siehe musicbrainz als Beispiel).

Es ist nicht die Antwort, die Sie wahrscheinlich wollen, aber warum verstecken Sie, was Sie öffentlich machen wollen?

6
nathan

Es gibt einige Dinge, die Sie tun können, um das Bildschirmabschaben zu verhindern. Einige sind nicht sehr effektiv, andere (ein CAPTCHA), behindern jedoch die Benutzerfreundlichkeit. Sie müssen auch bedenken, dass dies legitime Website-Scraper wie Suchmaschinenindizes behindern kann.

Ich gehe jedoch davon aus, dass Suchmaschinen den Index auch dann nicht indizieren sollen, wenn Sie nicht möchten, dass er abgeschabt wird.

Hier sind einige Dinge, die Sie ausprobieren können:

  • Zeigen Sie den Text in einem Bild. Dies ist recht zuverlässig und belastet den Benutzer weniger als ein CAPTCHA, bedeutet jedoch, dass er nicht in der Lage ist, auszuschneiden und einzufügen, und dass es nicht schön skaliert oder zugänglich ist.
  • Verwenden Sie ein CAPTCHA und verlangen Sie, dass es ausgefüllt ist, bevor Sie die Seite zurücksenden. Dies ist eine zuverlässige Methode, aber auch der größte Schmerz, der einem Benutzer auferlegt werden muss.
  • Fordern Sie den Benutzer auf, sich für ein Konto anzumelden, bevor Sie die Seiten anzeigen, und bestätigen Sie seine E-Mail-Adresse. Dies wird ziemlich effektiv sein, aber nicht vollständig - ein Screen-Scraper kann ein Konto einrichten und sein Skript geschickt programmieren, um sich für sie anzumelden.
  • Wenn die Benutzeragentenzeichenfolge des Clients leer ist, blockieren Sie den Zugriff. Ein Site-Scraping-Skript ist häufig träge programmiert und legt keine User-Agent-Zeichenfolge fest, wohingegen dies bei allen Webbrowsern der Fall ist.
  • Sie können eine schwarze Liste bekannter Screen-Scraper-User-Agent-Strings erstellen, sobald Sie diese entdecken. Auch dies wird nur den träge codierten helfen; Ein Programmierer, der weiß, was er tut, kann eine User-Agent-Zeichenfolge festlegen, die die Identität eines Webbrowsers annimmt.
  • Ändern Sie den URL-Pfad häufig. Wenn Sie es ändern, stellen Sie sicher, dass das alte weiterhin funktioniert, jedoch nur so lange, wie ein Benutzer wahrscheinlich seinen Browser geöffnet hat. Machen Sie es sich schwer, den neuen URL-Pfad vorherzusagen. Dies macht es für Skripte schwierig, sie zu erfassen, wenn ihre URL fest codiert ist. Es wäre am besten, dies mit einer Art Skript zu tun.

Wenn ich dies tun müsste, würde ich wahrscheinlich eine Kombination der letzten drei verwenden, da sie die Unannehmlichkeiten für legitime Benutzer minimieren. Sie müssen jedoch akzeptieren, dass Sie nicht jeden auf diese Weise blockieren können, und wenn jemand herausfindet, wie er es umgehen kann, kann er es für immer abkratzen. Sie könnten dann einfach versuchen, ihre IP-Adressen zu blockieren, wenn Sie sie entdecken, denke ich.

6
thomasrutter

Methode 1 (nur kleine Websites):
Servieren Sie verschlüsselte/verschlüsselte Daten.
Ich durchsuche das Web mit python (urllib, request, beautifulSoup etc ...)) und habe viele Websites gefunden, die verschlüsselte/verschlüsselte Daten enthalten, die in keiner Programmierung entschlüsselt werden können Sprache einfach, weil die Verschlüsselungsmethode nicht existiert.

Ich habe dies auf einer PHP Website durch Verschlüsseln und Minimieren der Ausgabe erreicht (WARNUNG: Dies ist keine gute Idee für große Websites). Die Antwort war immer durcheinander.

Beispiel für die Minimierung der Ausgabe in PHP ( Wie kann man die HTML-Ausgabe von PHP-Seiten minimieren? ):

<?php
  function sanitize_output($buffer) {
    $search = array(
      '/\>[^\S ]+/s', // strip whitespaces after tags, except space
      '/[^\S ]+\</s', // strip whitespaces before tags, except space
      '/(\s)+/s'      // shorten multiple whitespace sequences
    );
    $replace = array('>', '<', '\\1');
    $buffer = preg_replace($search, $replace, $buffer);
    return $buffer;
  }
  ob_start("sanitize_output");
?>

Methode zwei:
Wenn Sie sie nicht aufhalten können, stellen Sie gefälschte/unbrauchbare Daten als Antwort bereit.

Methode drei:
gebräuchliche Scraping-User-Agents blockieren. Dies wird auf großen Websites angezeigt, da es unmöglich ist, sie mit "python3.4" als User-Agent zu scrappen.

Methode 4:
Stellen Sie sicher, dass alle Benutzer-Header gültig sind. Manchmal gebe ich so viele Header wie möglich an, damit mein Scraper wie ein authentischer Benutzer aussieht. Einige von ihnen sind nicht einmal wahr oder gültig wie en-FU :).
Hier ist eine Liste einiger der von mir gebräuchlichsten Überschriften.

headers = {
  "Requested-URI": "/example",
  "Request-Method": "GET",
  "Remote-IP-Address": "656.787.909.121",
  "Remote-IP-Port": "69696",
  "Protocol-version": "HTTP/1.1",
  "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
  "Accept-Encoding": "gzip,deflate",
  "Accept-Language": "en-FU,en;q=0.8",
  "Cache-Control": "max-age=0",
  "Connection": "keep-alive",
  "Dnt": "1",  
  "Host": "http://example.com",
  "Referer": "http://example.com",
  "Upgrade-Insecure-Requests": "1",
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36"
}
5
user5870134

Anstatt Bots auf die Blacklist zu setzen, sollten Sie sie vielleicht auf die Whitelist setzen. Wenn Sie nicht möchten, dass Ihre Suchergebnisse für die wenigen führenden Suchmaschinen gelöscht werden, können Sie deren User-Agent-Zeichenfolgen auf die Positivliste setzen, die in der Regel gut bekannt sind. Die weniger ethischen Bots tendieren dazu, User-Agent-Strings von populären Webbrowsern zu fälschen. Die wenigen führenden Suchmaschinen sollten 95% Ihres Verkehrsaufkommens überschreiten.

Das Identifizieren der Bots selbst sollte mit den von anderen Postern vorgeschlagenen Techniken relativ einfach sein.

2
Chris

Ein schneller Ansatz wäre, eine Spreng-/Bot-Falle zu stellen.

  1. Erstellen Sie eine Seite, die, wenn sie eine bestimmte Anzahl von Malen oder überhaupt geöffnet ist, bestimmte Informationen wie die IP und so weiter sammelt (Sie können auch Unregelmäßigkeiten oder Muster berücksichtigen, aber diese Seite sollte überhaupt nicht geöffnet werden müssen).

  2. Stellen Sie auf Ihrer Seite einen Link dazu her, der mit der CSS-Anzeige verborgen ist: none; oder links: -9999px; Position: absolut; Versuchen Sie, es an Stellen zu platzieren, an denen es weniger unwahrscheinlich ist, dass es ignoriert wird, z. B. dort, wo Ihr Inhalt untergeht, und nicht in der Fußzeile, da Bots manchmal entscheiden können, bestimmte Teile einer Seite zu vergessen.

  3. In Ihrer robots.txt-Datei legen Sie eine ganze Reihe von Verbotsregeln für Seiten fest, für die Sie nicht möchten, dass freundliche Bots (LOL, wie sie fröhliche Gesichter haben!) Informationen sammeln und diese Seite als eine von ihnen festlegen.

  4. Nun, wenn ein freundlicher Bot durchkommt, sollte er diese Seite ignorieren. Richtig, aber das ist immer noch nicht gut genug. Machen Sie ein paar mehr von diesen Seiten oder leiten Sie eine Seite irgendwie um, um andere Namen zu akzeptieren. Fügen Sie dann diesen Trap-Seiten in Ihrer robots.txt-Datei neben den Seiten, die ignoriert werden sollen, weitere Verbotsregeln hinzu.

  5. Sammeln Sie die IP-Adresse dieser Bots oder aller Personen, die diese Seiten betreten, und verbieten Sie sie nicht. Bieten Sie jedoch eine Funktion an, mit der Sie unlesbaren Text in Ihren Inhalten anzeigen können, z guter inhalt. Sie können auch Links festlegen, die auf eine Seite verweisen, deren Laden ewig dauert, z. In PHP können Sie die Funktion sleep () verwenden. Dies wehrt den Crawler ab, wenn er eine Art Erkennung hat, um Seiten zu umgehen, die viel zu lange zum Laden benötigen, da einige gut geschriebene Bots so eingestellt sind, dass sie X Links gleichzeitig verarbeiten.

  6. Wenn Sie bestimmte Textzeichenfolgen/-sätze eingegeben haben, gehen Sie zu Ihrer bevorzugten Suchmaschine und suchen Sie nach diesen. Dies zeigt Ihnen möglicherweise, wo Ihre Inhalte landen.

Wie auch immer, 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 scambeln oder die Art und Weise, wie Attribute auf dem Seitenelement angezeigt werden:

<a class="someclass" href="../xyz/abc" rel="nofollow" title="sometitle"> 

dies ändert jedes Mal seine Form, wenn einige Bots so eingestellt werden, dass sie nach bestimmten Mustern auf Ihren Seiten oder bestimmten Elementen suchen.

<a title="sometitle" href="../xyz/abc" rel="nofollow" class="someclass"> 

id="p-12802" > id="p-00392"
2
Steve Chan

Ich stimme den meisten der oben genannten Posts zu und möchte hinzufügen, dass Ihre Website umso kratzfähiger ist, je suchmaschinenfreundlicher sie ist. Sie könnten versuchen, ein paar Dinge zu tun, die für Schaber sehr schwierig sind, aber es könnte auch Ihre Suchfähigkeit beeinträchtigen ... Es hängt natürlich davon ab, wie gut Sie möchten, dass Ihre Website in Suchmaschinen rangiert.

1
sjobe

Die meisten wurden bereits erwähnt, aber haben Sie den CloudFlare-Schutz in Betracht gezogen? Ich meine das:

image description

Das machen wahrscheinlich auch andere Unternehmen, CloudFlare ist das einzige, das ich kenne.

Ich bin mir ziemlich sicher, dass das ihre Arbeit erschweren würde. Ich habe auch einmal die IP für 4 Monate automatisch gesperrt bekommen, als ich versuchte, Daten einer durch CloudFlare geschützten Site aufgrund eines Ratenlimits zu verschrotten (ich habe eine einfache AJAX -Anforderungsschleife verwendet).

1
Tomáš Zato

Sie können das normale Scrapen des Bildschirms nicht stoppen. Zum Guten oder Schlechten ist es die Natur des Webs.

Sie können can festlegen, dass niemand auf bestimmte Dinge (einschließlich Musikdateien) zugreifen kann, es sei denn, er ist als registrierter Benutzer angemeldet. Es ist nicht zu schwierig in Apache zu tun . Ich nehme an, es wäre nicht allzu schwierig, dies auch in IIS zu tun.

1
Dinah

Eine Möglichkeit wäre, 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

    <document 
     filename="" 
     height="" 
     width="" 
     title="SKECHERS" 
     linkType="" 
     linkUrl="" 
     imageMap="" 
     href=&quot;http://www.bobsfromskechers.com&quot; 
     alt=&quot;BOBS from Skechers&quot; 
     title=&quot;BOBS from Skechers&quot; 
    />
    
  • Chrome Web Store : JSON

    <script type="text/javascript" src="https://apis.google.com/js/plusone.js">{"lang": "en", "parsetags": "explicit"}</script>
    
  • Bing News : Daten-URL

    <script type="text/javascript">
      //<![CDATA[
      (function()
        {
        var x;x=_ge('emb7');
        if(x)
          {
          x.src='data:image/jpeg;base64,/*...*/';
          } 
        }() )
    
  • Protopage : URL-codierte Zeichenfolgen

    unescape('Rolling%20Stone%20%3a%20Rock%20and%20Roll%20Daily')
    
  • TiddlyWiki : HTML Entities + vorformatiertes JSON

       <pre>
       {&quot;tiddlers&quot;: 
        {
        &quot;GettingStarted&quot;: 
          {
          &quot;title&quot;: &quot;GettingStarted&quot;,
          &quot;text&quot;: &quot;Welcome to TiddlyWiki,
          }
        }
       }
       </pre>
    
  • Amazon : Fauler Ladevorgang

    amzn.copilot.jQuery=i;amzn.copilot.jQuery(document).ready(function(){d(b);f(c,function() {amzn.copilot.setup({serviceEndPoint:h.vipUrl,isContinuedSession:true})})})},f=function(i,h){var j=document.createElement("script");j.type="text/javascript";j.src=i;j.async=true;j.onload=h;a.appendChild(j)},d=function(h){var i=document.createElement("link");i.type="text/css";i.rel="stylesheet";i.href=h;a.appendChild(i)}})();
    amzn.copilot.checkCoPilotSession({jsUrl : 'http://z-ecx.images-Amazon.com/images/G/01/browser-scripts/cs-copilot-customer-js/cs-copilot-customer-js-min-1875890922._V1_.js', cssUrl : 'http://z-ecx.images-Amazon.com/images/G/01/browser-scripts/cs-copilot-customer-css/cs-copilot-customer-css-min-2367001420._V1_.css', vipUrl : 'https://copilot.Amazon.com'
    
  • XMLCalabash : XML mit Namespace + Benutzerdefinierter MIME-Typ + Benutzerdefinierte Dateierweiterung

       <p:declare-step type="pxp:Zip">
            <p:input port="source" sequence="true" primary="true"/>
            <p:input port="manifest"/>
            <p:output port="result"/>
            <p:option name="href" required="true" cx:type="xsd:anyURI"/>
            <p:option name="compression-method" cx:type="stored|deflated"/>
            <p:option name="compression-level" cx:type="smallest|fastest|default|huffman|none"/>
            <p:option name="command" select="'update'" cx:type="update|freshen|create|delete"/>
       </p:declare-step>
    

Wenn Sie eine der oben genannten Quellen anzeigen, werden beim Scraping lediglich Metadaten und die Navigation zurückgegeben.

1
Paul Sweatte

Screen Scraper arbeiten mit der Verarbeitung von HTML. Und wenn sie entschlossen sind, Ihre Daten abzurufen, können Sie technisch nicht viel tun, da der menschliche Augapfel alles verarbeitet. Rechtlich ist bereits darauf hingewiesen worden, dass Sie möglicherweise Rückgriff haben, und das wäre meine Empfehlung.

Sie können jedoch den kritischen Teil Ihrer Daten mithilfe einer nicht auf HTML basierenden Präsentationslogik ausblenden

  • Erstellen Sie eine Flash Datei für jeden Interpreten/jedes Album usw.
  • Generieren Sie ein Bild für jeden Künstlerinhalt. Möglicherweise würde gerade ein Bild für den Künstlernamen, etc. genug sein. Dazu rendern Sie den Text auf eine JPEG / PNG Datei auf dem Server und Verlinkung zu diesem Bild.

Bedenken Sie, dass dies wahrscheinlich Ihre Suchrankings beeinflussen würde.

0
James Westgate

Generieren Sie HTML, CSS und JavaScript. Generatoren lassen sich einfacher schreiben als Parser, sodass Sie jede gelieferte Seite anders generieren können. Sie können dann keinen Cache oder statischen Inhalt mehr verwenden.

0

Wenn Sie ein großartiges Beispiel sehen möchten, lesen Sie http://www.bkstr.com/ . Sie verwenden einen J/S-Algorithmus, um ein Cookie zu setzen, und laden dann die Seite neu, damit sie mithilfe des Cookies überprüfen kann, ob die Anforderung in einem Browser ausgeführt wird. Eine Desktop-App, die zum Scrapen entwickelt wurde, könnte dies definitiv verhindern, aber die meisten CURL-Scraping-Vorgänge würden gestoppt.

0
blacktie24

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 kann.

0
SorcyCat