Besucherzähler - wie genau sollte er sein?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
agent
besucher
bot
code
datum
endeffekt
erfolg
frage
geld
hohe besucherzahlen
leute
mache
problem
string
update
url
verhindern
zahl
zeile
-
Hallo zusammen :)
Ich habe bei meiner Bandhomepage per PHP einen einfachen Visitor Counter eingebaut. Der sieht aktuell so aus:
session_set_cookie_params(24*60*60); session_start(); $isbot = !isset($_SERVER['HTTP_USER_AGENT']) || preg_match('/(bot|crawl|slurp|spider|validator\.w3\.org)/i', $_SERVER['HTTP_USER_AGENT']); $islocal = $_SERVER['REMOTE_ADDR'] === '127.0.0.1' || substr($_SERVER['REMOTE_ADDR'], 0, 7) === '192.168'; if (!isset($_SESSION['visited']) && !$isbot && !$islocal) { $_SESSION['visited'] = true; dbexec("UPDATE visitors SET count=count+1 WHERE day=0"); dbexec("INSERT INTO visitors VALUES ('".date("Y-m-d")."',1) ON DUPLICATE KEY UPDATE count=count+1"); }
Zeile 1 filtert soweit erfolgreich Bots/Crawlers wie Google etc und Zeile 2 sorgt dafür, dass wenn ich lokal an der Website arbeite nicht haufenweise Aufrufe generiert werden.
Allerdings zeigt die Website in letzter Zeit innerhalb kurzer Zeit immer wieder sehr viele Besucher an (heute morgen haben angeblich bereits 89 Leute die Seite besucht) und ich bin mir nicht sicher, ob das wirklich alles "echte" Klicks sind.
Jetzt hab ich mir mal die User Agent Strings von den Besuchern angeschaut, aber da ist kein offensichtlicher Bot, der mir in Zeile 1 durch die Lappen geht dabei. Allerdings ist der hier sehr oft hintereinander dabei:
Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
Klar, nix besonderes, kann ich auch nicht rausfiltern, dann würde ich garantiert auch Klicks von echten Menschen ignorieren.
Ein Problem an dem Code ist natürlich, dass ohne cookies jedes Neuladen der Seite als neuer Klick gezählt wird.
Die Frage ist jetzt allerdings, wie kann ich das verhindern? Sollte ich es überhaupt verhindern (im Endeffekt kommen hohe Besucherzahlen ja bestimmt ganz gut an)?
Sollte ich IP Hashes loggen und damit abgleichen?
Oder wenn keine Cookies unterstützt/akzeptiert werden einfach gar nicht als Klick werten? Dann stellt sich natürlich die Frage, wie mache ich das, denn das Feststellen ob cookies akzeptiert werden scheint über PHP nur über einen zusätzlichen Request oder über JS realisierbar zu sein. JS hat das Problem, dass ich a) das ja wieder zurück an den Server melden muss und ich b) einen Besucherzähler für eine reine Serveraufgabe halte.
Insgesamt stellt sich damit vor allem die Frage: wie akkurat sollten solche Besucherzähler sein? Sollte man sich überhaupt die Mühe machen möglichst viele nicht menschliche Besucher rauszufiltern? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
davidlw schrieb:
Ein Problem an dem Code ist natürlich, dass ohne cookies jedes Neuladen der Seite als neuer Klick gezählt wird.
Die Frage ist jetzt allerdings, wie kann ich das verhindern? Sollte ich es überhaupt verhindern (im Endeffekt kommen hohe Besucherzahlen ja bestimmt ganz gut an)?
Sollte ich IP Hashes loggen und damit abgleichen?
Genau. IP Hashes loggen. So mache ich es auch und es ist garantiert zuverlässiger als Cookies.
Es gibt mittlerweile auch viele Besucher, die Cookies deaktivierten und nicht alle Bots senden einen HTTP_USER_AGENT. Ich hatte selber mal einen Bot programmiert, der keinen sendete.
Der Counter sollte vor allem ein Richtwert für dich selbst sein. Werbenetzwerke haben ihre eigenen Counter. Das heißt, es bringt dir nicht mehr Geld oder Erfolg, wenn dein Counter viele Besucher zählt, da die Leute, die dir Geld geben, ihre eigenen Systeme haben und nicht auf deines Vertrauen werden. -
Hmm, OK dann werd ich das wohl über IP Hashes implementieren müssen.
Wenn kein User Agent String gesendet wird, wird man sowieso von Lima ausgesperrt...
Werbenetzwerke interessieren mich eh nicht, die können machen was sie wollen, ich werde davon keins einbinden. Auch geht es mir nicht um "Geld oder Erfolg" ich hätte lediglich gerne ein paar Meinungen gehört, wie weit so ein Counter gehen sollte um einigermaßen Präzise Daten zu erhalten und welche Genauigkeit ihr als Besucher von so einem Counter erwarten würdet. Hatte ich vielleicht nicht eindeutig genug formuliert, sorry.
Wenn jemand eine präzisere Variante hätte, die keine Daten speichert und ohne zusätzliche Requests auskommt, wäre mir das natürlich auch recht. -
Die Frage sollte wohl eher lauten: "Wie genau KANN er sein?"
- User-Agent ist manipulierbar oder auch nicht vorhanden.
- IP-Adressen können sich ändern. (Auch wenn die Zeiten von AOL, die den Nutzern bei jedem Seitenaufruf ne andere IP untergeschoben haben, vorbei sind).
Warum übrigens Bots ausschließen? Ich finde es immer sehr interessant, welche Bots vorbeikommen und wie oft sie das tun.
Wiederkehrende Besucher ohne Datenspeicherung zuverlässig zu erkennen ist eh nicht möglich.
davidlw schrieb:
Wenn kein User Agent String gesendet wird, wird man sowieso von Lima ausgesperrt...
Leider! Den Grund kann ich zwar nachvollziehen, aber für einen paranoiden User, der so wenig wie möglich über sich verraten will, ist es halt nicht vorteilhaft.
-
Die Frage "wie genau kann er sein" stelle ich mir nicht, denn da gibt es noch viele Möglichkeiten die mir dann wieder viel zu weit gehen. Z.B. Canvas Fingerprinting offline storage etc.
Für jemanden, der weiß was Bots sind, sind die Zahlen sicherlich interessant, aber der "durchschnittliche Besucher" einer Bandhomepage fragt sich eh nur was das sein soll, wenn er die Zahl Oberhaupt wahrnimmt.
Klar, UA kann sich ändern aber so lange nicht jeder mit dem "bot" im UA rumläuft, soll mir das recht sein.
Auch IP-Adressen sind natürlich nicht eindeutig, aber wahrscheinlich präziser als die aktuelle Version.
Wenn ich deinen Post mal so interpretieren darf - du würdest es wahrscheinlich einfach so lassen, da es eh nur eine Annäherung ist? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage