Patrick Andrieu: Das Modul zur erfolgreichen Fälschung?

Beitrag lesen

Hallo Siechfred!

Solele, ich hatte mal ein bisschen Zeit... Das Modul ist eine feine Sache, ich versuche, es zu verstehen. Na gut, dann fangen wir mal mit den Fragen an, die ich nach und nach - solange der Thread am Leben bleibt - sicher stellen werde.

Zum Beispiel das hier verstehe ich nicht:

my $class = shift;
  my $pwd = shift;
  mkdir $pwd unless -d $pwd;
  my $ref = { pwd  => $pwd || cwd(),

letztens bin ich von Dir dran erinnert worden, dass das erste Element von @_ der Klassennamen ist, soweit so gut. Demnach ist das zweite Element, wenn der Aufruf so erfolgt:

my $log = LogAnalyze->new('local/path/logfiles') or die 'No object';

"local/path/logfiles". Dann habe ich erwartet, dass durch mkdir ... ein Verzeichnis erstellt wird, aber halt, wird das dann hier (my $ref = { pwd  => $pwd || cwd(),) wieder aufs aktuelle Verzeichnis »umgebogen«?

Wenn man das Modul (heute) augerufen hat, wird eine Datei log_2007-12-17.txt erstellt. Wenn ich das Modul ein zweites Mal aufrufe, wird diese nicht aktualisiert? Gut, andererseits hatte es den Vorteil, dass ich das Modul auf meine 293478 Zeilen lange Novemberdatei habe drüberlaufen lassen. Ich habe sie eben umbenannt und sie wurde nicht überschrieben!

Dito. Aber zum Thema RegExp schau Dir mal die im ersten Rating zu Apache::ParseLog verlinkten Seiten an.

Die hier erläuterten RegExps unterscheiden sich wenig von denen, die ich einsetze, berücksichtigen allerdings auch nicht diese sonderbaren Requests mit Anführungszeichen, die in den Logs maskiert werden, zum Beispiel:

"GET /\"idxfloat.htm?hinweise.html#a6\"
"GET /\"#quer\" HTTP/1.1" 404 2284 old.a
"GET /\"javascript:alert\("\r HTTP/1.1"
"GET /\"index.html\" HTTP/1.1" 404 2289
"GET /\"http://old.atomic-eggs.com/\" HT
"GET /\"#x3\" HTTP/1.1" 404 2282 old.ato

und die ich mit [^\"] abfange.

Ansonsten sind Hinweise, Fehlermeldungen aber auch Lob gern willkommen :)

Lasse ich mir beispielsweise die Hosts durch:

$log->parseLogFile or die $LogAnalyze::ErrorMsg;
my $stat = $log->statTop( { level => 20, field => 'host' } );
foreach(@$stat) {
  print $_->{host}, ': ', $_->{count}, "\n";
}
print $/;
my $endtime = time();
print $endtime - $starttime, " Sekunden";

ausgeben (OK, ich habe ja keine 20 Domains/Subdomains, aber mit der Schreibweise mit und ohne www komme ich auf 15 Einträge), sieht man, dass ein Host "" mehrmals 201 Mal gefunden wurde... eigentlich sollten die letzen Zeile ab etwa der 15. nur noch aus : bestehen..., oder was bedeutet 201?

old.atomic-eggs.com: 100220
selfspezial.atomic-eggs.com: 50302
advent-2000.atomic-eggs.com: 13455
atomic-eggs.com: 3595
www.selfspezial.atomic-eggs.com: 3318
www.pacworks.de: 1093
www.old.atomic-eggs.com: 383
goek.atomic-eggs.com: 317
www.advent-2000.de: 223
: 201
www.atomic-eggs.de: 202
www.atomic-eggs.com.: 54
advent-2000.de: 26
atomic-eggs.de: 12
www.pacworks.de:80: 3
www.advent-2000.atomic-eggs.com: 1
: 201
: 201
: 201
: 201

Bei den Statuscodes auch:

301: 20667
304: 19319
403: 6232
404: 5972
410: 907
206: 524
: 201
300: 92
405: 47
302: 38
400: 8
401: 4
416: 1
: 201
: 201
: 201
: 201
: 201
: 201
: 201

Ach ja... die Zeit: etwa 50 Sekunden für die fast 300000 Zeilen. Was dauert, ist nicht das durchlesen als vielmehr das Sortieren danach, denn

$VAR1 = 1;

wird ja ziemlich schnell ausgegeben!

Viele Grüße aus Frankfurt/Main,
Patrick

--

_ - jenseits vom delirium - _
[link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
Nichts ist unmöglich? Doch!
Heute schon gegökt?
0 79

Bekloppte User Agents zuordnen (RegExp)

Patrick Andrieu
  • programmiertechnik
  1. 0
    Cheatah
    1. 2

      UA-Statistiken fälschen

      Siechfred
      • perl
      1. 0
        Patrick Andrieu
        1. 1
          Siechfred
          1. 0

            Die erfolgreiche Fälschung

            Patrick Andrieu
            1. 1

              Das Modul zur erfolgreichen Fälschung?

              Siechfred
              1. 0
                Patrick Andrieu
                1. 0
                  Siechfred
              2. 0
                Siechfred
              3. 0
                Patrick Andrieu
                1. 0
                  Siechfred
                  1. 0
                    Patrick Andrieu
                    1. 0
                      Siechfred
                      1. 0
                        Patrick Andrieu
                        1. 0
                          Siechfred
                          1. 0
                            Patrick Andrieu
                            1. 0
                              Siechfred
                              1. 0
                                Patrick Andrieu
                                1. 0
                                  Patrick Andrieu
                                  1. 0
                                    Siechfred
                                    1. 0
                                      Patrick Andrieu
                                      1. 0
                                        Siechfred
                                        1. 0
                                          Patrick Andrieu
                                          1. 0
                                            Patrick Andrieu
                                          2. 0
                                            Siechfred
                                2. 0
                                  Siechfred
            2. 0

              Die erfolgreichen Statmaker- und -fälscher-Skripts für 1&1-User!

              Patrick Andrieu
              1. 0
                Patrick Andrieu
                1. 0
                  Struppi
                  1. 0
                    Patrick Andrieu
    2. 0
      Patrick Andrieu
      1. 0
        Cheatah
        1. 0
          Patrick Andrieu
  2. 0
    Don P
    1. 0
      Don P
    2. 0
      Patrick Andrieu
      1. 0
        Don P
        1. 0
          Patrick Andrieu
          1. 0
            Don P
            1. 0
              Patrick Andrieu
      2. 0

        Logline splitter (RegExp)

        Patrick Andrieu
  3. 2
    Struppi
    1. 0
      Patrick Andrieu
      1. 0
        Patrick Andrieu
  4. 0
    Der Martin
    1. 0
      Alexander (HH)
    2. 0
      Patrick Andrieu
      1. 0
        Der Martin
        1. 0
          Cheatah
          1. 0
            Patrick Andrieu
            1. 0
              Cheatah
        2. 0
          Patrick Andrieu
          1. 0
            Der Martin
            1. 0

              RegExp'sch ist gar nicht so schwer :)

              Siechfred
              • menschelei
    3. 0
      Patrick Andrieu
      1. 0
        Der Martin
        1. 0
          Patrick Andrieu
          1. 0
            Patrick Andrieu
            1. 0
              Struppi
      2. 0
        Ingo Turski
        1. 0
          Patrick Andrieu
          1. 0
            Ingo Turski
            1. 0
              Patrick Andrieu
              1. 0
                Ingo Turski
                1. 0
                  Patrick Andrieu
                  1. 0
                    Engin
                  2. 0
                    Engin
                    1. 0
                      Patrick Andrieu
                      1. 0
                        Engin
                        1. 0
                          Patrick Andrieu
                          1. 0
                            Engin
                            1. 0
                              Patrick Andrieu
                              1. 0
                                Engin
                                1. 0
                                  Patrick Andrieu
                                  1. 0
                                    Engin
                  3. 0
                    Ingo Turski
                    1. 0
                      Patrick Andrieu
        2. 0
          Patrick Andrieu