Linuchs: Infos über Webseiten-Besucher

Seit einiger Zeit informiere ich Veranstalter per automatischer Mail, wenn der Zähler ihrer Events einen runden Betrag erreicht.

Dabei gebe ich in der Mail weiter, wie sich das Programm, bzw. der Browser meldet. Also zum Beispiel

Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)

Mir behagt es nicht, dass über 90% dieser Aufrufe von Bots kommen. Wir Menschen (ich programmiere, Veranstalter geben Daten ein) arbeiten also für Maschinen. Und die gaukeln den Countern dann "Interesse" vor.

Frage 1: Wie kann ich die Bot-Zugriffe reduzieren? Da gab es doch den head-Eintrag "visit-after", den finde ich aber nicht (mehr). Wahrscheinlich heisst er anders. Richten sich Bots danach?

Frage 2: Wie kann ich menschliche Aufrufe erkennen?

Frage 3: Ein netter Service wäre, menschliche Aufrufe in etwa so zu melden: "Aufruf kommt aus der Gegend von [Stadtname]" - ich denke, das ist keine Verletzung der Anonymität. Doch woher bekommt mein PHP Programm diese Info?

  1. Hallo

    Dabei gebe ich in der Mail weiter, wie sich das Programm, bzw. der Browser meldet. Also zum Beispiel

    Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)

    Warum machst du das? Warum sollte ich wissen wollen, wie sich jeder 100-ste oder 1000-ste Besucher identifiziert, die Identifizierungen der anderen 99 oder 999 aber nicht?

    Mir behagt es nicht, dass über 90% dieser Aufrufe von Bots kommen. Wir Menschen (ich programmiere, Veranstalter geben Daten ein) arbeiten also für Maschinen. Und die gaukeln den Countern dann "Interesse" vor.

    Nein, falscher Ansatz. Sie besuchen, aus welchen Gründen auch immer, die Seite. Dein Problem ist, dass du sie zählst.

    Frage 1: Wie kann ich die Bot-Zugriffe reduzieren? Da gab es doch den head-Eintrag "visit-after", den finde ich aber nicht (mehr). Wahrscheinlich heisst er anders. Richten sich Bots danach?

    Mit der robots.txt kannst du zumindest die Robots, die deren Anweisungen achten, aussperren. Nebenwirkung: Die Robots der Suchmaschinen – bei denen am ehesten anzunehmen sit, dass sie die Anweisungen der robots.txt beachten – fliegen ebenfalls raus.

    Frage 2: Wie kann ich menschliche Aufrufe erkennen?

    <klugschiss>Es gibt keine menschlichen Aufrufe, die benutzen, wie die Robots, ebenfalls Maschinen.</klugschiss>

    Du kannst dir bekannte Robots über deren UA-String erkennen. Du kannst mit einigem Aufwand und einer gewissen Wahrscheinlichkeit weit unterhalb 100% am Verhalten erkennen, ob ein Besucher mit einem browser verschiedene Seiten aufruft oder ein Robot verlinkte Seiten „durchfliegt“. Sicher ist das aber nicht.

    Frage 3: Ein netter Service wäre, menschliche Aufrufe in etwa so zu melden: "Aufruf kommt aus der Gegend von [Stadtname]" - ich denke, das ist keine Verletzung der Anonymität. Doch woher bekommt mein PHP Programm diese Info?

    Eine IP-Adresse wird dir als Surfer von deinem ISP zugewiesen. Wer das ist, ist bekannt. Anhand der IP-Adresse lassen sich somit Vermutungen über den Einwahlknoten des ISPs anstellen. Das kann aber auch mächtig daneben liegen.

    Tschö, Auge

    --
    Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
    Terry Pratchett, „Gevatter Tod“
    1. Hi,

      Frage 3: Ein netter Service wäre, menschliche Aufrufe in etwa so zu melden: "Aufruf kommt aus der Gegend von [Stadtname]" - ich denke, das ist keine Verletzung der Anonymität. Doch woher bekommt mein PHP Programm diese Info?

      Eine IP-Adresse wird dir als Surfer von deinem ISP zugewiesen. Wer das ist, ist bekannt. Anhand der IP-Adresse lassen sich somit Vermutungen über den Einwahlknoten des ISPs anstellen. Das kann aber auch mächtig daneben liegen.

      so ist es - ich bin als im Großraum Stuttgart ansässiger 1&1-Kunde von Diensten, die mich anhand meiner IP lokalisieren wollen, schon so ziemlich überall von Emden bis Passau, von Freiburg bis Greifswald vermutet worden. Zwar gibt es eine Häufung im Bereich Stuttgart/Heilbronn, aber nicht so, dass ich das als brauchbare Aussage verkaufen würde.

      Ciao,
       Martin

    2. [Stadtname] ... Doch woher bekommt mein PHP Programm diese Info?

      Anhand der IP-Adresse lassen sich somit Vermutungen über den Einwahlknoten des ISPs anstellen. Das kann aber auch mächtig daneben liegen.

      Hmm, ist Neuland für mich. Wie programmiere ich Vermutungen?

      Wenn ich Google Maps aufrufe, ist meistens (nicht immer) der Raum Rhein-Main in der Mitte. Kommt ungefähr hin. Sowas würde mir reichen.

    3. hi.

      Eine IP-Adresse wird dir als Surfer von deinem ISP zugewiesen. Wer das ist, ist bekannt. Anhand der IP-Adresse lassen sich somit Vermutungen über den Einwahlknoten des ISPs anstellen. Das kann aber auch mächtig daneben liegen.

      12.218.150.209 => USA/Illinois :)

      Gruß aus Chicago.

    4. Anhand der IP-Adresse lassen sich somit Vermutungen über den Einwahlknoten des ISPs anstellen. Das kann aber auch mächtig daneben liegen.

      Ich habe gerade drei Location Dienste ausprobiert. Sie liefern entweder die Landeshauptstadt (ok die stimmt wenigstens :-) oder eine Stadt in der vielleicht ein anderer Einwahlknoten oder eine Zweigstelle des Providers sein könnte. Beide liegen bestimmt gut über 100 km voneinander entfernt. Also bereits hier Fehlanzeige. Um es komplett zu machen, beide Orte könnten zwar ein ziemlich übergeordneter Einwahlknoten sein. Aber nachdem ich von beiden ebenfalls zu weit weg bin um Sinn zu ergeben, würde ich diese Infos direkt in die Tonne kloppen. Als Schätzung des Bundeslandes wärs ok. Für alles andere nicht. Wenn wir ehrlich sind ist das doch auch gut so.

      1. Hallo Encoder,

        warum „schon wieder nicht benutzbar?“

        LG,
        CK

        1. warum „schon wieder nicht benutzbar?“

          Das habe ich mich beim lesen meines Beitrags auch gefragt. Auf diesem Rechner war ich längst angemeldet. Anscheinend hat es das wieder rausgeworfen. Warum dann der unangemeldete Name drin stand den ich benutzt habe als ich mein Passwort nicht wusste, kann ich auch nicht erklären. Inzwischen bin ich wieder angemeldet und hoffe das hält wieder ne Weile :-)

          1. Hallo encoder,

            Warum dann der unangemeldete Name drin stand den ich benutzt habe als ich mein Passwort nicht wusste, kann ich auch nicht erklären.

            Das kann ich dir sagen: ich setze, wenn jemand anonym ein Posting erstellt, einen Cookie, in dem der Name drin steht. ;)

            LG,
            CK

  2. Frage 1: Wie kann ich die Bot-Zugriffe reduzieren? Da gab es doch den head-Eintrag "visit-after", den finde ich aber nicht (mehr). Wahrscheinlich heisst er anders. Richten sich Bots danach?

    Das sind nur Empfehlungen, wie immer. Davon unabhängig erscheint mir statt des Griffs in den Wust steinzeitlicher meta-Angaben eine sitemaps.xml sinniger, siehe http://www.sitemaps.org/, dort insbesondere das Attribut changefreq.

    Vielleicht hilft auch die Ausgabe der HTTP-Angabe Last-Modified bzw. der Antwort Not modified. Zumindest wäre es ebenfalls eine Möglichkeit für Bots, die Änderungshäufigkeit zu erkennen und die Besuchshäufigkeit entsprechend zu regulieren.

    Frage 2: Wie kann ich menschliche Aufrufe erkennen?

    Am ehesten, indem du die Zählung über eine Grafik oder Javascript durchführst und das Zählteil in der robots.txt als Verbot aufnimmst.

    Frage 3: Ein netter Service wäre, menschliche Aufrufe in etwa so zu melden: "Aufruf kommt aus der Gegend von [Stadtname]" - ich denke, das ist keine Verletzung der Anonymität. Doch woher bekommt mein PHP Programm diese Info?

    Das Stichwort ist Geolocation. Über die Treffergenauigkeit solcher Datenbanken wurde hier schon einiges geschrieben.

  3. Frage 1: Wie kann ich die Bot-Zugriffe reduzieren? Da gab es doch den head-Eintrag "visit-after", den finde ich aber nicht (mehr). Wahrscheinlich heisst er anders. Richten sich Bots danach?

    In dem der Webserver beim Aufruf vom nicht gewünschten Bots und Crawlern die Verbindung sofort zurück setzt.

    Frage 2: Wie kann ich menschliche Aufrufe erkennen?

    Gar nicht. Ich schreibe gerade Webseitenbesuchssoftware die sich wie ein Mensch verhält beim surfen. Ich automatisiere damit etwas, was ich sonst händisch machen würde und jetzt läut es automatisch nebenbei. Man kann aber Kriterien festlegen, was als "Menschlicherbesucher" in der Statistik gelten soll.

    Frage 3: Ein netter Service wäre, menschliche Aufrufe in etwa so zu melden: "Aufruf kommt aus der Gegend von [Stadtname]" - ich denke, das ist keine Verletzung der Anonymität. Doch woher bekommt mein PHP Programm diese Info?

    Aus den Logdateien vom Webserver mod geoip2 beim Indianer (ich benutze keinen Apachen) glaube der nutzt die Opensource Daten und APIs von Maxmind es gibt aber auch noch andere.

    Natürlich gibt es eine Fehlerqoute, aber ein gut justiertes System sollte schon auf 90 bis 95 Prozent Treffgenauigkeit kommen.

    Probier es aus Von den 6 Anbieter war einer mit ca. 400 km Entfernung daneben. Die anderen hatten meine Stadt und ein Treffer hatte den verkehrten Stadtteil, aber bis auf etwa 10 Kilometer ran.

  4. Tach!

    Frage 3: Ein netter Service wäre, menschliche Aufrufe in etwa so zu melden: "Aufruf kommt aus der Gegend von [Stadtname]" - ich denke, das ist keine Verletzung der Anonymität. Doch woher bekommt mein PHP Programm diese Info?

    Es gibt zwei Möglichkeiten. Die eine ist, aus der IP-Adresse den Standort zu erraten. Wie schon festgestellt ist das ziemlich ungenau, aber immer verfügbar. Die andere ist die Geolocation API in modernen Browsern. Die liefert - vor allem in mobilen Geräten wegen GPS - deutlich genauere Angaben in Form von Koordinaten. Wie du daraus den nächstgelegenen Ort ermittelst, ist auch noch eine zu lösende Aufgabe. Allerdings haben nicht alle Geräte GPS an Bord und außerdem wird auch noch der Anwender gefragt, ob er die Daten rausrücken möchte.

    dedlfix.

    1. Wie du daraus den nächstgelegenen Ort ermittelst, ist auch noch eine zu lösende Aufgabe.

      Da spare ich mir sogar einen Schritt, wenn ich die Koordinaten geliefert bekomme.

      Normal muss ich mit einer gesuchten PLZ oder Ortsnamen in die Datenbank und die Koordinaten holen. Dann werden die Nachbarorte mit Events ermittelt ;-)