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
|