hi!
Deshalb suche ich ein Programm, daß den Browser in etwa wie der Webserver logt, und mir
dann eine Auswertung präsentiert.
Vielleicht kannst du mit folgendem Skript was anfangen, das ich mal vor kurzem geschrieben habe. Es kann zwar noch nicht viel, aber die Zugriffe und die Browsernamen werden gespeichert:
=== cut ===
#!/usr/bin/perl
Optionen
my $datapath = "count";
my $image = "tr.gif";
my %p = &getParam;
my $remoteaddr = $ENV{'REMOTE_HOST'} || $ENV{'REMOTE_ADDR'} || "unbekannt";
my $useragent = $ENV{'HTTP_USER_AGENT'} || "unbekannt";
my $document = $ENV{'HTTP_REFERER'} || $p{'page'} || "unbekannt";
my $referer = $p{'ref'};
my $doc = $document =~ s/http://$ENV{'HTTP_HOST'}///g;
$doc =~ s///_/g;
if ($referer)
{
my $check;
open FILE, "<$datapath/$doc.referer.txt";
my @lines = <FILE>;
close FILE;
for (@lines)
{
if (/$referer/) { $check++; }
}
if (!$check)
{
open FILE, ">>$datapath/$doc.referer.txt";
print FILE "$referer\n";
close FILE;
}
}
open FILE, ">>$datapath/access.txt";
my $date = localtime;
print FILE "$date - Adresse: $remoteaddr - Dokument: $document\n";
close FILE;
my $check = 0;
my @newlines;
open FILE, "<$datapath/useragent.txt";
my @lines = <FILE>;
close FILE;
for (@lines)
{
my ($agent, $count) = split /=/;
if ($useragent eq $agent)
{
$check++;
$count++;
push @newlines, "$useragent=$count\n";
} else {
push @newlines, $_;
}
}
if (!$check)
{
push @newlines, "$useragent=1\n";
}
open FILE, ">$datapath/useragent.txt";
print FILE @newlines;
close FILE;
&returnImage;
sub returnImage
{
open FILE, "<$image";
binmode FILE;
my $file = <FILE>;
close FILE;
print "Content-type: image/gif\n\n$file";
}
sub getParam
{
my $EnvDaten;
if ($ENV{'REQUEST_METHOD'} eq "GET")
{
$EnvDaten = $ENV{'QUERY_STRING'};
} else {
read STDIN, $EnvDaten, $ENV{'CONTENT_LENGTH'};
}
for (split /&/, $EnvDaten)
{
my ($key, $value) = split /=/;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9]{2})/pack("C", hex($1))/eg;
$value =~ s/</</g;
$value =~ s/>/>/g;
$p{$key} = $value;
}
return %p;
}
=== cut ===
In $datapath steht das Unterverzeichnis, in dem die Dateien abgelegt werden, in $image das Bild, das zurückgeliefert wird. Ich verwende dafür ein 1x1 transparentes GIF.
Eine grafische Auswertung gibt es nicht, aber die useragent.txt sieht dann etwa so aus:
=== cut ===
Mozilla/4.51 [en] (WinNT; I)=18
Mozilla/4.0 (compatible; MSIE 5.0b2; Windows NT)=1
=== cut ===
Also hinten steht immer die Anzahl.
Mit ein bisschen Perl-Kenntnissen kannst du das Skript leicht anpassen, so dass zb. der verwendete Browser mit in die Datei access.txt geschrieben wird, die eigentlich nur die Zugriffe mit IP-Adressen und Uhrzeit loggt.
Ich hoffe, du kannst damit was anfangen.
bye, Frank!