Wie kann man Spider blockieren/verhindern?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wie kann man Spider blockieren/verhindern?

    Hallo,

    bei meiner Datenbank stelle ich seit kurzem verstärkte Aktivitäten von Spider-Programmen fest.
    Dabei wird im Sekundentakt anscheinend Satz für Satz meiner Datenbank abgefragt.
    Obwohl ich mir nicht sicher bin, daß es sich hierbei um Suchmaschinen handelt (wenn die sich an die robots.txt halten würden, dürften sie diese Verzeichnisse gar nicht scannen...), gehe ich eher davon aus, daß hier Content-Klauer unterwegs sind.

    Meine Frage ist nun, wie kann man solche Spider weitestgehend verhindern bzw. stoppen (ganz vermeiden lassen sie sich ja wahrscheinlich ohnehin nicht)?

    Mir sind hierzu selber 2 Sachen eingefallen:
    - Prüfen, daß zwischen den Seitenaufrufen einer bestimmten IP-Adresse mindestens x Sekunden liegen müssen.
    - Wenn eine IP-Adresse innerhalb von x Sekunden mehr als y Abfragen macht, dann soll diese IP für einen bestimmten Zeitraum gesperrt werden.

    Da meine PHP-Kenntnisse leider nicht so gut sind, daß ich so etwas "mal eben" programmieren könnte, meine Fragen an Euch:
    Könnte man das so programmieren (und wenn ja, wie?) und wie effektiv ist es?
    Hat jemand vielleicht schon mal ähnliches realisiert?
    Gibt es bessere Vorschläge/Ideen?

    Kurz noch etwas zur Umgebung: Es handelt sich um eine reine PHP-/MySQL-Anwendung. Sessions und Cokkies benutze ich nicht.

    Ich bin Euch für jeden Hinweis dankbar.
    Zuletzt geändert von stef@n; 12.05.2004, 15:28.

  • #2
    wenn ein user ein zwei links kurz hintereinander anklickt fällt er ja auch in deine sperre rein.


    Und dann weiss ich nicht genau, surfen bei den großen ISP Anbietern nicht einiger User mit der gleichen (zur gleichen Zeit) IP per proxy oder so.
    mfg
    marc75

    <Platz für anderes>

    Kommentar


    • #3
      Original geschrieben von marc75
      wenn ein user ein zwei links kurz hintereinander anklickt fällt er ja auch in deine sperre rein.
      Das könnte passieren, allerdings könnte man die Abfrage ja nur auf eine bestimmte Seite (die Ergebnisseite mit dem Datensatz) beschränken.
      Ansonsten war ja auch meine zweite Überlegung, daß man z.B. prüft, ob eine IP z.B. innerhalb von 60 Sekunden mehr als 30 Abfragen macht... Das kann dann nur ein Spider sein, oder?

      Kommentar


      • #4
        Da es ja auch IE-Nutzer gibt, die die gesamte Seite einfach speichern wollen, um sie später mal offline zu lesen (hatte bei unserem Kunden mal ein Übersetzungs-Büro versucht, um danach den Auftrag abzulehnen ... "bei 1500 Seiten hatten wir dann abgebrochen..." ), haben wir denen mal vor längerer Zeit dies hier um die Ohren gehauen:
        PHP-Code:
          if ((preg_match ("/MSIECrawler/i",$HTTP_USER_AGENT))) {
               echo 
        "<h1>Bitte nicht versuchen, die Webseite zu speichern, danke!</h1>";
               exit;
          } 
        (-:
        Bookmarks:·Bilder·Jobs·Recht·
        kostenloser Webkataloge-Assistent

        Kommentar


        • #5
          Normalerweise sind die Suchmaschinen-Spider die einzigen, die ne Seite so durchsuchen. Vielleicht hast du ja einen Fehler in der robots.txt. Woher weißt du überhaupt, dass da Spider am Werk sind? Können das nicht auch normale User sein?
          Ansonten könnten noch email-Adress-Sammler der Spam-Versender am Werk sein.

          Vielleicht hilft dir das hier auch wieter:
          http://www.php-resource.de/forum/sho...threadid=13043
          hopka.net!

          Kommentar


          • #6
            Original geschrieben von Hopka
            Vielleicht hast du ja einen Fehler in der robots.txt.
            Könnte natürlich sein, das werde ich wohl nochmal prüfen müssen...

            Original geschrieben von Hopka
            Woher weißt du überhaupt, dass da Spider am Werk sind? Können das nicht auch normale User sein?
            Ansonten könnten noch email-Adress-Sammler der Spam-Versender am Werk sein.
            Also normale User sind das definitiv nicht.
            Zusätzlich zum Server-logfile schreibe ich bestimmte Seitenaufrufe in eine Logdatei direkt in die MySQL-DB, um so z.B. die Suchbegriffe von Usern auswerten zu können.
            Wenn hier nun über Stunden hinweg Seitenaufrufe von ein und derselben IP-Adresse schnell hintereinander kommen (mit teilweise mehreren Seitenaufrufen pro Sekunde), kann das wohl nur von einem Spider erfolgen...

            Ich weiß halt aber trotzdem nicht, ob dies nun "nur" eine Suchmaschine ist oder ein Roboter-Programm von einem normalen User...?
            Solche Roboter-Programme (z.B. "Bildsauger"-Tools) kenne ich aus eigener Erfahrung zwar nur für statische HTML-Seiten, aber warum soll es sowas nicht auch für dynamische Seiten geben?

            Kommentar


            • #7
              War es vielleicht der MSNBot? Dem ist es zumindest egal, ob´s eine dynamische oder statische Seite ist. Bei mir war er auch und hat auf einer Homepage, wo Google nur eine Seite (index.php) findet, innerhalb von drei Tagen mit 17000 Zugriffen ca. 700 MByte Traffic verursacht.
              (-:
              Bookmarks:·Bilder·Jobs·Recht·
              kostenloser Webkataloge-Assistent

              Kommentar


              • #8
                Original geschrieben von kill_bill
                War es vielleicht der MSNBot?
                Glaub ich eher nicht. Ein paar der IP-Adressen habe ich mal zurückverfolgt und die waren alle bei AOL registriert. Merkwürdigerweise aber nicht nur bei AOL Deutschland sondern z.B. auch AOL UK...
                Was sollte einem das sagen?

                Bei mir war er auch und hat auf einer Homepage, wo Google nur eine Seite (index.php) findet, innerhalb von drei Tagen mit 17000 Zugriffen ca. 700 MByte Traffic verursacht.
                Bei mir waren es schon über 80.000 Datensätze... den zusätzlichen Traffic gucke ich mir lieber erst gar nicht an...
                Zuletzt geändert von stef@n; 13.05.2004, 04:08.

                Kommentar


                • #9
                  Ist das eigentlich legitim ?


                  Sonst könnte ja jeder eine "Suchmaschine" Coden die zufällig bei der Konkurrenz traffic ohne verursacht...


                  An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                  Kommentar


                  • #10
                    Hallo!
                    Hatte auch schon mit so was zu tun.
                    Schau' Dir 'mal die Logs an wie er das macht.
                    Bei mir ist er nicht über die Links der Seite gegangen sondern über eine
                    fortlaufende Nummer in der DB und hat die per Script hochgezählt.
                    Hab dann die Seite so angepasst, dass sie nur dann etwas angezeigt,
                    wenn man sie mit Nummer UND einer zusätzlichen chiffrierten Nummer aufgerufen wird.
                    Das war recht einfach nachträglich zu integrieren.

                    Das Prinzip:
                    Der Link enthält nach wie vor die Nummer und die NeueVar=MD5( Nummer + Codewort).

                    Die Seite überprüft
                    NeueVar = MD5( Nummer + Codewort) ???

                    Funktioniert natürlich nur wenn der "Angreifer" nicht über Links geht.
                    Aber das ist halt schon viel aufwändiger (Seite parsen) als einfach eine Zahl hochzuzählen.
                    Jedenfalls ist da jetzt Ruhe!

                    P.S.
                    Nachdem die Seite geändert wurde, wurde
                    der Angreifer wurde über die IP ausfindig gemacht, er kam aus DE.
                    Der Seitenbetreiber ging dann auf die Internetseite des Angreifers und fand
                    Teile seiner Daten wieder. Dann hat er ihn auf Schadensersatz verklagt.
                    Leider weiss ich nicht, was dann daraus geworden ist.

                    Kommentar


                    • #11
                      Nachtrag:
                      Besonders heikle Daten werden dort in Grafiken ausgegeben.
                      Für normale Surfer sieht alles gleich aus, eine
                      automatisierte Weiterverarbeitung ist allerdings
                      so gut wie nicht möglich -> Abtippen ist angesagt.

                      Macht aber nur Sinn wenn diese Daten nicht zu oft auf einer Seite vorkommen.

                      Kommentar


                      • #12
                        Original geschrieben von fuser
                        Hab dann die Seite so angepasst, dass sie nur dann etwas angezeigt,
                        wenn man sie mit Nummer UND einer zusätzlichen chiffrierten Nummer aufgerufen wird.
                        Das war recht einfach nachträglich zu integrieren.

                        Das Prinzip:
                        Der Link enthält nach wie vor die Nummer und die NeueVar=MD5( Nummer + Codewort).

                        Die Seite überprüft
                        NeueVar = MD5( Nummer + Codewort) ???

                        Funktioniert natürlich nur wenn der "Angreifer" nicht über Links geht.
                        Aber das ist halt schon viel aufwändiger (Seite parsen) als einfach eine Zahl hochzuzählen.
                        Ja, gute Idee.
                        Aber muß der User dann immer ein zusätzliches Codewort eingeben? Das wäre ja nicht sehr benutzerfreundlich...

                        Da kommt mir aber selber gerade eine Idee, wie man Spider noch blockieren könnte.
                        Ich habe auf den wichtigsten Seiten immer ein kleines JavaScript vorgeschaltet mit dem ich die Bildschirmauflösung des Users ermittle. Dann übergebe ich hierfür einen Wert in der URL und steuere so den Bildschirmaufbau (Tabellenbreiten u.ä.) der aufgerufenen Seite. Bei einem Spider ist dieser Wert immer 0, da er ja keinen Wert hierfür ermitteln kann.
                        Momentan gebe ich in diesem Fall immer eine Standard-Bildschirmauflösung aus, stattdessen könnte man natürlich auch den Zugriff verweigern und eine Fehlermeldung ausgeben.
                        Ich bin mir allerdings nicht sicher wie fehleranfällig diese Methode ist, denn vereinzelt habe ich auch schon normale User in den Logs gefunden, die hier ebenfalls den Wert 0 stehen hatten. Die würde man dann natürlich auch aussperren...

                        Kommentar


                        • #13
                          Aber muß der User dann immer ein zusätzliches Codewort eingeben?
                          Nein. Das Codewort wird nur im PHP benutzt, das Resultat kommt in die URL. Der Benutzer merkt davon nichts.

                          Bei einem Spider ist dieser Wert immer 0, da er ja keinen Wert hierfür ermitteln kann.
                          Wenn ein Script die Seite scannt, ist dieser Wert eben nicht null.
                          Und eine Konstante wie die Bildschirmauflösung kann man einfach reinschreiben.
                          Und damit das keine Konstante ist -> s.o. MD5 in Abhängigkeit von dem Parameter der gescannt wird.

                          Kommentar

                          Lädt...
                          X