creativebytes.net / cb_WET: Kurzinfo | FAQ | Download

cb_WET - Web-Tracking - Beschreibung

Dieses Dokument beschreibt technische Details zum System cb_WET - Web-Tracking und der dazu nötigen Software cb_WET-Server. Einleitende Informationen, Einsatzmöglichkeiten, Systemvoraussetzungen und die Vorteile von cb_WET sind in der Kurzinfo zusammengefasst.

Inhalt


Einleitung

cb_WET ist ein System, das den Zugriff auf Webseiten verfolgt, die dabei anfallenden Daten in Logfiles schreibt und (auf Wunsch) auch "live" anzeigt. Die Logfiles entsprechen dem vom W3C standardisierten "Combined Logfile Format (DLF)", d.h. sie können mit allen gängigen Tools zu beliebigen Reports weiterverarbeitet werden.

cb_WET fasst die Stärken der Methoden "Webserver-Logs" (umfassendes Datenmaterial in standardisiertem Format) und "Zugriffszähler von Drittanbietern" (relativ einfaches Handling der Integration der Aufrufe in Webseiten) zusammen und bietet darüberhinaus weitere Vorteile.

Alle Aspekte der Datenerfassung selbst, sowie alle erfassten Daten bleiben dabei unter voller Kontrolle des Anwenders von cb_WET.

Funktionsweise

Auf einem Rechner (Windows NT, 2000, XP) im Netz (je nach Einsatzgebiet Internet oder Intranet) wird die Software für den cb_WET-Server installiert. Dieser Rechner kann z.B. ein bereits vorhandener Server sein.

In die zu überwachenden Webseiten wird ein Hyperlink zu einer Imagedatei am cb_WET-Server eingefügt. Dieser Hyperlink kann entweder direkt in den HTML-Code eingefügt, oder dynamisch generiert werden (entweder per CGI-Programm am Server oder per Java-Script am Client).

Wenn der Webbrowser die Imagedatei anfordert, werden im URL bzw. im HTTP-Header zusätzliche Daten an cb_WET übertragen.

Der cb_WET-Server verhält sich aus Sicht des Clients wie ein "normaler" Webserver, d.h. er liefert eine Imagedatei an den Browser zurück. Der grundlegende Unterschied besteht aber darin, dass unabhängig vom angeforderten URL immer die gleiche Imagedatei übertragen wird. Die vom Client übertragenen Daten werden vom cb_WET-Server analysiert, ggf. ergänzt, in Logfiles protokolliert und auf der Benutzeroberfläche angezeigt.

Einschränkungen

Alle Verfahren, die Zugriffe auf Webseiten mit Hyperlinks auf Imagedateien (wie cb_WET) messen, funktionieren für jene Clients nicht, die keine Imagedateien laden. Dieser Fall kann eintreten, wenn es sich beim Client entweder um einen rein textbasierten Browser handelt (heute mittlerweilen relativ selten), oder das Laden von Imagedateien bewusst deaktiviert wurde. Dieses Problem kann auch von cb_WET nicht gelöst werden.

Auch alle anderen Verfahren (z.B. Webserver-Logs) liefern ungenaue Ergebnisse, wenn ein HTTP-Request eines Clients von Cachemechanismen (z.B. von Proxies oder browserinternen Caches) abgefangen wird. Dieses Problem wird bei cb_WET durch bestimmte Methoden (z.B. Parameter im HTTP-Response) gelöst (siehe unten).

Erfasste Daten

Bei einem HTTP-Request stehen dem Server üblicherweise folgende Daten vom Client zur Verfügung:

  • IP-Adresse des Clients (daraus kann der Hostname ermittelt werden) bzw. eines zwischengeschalteten Proxyservers
  • URL (Pfad und Dateiname) des angeforderten Dokumentes, ev. zusätzliche Parameter im URL
  • HTTP-Header Parameter (wie z.B. User-Agent, Referrer etc.)
  • Zeitstempel des Requests

Bei Verwendung von cb_WET können in den URL bzw. in die URL-Parameter beliebige weitere Informationen "verpackt" werden, die der cb_WET-Server ebenfalls protokolliert und für spätere Auswertungen zur Verfügung stellt. Dieses Konzept wird "virtuelle URLs" genannt (s.u.).

Imagedatei

Als Imagedatei kann ein prinzipiell eine beliebige Grafik (z.B. ein Logo) verwendet werden. Bei Trackingsystemen wird aber üblicherweise ein "unsichtbares Bild" (1 x 1 Pixel gross und "durchsichtig") eingesetzt.

Virtuelle URLs

Der cb_WET-Server arbeitet unabhängig vom angeforderten URL, d.h. er ignoriert die Angaben über den Pfad, den Dateinamen und ev. URL-Parameter im Request und liefert immer die gleiche Imagedatei an den Client zurück. Der angeforderte URL wird aber normal protokolliert.

Das bedeutet, dass der Client "virtuelle URLs" (Files in Verzeichnissen die nicht existieren) anfordern kann und trotzdem eine sinnvolle und gültige Antwort erhält (ein normaler Webserver würde mit einer Fehlermeldung reagieren).

Da der Anwender von cb_WET den in der zu überwachenden HTML-Seite enthaltenen Hyperlink zum cb_WET-Server beliebig festlegen kann, sind die Pfade, Dateinamen und Parameter der URLs als Träger für beliebige Zusatzinformationen verwendbar.

Das Konzept der virtuellen URLs kann für flexible Arten der Zugriffserfassung eingesetzt werden. Ein naheliegender Einsatz ist der Aufbau von eigenen logischen Strukturen für Logging und Auswertungen, die unabhängig von den Verzeichnis- und Filestrukturen auf den Webservern sind. Dazu folgende Beispiele:

  • Logisch zusammengehörende Webseiten (z.B. eines Produktes, Projektes, einer Abteilung, ...) die aber in verschiedenen Verzeichnissen liegen, können auf ein gemeinsames (virtuelles) Verzeichnis abgebildet werden.
  • Inhaltlich idente Webseiten (z.B. auf Mirror-Servern) können auf das gleiche File abgebildet werden.
  • Zugriffe auf mehrere Websites, die sich auf unterschiedlichen Servern befinden, können am cb_WET-Server zentral gesammelt werden.
  • Bei HTML-Mailings können die Zugriffe auf eigene Verzeichnisse abgebildet werden (z.B. entweder pro Mailing oder pro Empfänger).

"Geservte" Files

Damit sich cb_WET wie ein normaler Webserver verhalten kann (z.B. bei Abfrage durch Suchmaschinen), können die Files "robots.txt" und "index.htm" angelegt werden. Die folgende Tabelle zeigt, welche Files unter welchen Bedingungen an den Client retourniert werden:

angefordertes Dokument geliefertes File Bemerkungen
Jedes File mit der Extension ".gif" in jedem Pfad 1x1.gif wenn vorhanden, sonst http Fehler 404 (not found)
"robots.txt" robots.txt wenn vorhanden, sonst http Fehler 404 (not found)
keines ("/") oder "index.htm" index.htm wenn vorhanden, sonst http Fehler 404 (not found)
alle anderen Dokumente - http Fehler 404 (not found)

cb_WET bearbeitet nur http GET und HEAD Requests. POST, PUT, OPTIONS und TRACE Requests werden nicht beantwortet.

Integration von cb_WET-Code in HTML-Files

Um einen Hyperlink von einer zu messenden Webseite zu cb_WET zu definieren, muss HTML-Code in die Seite eingefügt werden. Bei statischen Seiten erfolgt dies direkt in der Webseite, bei dynamisch generierten Seiten entweder im Template oder im entsprechenden Script.

Unabhängig davon gibt es zwei Typen von Aufrufen: den "statischen" und den "dynamischen" Link.

Statischer Link

Beim statischen Link wird in die HTML-Seite (z.B. kurz vor dem </BODY>-Tag) etwa folgender Code eingefügt:

<img src="http://test.baumann.at/tracking/logo.php/wbat_logo.gif" alt="cblogo" width="1" height="1">

Beim Request des Browsers hat der cb_WET-Server beispielsweise folgende Daten zur Verfügung:

Timestamp: 2002/03/10 19:27:32:885
From: eftp2b.ift.tuwien.ac.at [128.130.106.81]
Command: GET
Document: /wbat_logo.gif
Host: test.baumann.at:88
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.8) Gecko/20020204
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1
Accept-Language: en-us
Accept-Encoding: gzip, deflate, compress;q=0.9
Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.baumann.at/downloads/index.html

Aus diesen Daten ist u.a. zu erkennen, wann, von welchem Rechner, mit welchem Browser ... welche Webseite aufgerufen wurde.

Dynamischer Link

Bei dieser Variante wird Java-Script eingesetzt um den Link auf den cb_WET-Server erst im Browser zu generieren. Da Java-Script Zugriff auf weitere Informationen (des Webbrowsers) hat, kann der Link entsprechend erweitert werden, d.h. interessante Zusatzinformationen werden in den Request aufgenommen. Um auch den Fall abzudecken, dass Java-Script am Client nicht vorhanden (oder deaktiviert) ist, wird zusätzlich ein statischer Link eingefügt.

Beispiel:

<SCRIPT language="JavaScript">
<!--
var Dat="";
Dat += "doctitle=" + escape(document.title);
Dat += "&docurl=" + window.document.URL;
Dat += "&referrer=" + window.document.referrer;
document.write('<img src="http://test.baumann.at/tracking/logo.php/cbnet_DAT.gif?' + Dat + '" alt="logo" width="1" height="1">');
//-->
</SCRIPT>
<NOSCRIPT>
<img src="http://test.baumann.at/tracking/logo.php/cbnet_cb_pmm_description.gif" alt="cbnet_logo" width="1" height="1">
</NOSCRIPT>
</body>

Beim Request des Browsers hat der cb_WET-Server z.B. folgende Daten zur Verfügung:

2002/03/10 19:31:17:337
From: eftp2b.ift.tuwien.ac.at [128.130.106.81]
Command: GET
Document: /cbnet_DAT.gif
doctitle=creativebytes.net - cb_PMM - Description
docurl=http://www.creativebytes.net/cb_PMM/
referrer=http://www.google.com/search?hl=en
q=+"port mapping" +"connection monitoring"
Host: test.baumann.at:88
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.8) Gecko/20020204
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1
Accept-Language: en-us
Accept-Encoding: gzip, deflate, compress;q=0.9
Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.creativebytes.net/cb_PMM/

Die kursiv markierten Daten entsprechen den Zusatzinformationen, die durch Java-Script generiert wurden, die restlichen beinhalten dieselben Informationen wie im Beipspiel zu statischen Links.

Die zusätzlichen Daten sind in diesem Beispiel: Titel des Dokumentes, Original-URL des Dokumentes, "letzter" Referrer (d.h. von welcher Seite zu der zu messenden Seite gelinkt wurde - in diesem Beispiel wurde die Seite von der Ergebnisseite einer Suchmaschine aus aufgerufen).

Der Aufruf des cb_WET-Servers kann bei Bedarf um alle Informationen ergänzt werden, die Java-Script zur Verfügung stehen (z.B. weitere Details zum Typ und zur Version des Browsers, Bildschirmauflösung, Uhrzeit am Client-Rechner ...).

Bemerkung: Informationen die "zu persönlich" sind, wie z.B. Einträge der Historyliste, die Email-adresse des Benutzers etc., stehen in den aktuellen Implementierungen der Browser für Java-Script NICHT (mehr) zur Verfügung.

cb_WET-Server

Installation

Um den cb_WET-Server zu installieren, werden alle Dateien aus dem Installationsfile (.zip) in ein beliebiges Verzeichnis kopiert (z.B.: "C:\Programme\cb_WET"). Bei Bedarf kann ein Shortcut auf dem Desktop angelegt werden.

Bemerkungen: Die Imagedatei muss den Namen "1x1.gif" haben und im Programmverzeichnis liegen. Wenn die Files "index.htm" und "robots.txt" verwendet werden sollen, müssen diese ebenfalls in diesem Verzeichnis liegen.

Start des Servers:

  • Starten des Programmes durch Aufführen von "cb_WET.exe"
  • Festlegen des Portnummer (Defaultwert ist 88)
  • Aktivieren des integrierten HTTP-Servers mit der Schaltfläche "Start"

Das Userinterface

Das Userinterface des Programmes gliedert sich in die beiden Bereiche "Settings" (Konfiguration) und das "Logging".

Die "Settings"-Seite

Auf der "Settings"-Seite stehen folgende Funktionen bzw. Optionen zur Verfügung:

Port: Der Listening-Port des integrierten HTTP-Servers. Ein Port kann immer nur einem Programm zugewiesen sein. Wenn auf dem Rechner bereits ein Webserver läuft, belegt dieser i.d.R. den Port 80. cb_WET MUSS daher mit einem anderen Port konfiguriert werden. Der Default-Port ist 88. Der Wert im Eingabefeld kann nur geändert werde, wenn der Server nicht aktiv ist.

Start/Stop: Mit dieser Funktion wird der HTTP-Server gestartet/gestoppt. Meldungen über den Zustand und ev. Fehler werden im Textfeld "Messages" ausgegeben.

AutoStart: Wenn diese Option gesetzt ist, wird der Server beim nächsten Programmstart automatisch aktiviert.

Minimize->TNA: Wenn diese Option aktiviert ist, bringt ein Minimieren des Programmfensters dieses in die "Taskbar Notification Area" (den "Icon Tray"). In Kombination mit AutoStart wird der cb_WET-Server beim nächsten Start automatisch als TNA-Icon gestartet.

Set Log Dir: Mit dieser Option kann das Verzeichnis für die Logfiles konfiguriert werden. Wenn kein Verzeichnis ausgewählt ist, oder das ausgewählte Verzeichnis ungültig ist, werden die Logfiles in das Programmverzeichnis geschrieben.

Resolve Hostnames: Dieser Parameter legt fest, ob cb_WET versucht, die IP-Adressse eines Clients in den Rechnernamen umzuwandeln (erfordert Zugriff auf DNS, kann gewisse Verzögerung pro Request bedeuten).

Evaluate If-Modified-Since: Diese Option legt fest, ob sich cb_WET HTTP-konform verhält (und einen "If-Modified-Since" Header des Clients auswertet und ggf. lediglich "304 not modified" retourniert), oder nicht (d.h. immer das Image retourniert).

Durch die Einstellungen für die Response-Header Parameter

  • Cache-Control: max-age, private, no-cache
  • Pragma: no-cache
  • Last-Modified und
  • Expires

werden das Verhalten und der generierte HTTP-Response des cb_WET-Servers beeinflusst. Durch optimale Wahl der Parameter wird erreicht, dass möglichst jeder Request eines Clients bis zum cb_WET-Server weitergeleitet (und erfasst) und nicht von (caching) Proxies oder browserinternen Cachemechanismen abgefangen wird.

Die Defaulteinstellungen sind: "Cache-Control: no-cache", "Pragma: no-cache", "Last-Modified: [now - 1 day]" und "Expires: [now + 3 sec].

Nicknames: Um Clients mit bestimmten IP-Adressen (z.B. eigene Rechner) im Screenlog besonders zu kennzeichnen, können diesen Adressen Nicknames zugewiesen werden. Die Einträge müssen im Format "IP-Adresse=Nickname" (Beispiel: 192.168.1.3=MyPC) vorliegen. Mit der Option "Use" wird die Verwendung der Nickname-Funktion aktiviert.

Log IP-addresses (only) to: Mit diesen Einstellungen können IP-Adressen von Clients definiert werden, deren Zugriffe generell nicht geloggt werden sollen, z.B. eigene Entwicklungsrechner, bestimmte Rechner während Tests etc.. Diese Regeln können aber mit den Optionen "Screen", "File" und "File (extended)" für jedes Loggingziel einzeln umgangen werden.

Alle Konfigurationseinstellungen (ausser "Port") können im laufenden Betrieb geändert werden. Um Änderungen in das Konfigurationsfile zu speichern, wird der Menüpunkt "Save Config" verwendet.

Die "Logging"-Seite

Die Logging-Seite ist in zwei Bereiche eingeteilt, die den beiden Typen von Logginformationen in cb_WET entsprechen: "Overview" (Übersicht) und "Details" (erweitertes Log). Der Inhalt der am Screenlog dargestellten Informationen ist identisch mit dem der entsprechenden Logfiles (siehe später), nur die Darstellung ist geringfügig anders.

Die Konfigurationseinstellungen und Funktionen sind für beide Teile des Screenlogs dieselben:

Mit den Optionen "Log to ..." wird für jeden Logtyp festgelegt, ob die Daten in das Screenlog und/oder in das Logfile geschrieben werden.

Um den Speicherbedarf des Programmes einzuschränken, kann die Zeilenanzahl der Screenlogs beschränkt werden, d.h. die ersten Zeilen werden bei Erreichen des Limits automatisch gelöscht. Die Anzahl der Zeilen ist kein exakter Wert sondern kann um ca. +/- 5 % schwanken. Warnung: Wenn das Limit deaktiviert wird, wächst das Screenlog, bis der gesamte Speicher des Systems aufgebraucht ist!

Die Textfelder der Screenlogs sind editierbar, und stehen für Clipboardfunktionen (Copy/Paste) zur Verfügung. Die beiden Screenlogs können jederzeit (mit "Clear") gelöscht werden und (mit "Save to file") in (von den Logfiles unabhängige) Files gespeichert werden.

Logfiles

Die Filenamen der Logfiles werden automatisch aus dem Systemdatum generiert ("JJJJMMDD") und im konfigurierten Verzeichnis abgelegt. Die Erweiterungen sind: ".LOG" für das File im DLF-Format und ".LOG2" für das erweiterte Format.

Logging-Overview

Ein Eintrag in diesem Logformat enthält folgende Daten:

  • Rechnername bzw. IP-Adresse des Clients (bzw. Proxies)
  • Zeitstempel
  • Angeforderter URL (incl. Parametern in codierter Form)
  • Protokollversion
  • HTTP-Statuscode
  • Grösse der übertragenen Datei
  • Referrer (zu messende Seite)
  • UserAgent (Angaben zu verwendetem Webbrowser)

Das Logfile (".LOG") wird im DLF-Format gespeichert und kann mit allen gängigen Analysetools zu statistischen Auswertungen etc. weiterverarbeitet werden.

Beispiel für Eintrag im Log-File (hier dargestellt mit Zeilenumbrüchen):

12345.xxx.yyy.net - - [28/Mar/2002:15:31:40 +0100] "GET /cbnet_DAT.gif doctitle=creativebytes.net%20-%20cb_PMM%20-%20Description&docurl=http://www.creativebytes.net/cb_PMM/index.htm& referrer=http://www.winsite.com/bin/Info?6500000036224 HTTP/1.1" 200 807 "http://www.creativebytes.net/cb_PMM/index.htm" "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)"

Bemerkung: Die URL-Parameter in diesem Beispiel wurden mit einem (von Java-Script) dynamisch generiertem Link übertragen (siehe oben).

Logging-Detail

Dieser Logtyp enthält zusätzlich zum einfachen Log-Format noch folgende Informationen:

  • IP-Adresse des Clients (zusätzlich, wenn Rechnername verfügbar)
  • HTTP-Kommando (GET oder HEAD)
  • URL-Parameter in decodierter Form
  • Beim Request vom Client übertragene HTTP-Header

Das Logfile (".LOG2") wird in folgendem Format gespeichert (Beispiel):

2002/03/28 15:31:40:105 --------------
From: 12345.xxx.yyy.net [123.123.123.123]
Command: GET
Document: /cbnet_DAT.gif
--- URI PARAMS START:
doctitle=creativebytes.net - cb_PMM - Description
docurl=http://www.creativebytes.net/cb_PMM/index.htm
referrer=http://www.winsite.com/bin/Info?6500000036224
--- URI PARAMS END
--- HTTP HEADERS START:
Accept: */*
Referer: http://www.creativebytes.net/cb_PMM/index.htm
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)
Host: test.baumann.at:88
Connection: Keep-Alive
--- HTTP HEADERS END

Im Screenlog "Details" des cb_WET-Servers werden nach den Daten des Requests noch die Daten des Response-Headers angezeigt. Mit diesen Informationen kann z.B. der Effekt verschiedener Einstellungen der HTTP-Response Parameter geprüft werden.

Beispiel:

--- RESPONSE HEADER START:
200 OK
Date: Thu, 28 Mar 2002 14:31:40 GMT
Connection: close
Cache-Control: no-cache
Pragma: no-cache
Expires: Thu, 28 Mar 2002 14:31:43 GMT
Last-Modified: Tue, 26 Mar 2002 23:00:00 GMT
--- RESPONSE HEADER END

System-Log

Die auf der "Settings"-Seite des Programmes angezeigten Messages (Informationen über Start/Stop des cb_WET-Servers und etwaige Fehlermeldungen, werden in ein eigenes Logfile weggeschrieben (mit Fileextension ".SYSLOG").

Beispiel:

2002/03/22 16:22:43:375: cb_WET V0.9B6 Pro - Program started
2002/03/22 16:22:43:515: Trying to start server ...
2002/03/22 16:22:43:546: Server started, listening on 0.0.0.0:88.
2002/03/22 16:23:09:484: Trying to stop server ...
2002/03/22 16:23:09:734: Server stopped.
2002/03/22 16:23:09:734: cb_WET V0.9B6 Pro - Program stopped
2002/03/22 17:02:04:796: cb_WET V0.9B6 Pro - Program started
2002/03/22 17:02:04:937: Trying to start server ...
2002/03/22 17:02:04:984: Server started, listening on 0.0.0.0:88.
2002/03/22 17:02:37:906: Trying to stop server ...
2002/03/22 17:02:38:156: Server stopped.
2002/03/22 17:02:38:156: cb_WET V0.9B6 Pro - Program stopped


Lizensierung

cb_WET ist in zwei Versionen verfügbar: Die Light-Version ist FREEWARE, die Pro-Version (mit erweiterten Funktionen) is SHAREWARE.

Funktionsvergleich:

 
Light-Version (FREEWARE)
Pro-Version (SHAREWARE)

Beschränkungen (pro Programmstart)

max. 100 Requests oder eine Stunde

Keine Beschränkungen
Logging in Files (DLF und Details)
ja
ja
Screenlog
ja
ja
Screenlogs "save to file"
nein
ja
konfigurierbares Limit für Screenlogs
nein (100/1000 Zeilen)
ja
"unbeschränkte" Screenlogs
nein
ja
Clipboard Funktionen in Screenlogs
nein
ja
"Autostart" Funktion
nein
ja
Multi instance möglich
nein
ja
Minimieren in die Taskbar Notification Area
nein
ja

Die Pro-Version kann mit unserer "secure order form at ShareIt!" lizensiert werden.


Pläne für die nächste Version:

In der nächten Version von cb_WET werden die erweiterten Logginformationen in einem in einem XML-Format abgespeichert, was eine weitere Verarbeitung der Informationen (z.B. durch eigene Programme) erleichtert.

Die Logging Funktion (im Moment nur im DLF-Format) wird konfigurierbar sein, um DLF, CLF und ELF-kompatible Logfiles erstellen zu können.

Kommentare, Anregungen, Ideen bitte an office@creativebytes.net

contact: office@creativebytes.net | © 2003 creativebytes.net - provided by baumann.at