[ALG] Maatstaven voor bezoekersstatistieken

Pagina: 1
Acties:

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Zoals gezegd ben ik bezig met een statistiekentooltje. Het programmeren zelf zal nu wel lukken, maar ik heb een aantal methodologische vragen.

Bijvoorbeeld: wat is een unieke bezoeker? Dit wordt meestal gemeten aan IP adres, maar er zijn proxies (o.a. AOL) die de gebruiker bij elke klik een ander IP geven. Het zou dus logischer zijn om voor elke bezoeker een sessie aan te maken en het aantal unieke sessies te tellen om het aantal unieke bezoekers te meten.

Aan de andere kant - als iemand op jouw site zit en hij loopt weg van zijn browser, verloopt de sessie na bv. 20 minuten idle time. Als hij dan weer achter z'n bureau plaatsneemt en verder surft, wordt er een nieuwe sessie aangemaakt en dus een tel je een nieuwe unieke bezoeker! Terwijl als je op IP had gemeten, en je er vanuit gaat dat bovengenoemde proxies maar sporadisch gebruikt worden, had je hem herkend als dezelfde bezoeker.

Weer een andere oplossing is het plaatsen van een cookie; dan kun je in ieder geval met redelijke zekerheid de machine identificeren. Je kunt dan het aantal cookies tellen als je de echt unieke bezoekers wil weten. Maar ook hier geldt weer een nadeel: steeds meer gebruikers accepteren geen cookies. Dus dat maakt je statistieken onbetrouwbaar.

Om terug te komen op sessies: als een gebruiker geen cookies accepteert, zul je deze moeten doorgeven via de querystring. Waar veel mensen wellicht niet weten dat je de sessie in het sessie-cookie van PHP kunt aanpassen, zullen er wel mensen zijn die dan die sessie in de URL gaan veranderen - voor de gein of wat dan ook. En omdat HTTP stateless is, herkent mijn volgende pagina de veranderde sessie niet meer (want: matched niet in database). De vraag is wat je met zo'n geval moet doen. Compleet uit je statistieken laten of niet?

Eenzelfde problematiek voorzie ik met hits: wat is een hit? CTRL-N? Refresh? Zijn er manieren om deze acties uit te lezen met javascript en dan geen reactie naar de stats-server te sturen?

Graag hoor ik jullie ervaringen. Hoe meet jij unieke bezoekers? Maak je ook gebruik van sessies, IP's en cookies? Kent iemand een goed artikel over deze problematiek?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


Verwijderd

Stats zijn nooit 100% waterdicht...

F5 of Ctrl+N kan je afvangen door het doelbestand en de referer te controleren, maar ook dat is weer te omzeilen; je kan je referer zelf instellen met programma's als Proxomitron.

Je moet je afvragen of iemand zijn referer gaat faken om de stats op te lichten...

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 25-05 20:56
Reveller schreef op 19 mei 2004 @ 17:26:
Bijvoorbeeld: wat is een unieke bezoeker? Dit wordt meestal gemeten aan IP adres, maar er zijn proxies (o.a. AOL) die de gebruiker bij elke klik een ander IP geven. Het zou dus logischer zijn om voor elke bezoeker een sessie aan te maken en het aantal unieke sessies te tellen om het aantal unieke bezoekers te meten.
Daar ben ik het mee eens. Ook omdat veel bezoekers een IP adres delen, doordat ze via een proxy surfen (op school, bijvoorbeeld). In sommige gevallen kun je het 'echte', lokale IP adres dan nog wel achterhalen, maar niet altijd.
Aan de andere kant - als iemand op jouw site zit en hij loopt weg van zijn browser, verloopt de sessie na bv. 20 minuten idle time. Als hij dan weer achter z'n bureau plaatsneemt en verder surft, wordt er een nieuwe sessie aangemaakt en dus een tel je een nieuwe unieke bezoeker! Terwijl als je op IP had gemeten, en je er vanuit gaat dat bovengenoemde proxies maar sporadisch gebruikt worden, had je hem herkend als dezelfde bezoeker.
Tja, hoe tel je een 'bezoeker'? Is dt een unieke persoon die de site ooit bezocht heeft, of is het een rol die een persoon elke keer weer opnieuw kan aannemen? Anders gesteld: als ik elke ochtend naar nu.nl surf voor het laatste nieuws, mag ik dan maar 1 keer (op de eerste dag ooit) geteld worden als bezoeker, of moet ik elke dag een keer geteld worden (1 keer per dag, hoewel ik op een ochtend natuurlijk meerdere pagina's bezoek).

Hoewel beide manieren van tellen interessante informatie op kunnen leveren, lijkt in de praktijk de tweede uitleg me nuttiger. Je meet daarmee immers de populariteit van de website (het aantal mensen dat je website in een bepaalde periode bezocht heeft) en niet zozeer de groei alleen (het aantal nieuwe mensen dat de website bezocht heeft).

Als je op de tweede manier telt, is het ook wel logisch dat als een persoon na een half uur weer op je site komt, het een nieuwe sessie betreft en die persoon dus nogmaals geteld wordt. Of die periode een half uur of een halve dag moet zijn, daar valt natuurlijk nog over te discussieren.
Weer een andere oplossing is het plaatsen van een cookie; dan kun je in ieder geval met redelijke zekerheid de machine identificeren. Je kunt dan het aantal cookies tellen als je de echt unieke bezoekers wil weten. Maar ook hier geldt weer een nadeel: steeds meer gebruikers accepteren geen cookies. Dus dat maakt je statistieken onbetrouwbaar.
Ik denk dat meer dan 99% van de internetgebruikers toch wel met cookies surft. Als je mensen zonder cookies weglaat uit de statistieken zullen die hoogstwaarschijnlijk nog steeds wel representatief zijn (tenzij die 1% zo sterk afwijkt van het gemiddelde dat het niet verantwoord is ze weg te laten, wat me sterk lijkt).
Om terug te komen op sessies: als een gebruiker geen cookies accepteert, zul je deze moeten doorgeven via de querystring. Waar veel mensen wellicht niet weten dat je de sessie in het sessie-cookie van PHP kunt aanpassen, zullen er wel mensen zijn die dan die sessie in de URL gaan veranderen - voor de gein of wat dan ook. En omdat HTTP stateless is, herkent mijn volgende pagina de veranderde sessie niet meer (want: matched niet in database). De vraag is wat je met zo'n geval moet doen. Compleet uit je statistieken laten of niet?
Hoeveel mensen zullen dat nou helemaal zijn? Zoals ik al constateerde zal hooguit 1% van de bezoekers die query string te zien krijgen en slechts een klein percentage daarvan zal er mee gaan prutsen. Niet relevant voor je resultaten, lijkt me. (Daar komt nog bij dat die 1% gebruikers zonder cookies meestal van het type die-hard Linux gebruiker is, die ten eerste ook wel in staat zijn om cookies aan te passen als ze die zouden gebruiken en die ten tweede wel wat beters te doen hebben dan jouw gegevens verprutsen).

Ik neem trouwens aan dat je je wel besefte dat PHP/ASP sessions ook met cookies en query strings geimplementeerd worden. Er is dus niet echt een reden om zelf met cookies en query strings te gaan prutsen als je al over PHP/ASP beschikt (tenzij je de statistieken buiten PHP/ASP om wilt implementeren, bijvoorbeeld met een webserver module).
Eenzelfde problematiek voorzie ik met hits: wat is een hit? CTRL-N? Refresh? Zijn er manieren om deze acties uit te lezen met javascript en dan geen reactie naar de stats-server te sturen?
Ik zou zeggen: elke request op de webserver is een hit. Wordt meestal zo ook geinterpreteerd door anderen, denk ik. Je kunt de hits dus gewoon uit je webserver access log trekken; elke regel is een hit (eventueel beperk je je dat succesvolle requests).