#!/usr/bin/perl ############################################################################### # # # Script: searchwords.pl - Version 0.1.20020813 # # # # Dieses Script durchsucht Apache-Access-Log-Dateien nach Referern, die von # # Suchmaschinen erzeugt wurden und gibt den Namen der Suchmaschine, Such- # # wort und Zielseite aus. # # # # (c)Arne P. 2002 - http://scripte.arnep.de - arne(at)arnep.de # # # ############################################################################### # # # hier die Dateinamen eintragen # $filename = "access.log"; $outfile = "searchwords.html"; # # ############################################################################### ## Ausgabedatei leeren open(OUT,">",$outfile) or die "Kann Datei $! nicht öffnen zum Schreiben"; ## Log-Datei öffnen open(IO,$filename) or die "Kann Datei $! nicht öffnen zum Lesen"; print OUT "\n\n"; close OUT; ## Zähler auf 0 setzen $zeilen = 0; ## Gesamtzeilen zählen print "Zaehle Zeilen...\r"; while () { $zeilen++; } print "$zeilen Zeilen\r"; ## Log-Datei schließen close IO; ## Log-Datei öffnen open(IO,$filename) or die "Kann Datei $! nicht öffnen zum Lesen"; ## Log-Datei einlesen while () { $log = ""; ## Google if ( $_ =~ m/([^\"]* "GET ([^ ]*) [^"]*" .*google\..*(\?|&)q=([^&" ]*).*)/ ) { $log = $1; $engine = "Google"; $page = $2; $words = $4; $google++; } ## Altavista elsif ( $_ =~ m/([^\"]* "GET ([^ ]*) [^"]*" .*altavista\..*(\?|&)q=([^&" ]*).*)/ ) { $log = $1; $engine = "Altavista"; $page = $2; $words = $4; $altavista++; } ## T-Online elsif ( $_ =~ m/([^\"]* "GET ([^ ]*) [^"]*" .*brisbane.t-online\..*(\?|&)q=([^&" ]*).*)/ ) { $log = $1; $engine = "T-Online"; $page = $2; $words = $4; $tonline++; } ## AOL elsif ( $_ =~ m/([^\"]* "GET ([^ ]*) [^"]*" .*suche.aolsvc\..*(\?|&)q=([^&" ]*).*)/ ) { $log = $1; $engine = "AOL"; $page = $2; $words = $4; $aol++; } ## Lycos elsif ( $_ =~ m/([^\"]* "GET ([^ ]*) [^"]*" .*search.lycos\..*(\?|&)query=([^&" ]*).*)/ ) { $log = $1; $engine = "Lycos"; $page = $2; $words = $4; $lycos++; } ## MSN elsif ( $_ =~ m/([^\"]* "GET ([^ ]*) [^"]*" .*search.msn\..*(\?|&)q=([^&" ]*).*)/ ) { $log = $1; $engine = "MSN"; $page = $2; $words = $4; $msn++; } ## Compuserve elsif ( $_ =~ m/([^\"]* "GET ([^ ]*) [^"]*" .*compuserve.de\/suche.*(\?|&)q=([^&" ]*).*)/ ) { $log = $1; $engine = "Compuserve"; $page = $2; $words = $4; $compuserve++; } ## Fireball elsif ( $_ =~ m/([^\"]* "GET ([^ ]*) [^"]*" .*suche.fireball.*(\?|&)q=([^&" ]*).*)/ ) { $log = $1; $engine = "Fireball"; $page = $2; $words = $4; $fireball++; } if ( $log ne "" ) { ## Zählen $i++; ## % umwandeln $words =~ s/\+/ /g; $words =~ s/%E4/ä/ig; $words =~ s/%F6/ö/ig; $words =~ s/%FC/ü/ig; $words =~ s///ig; $words =~ s///ig; $words =~ s/%DC/Ü/ig; $words =~ s/%C3%A4/ä/ig; $words =~ s/%C3%B6/ö/ig; $words =~ s/%C3%BC/ü/ig; $words =~ s/%C3%84/Ä/ig; $words =~ s/%252B/+/ig; $words =~ s/%2522/"/ig; $words =~ s/%2522/"/ig; $words =~ s/%20/ /ig; $words =~ s/%22/"/ig; $words =~ s/%26/&/ig; $words =~ s/%2B/+/ig; $words =~ s/%2C/,/ig; $words =~ s/%2D/-/ig; $words =~ s/%2E/./ig; $words =~ s/%2F/\//ig; $words =~ s/%3A/:/ig; $words =~ s/%3C/>",$outfile) or die "Kann Datei $! nicht öffnen zum Schreiben"; if ( $color eq "" ) { $color = "bgcolor=\"silver\""; } else { $color = ""; } print OUT "\n"; close OUT; } } open(OUT,">>",$outfile) or die "Kann Datei $! nicht öffnen zum Schreiben"; print OUT "
Nr.SuchmaschineKeywordZielseiteLog-Eintrag
$i$engine$words$page$log
"; print OUT "

Statistik:

"; print OUT "

\n"; print OUT "Gesamtzeilenanzahl: $zeilen
\n"; print OUT "Anzahl Stichwörter: $i
\n"; print OUT "  Google: $google
\n"; print OUT "  Altavista: $altavista
\n"; print OUT "  T-Online: $tonline
\n"; print OUT "  AOL: $aol
\n"; print OUT "  Lycos: $lycos
\n"; print OUT "  MSN: $msn
\n"; print OUT "  Compuserve: $compuserve
\n"; print OUT "  Fireball: $fireball
\n"; print OUT "

\n"; close OUT; close IO;