Analyse og design af web tracking

I forbindelse med web tracking har vi på nuværende tidspunkt slået fast, at vi bør benytte cookies til at lagre en unik identifikation af den browser, der benyttes til at se web-siden med, og ud fra denne identifikation tracke klienten, i stedet for TCP/IP-adressen. Se afsnittet Anvendelse.

Detaljeringsgrad

Vi skal derefter have fastslået, hvor detaljeret vi skal tracke besøgene. Vi vælger at tracke brugerne ned på web-side niveau. Vi kan dermed se, hvilke sider en bestemt bruger har været inde på, og ikke blot at en bestemt bruger har været og besøge vores web-site. Samtidig er vi interesseret i at få filtreret alle reload forsøg væk samt frem og tilbage spring mellem hyperlinks.

Vi beslutter derfor at definere et besøg som værende et HTTP Request foretaget tidligst en time senere end sidste HTTP Request. Dette valg træffer vi, fordi det er simpelt at implementere, da man blot skal checke en tidsvariabel mod det nuværende tidspunkt for at se om HTTP Requestet tæller.

Information om brugeren

Vi skal nu definere, hvilken information der skal lagres om brugerens besøg på hver web-side. På baggrund af ovenstående beslutning skal der lagres følgende information om brugeren:

Identifikation af klienten (browseren)
Den unikke identifikationen af klienten kan man frembringe ved at tildele et fortløbende nummer, men vi vælger dog at identificere brugeren ved hjælp af et tidsstempel, nemlig det tidspunkt hvor brugeren først besøger vores web-sider. Tidsstemplet er en sammenstilling af år, måned, dag, time, minut, sekund, og får derfor følgende format i UNIX terminologi: [CCYYMMDDHHMMSS].
Den besøgte web-sides navn eller nummer
Identifikation af siden kan frembringes ud fra et navn eller nummer, hvor vi vælger at benytte navn.
Samlet antal besøg på web-siden
Antal besøg på web-siden er naturligvis et heltal.
Tidsstempel for sidste besøg på siden
Tidsstemplet for sidste besøg på siden bør, ud fra vores definition om et besøg, kun indeholde tidsinformation til og med time. Dvs. at tidsstemplet i dette tilfælde vil være en sammenstilling af år, måned, dag, time, og får derfor ølgende format i UNIX terminologi: [CCYYMMDDHH].

Lagringen af information

Lagringen af disse informationer om brugerens besøg på en web-side kunne i princippet foretages ved hjælp af cookies. Der er dog både fordele og ulemper ved denne lagringsform. En fordel ved lagring i cookies er, at al information kan gemmes ved hjælp af JavaScript, som benytter klientens processor kraft og ikke serverens. Samtidig kan tracking også foregå offline. Ulempen er, at man som administrator på serveren ikke umiddelbart er i stand til at få fat i tracking-informationen om brugerens besøg, før brugeren laver et HTTP Request, hvor informationen bliver overført i Cookie HTTP Request Headeren. Man kan så vælge at overføre tracking-informationen, næste gang brugeren besøger hovedsiden, som så skulle opbygges med et CGI-program. Pointen er, at hvis administratoren skal have fat i informationen, kræver dette et CGI-program, der kan hente informationen i Cookie HTTP Request Headeren, og lagre denne information på serveren.

Følgende information er derfor kun nødvendig at lagre hos klienten i en cookie:

  • Identifikation af klienten (browseren)
  • Tidsstempel for sidste besøg på siden
  • Den besøgte sides navn eller nummer
  • Følgende information vil blive lagret på serveren:
  • Identifikation af klienten (browseren)
  • Den besøgte web-sides navn eller nummer
  • Samlet antal besøg på web-siden
  • Tidsstempel for sidste besøg på siden

Den besøgte sides navn kan man med fordel gemme i en temporær cookie, som udløber når browseren lukkes, og som sættes ved hvert HTTP Request. Denne cookie gemmes ved brug af JavaScript-funktionen SetCookie fra vores include-fil cookie.js. Identifikation af klienten samt tidsstempel kan man med fordel gemme i en compressed cookie, som sættes af CGI-scriptet.

I log-filen på serveren lagrer vi informationen adskilt med kolon ( : ), da man skal kunne identificere de enkelte informationer i forbindelse med CGI-Scriptet. Selve log-filen får følgende format, af programmeringsmæssige årsager:

<Klient-ID> : <Web-side> : <Antal> : <Sidste besøg på siden>

Initialisering af CGI-scriptet

CGI-scriptet, som skal logge brugerens færden på web-siderne, skal kaldes ved hvert HTTP Request. Dette burde kunne sættes op i web-serveren således, at dette tracking CGI-script altid bliver kaldt ved et HTTP Request. Dette har vi imidlertid ikke haft tid at udforske, hvorfor vi bliver nødt til at snyde lidt ved at benytte HTML META tag'et mellem <HEAD> tag'et på hver eneste af vores web-sider:

<META HTTP-EQUIV=REFRESH CONTENT="0; URL=tracking/cgi-bin/track.cgi">

På denne måde kan man uden om web-serveren selv kalde CGI-scriptet ved hver eneste HTTP Request.

Pseudo-kode for CGI-scriptet

På baggrund af ovenstående analyse kan vi nu opstille psudokoden for CGI-scriptet.

Den ser således ud:

<Start på CGI-script>

Åben log-filen
Tæl antal linier i log-filen
Hent information om ønskede web-side
Hvis tracking cookie findes
	Hent klient-ID og sidste besøgstidspunkt i cookien
	For hver linie i log-filen
		Hent klient-ID, side, antal og sidste besøgstidspunkt fra log-filen
		Hent nuværende tidspunkt fra operativsystemet
		Hvis nuværende tidspunkt er forskellig fra sidste besøgstidspunkt
			Tæl antal besøg på siden en op
			Udskriv klient-ID, side, antal og nuværende tidspunkt i log-filen
		Ellers udskriv linien uden ændringer i log-filen
Ellers gør følgende
	Definer klient-ID som et unikt tidsstempel fra operativsystemet
	Definer antal som ét besøg
	Definer sidste besøgstidspunkt som et tidsstempel fra operativsystemet
	Placer en compressed cookie hos brugerens browser
	Udskriv klient-ID, side, antal, sidste besøgstidspunkt i log-filen
Luk log-filen

<Slut på CGI-script>

« Praksis: Analyse af Online Biksen