Patrick Andrieu: Logline splitter (RegExp)

Beitrag lesen

Re!

  1. IP
  2. der zweite Eintrag kann ich nicht zuordnen, werde aus der Apache-Beschreibung nicht schlau, ist aber immer -
  3. angemeldeter User(wenn vorhanden, sonst -)
  4. Datum/Zeit-String
  5. "Methode/Request Protokoll"
  6. Server Response (Status Code)
  7. Dateigröße in Bytes
  8. Domain oder Subdomain
  9. "Referrerstring" (oder "-")
  10. "User-Agent-String" (oder "-" oder "Unfug" *g*)
  11. "Proxy-IP" (wenn über Proxy und die IP wird mitgesendet)

Basierend auf dem Aufbau der 1&1-Logfiles, habe ich mir einen RegExp aus einem älteren Logfile-Analyser (access.pl, nicht von mir) etwas verfeinert:

  
($site,$rfc931,$user,$when,$request,$status,$bytes,$domain,$from,$agent,$proxy) =  
m{  
^               # Stringbeginn  
(\S+)           # $site (Bei 1&1: IP-Adresse)  
\s*             # Leerzeichen  
(\S+)           # $rfc931. Hier steht nur: -  
\s*             # Leerzeichen  
(\S+)           # $user (Bei HTTP-Auth: Username, sonst: -)  
\s*             # Leerzeichen  
\[([^\]]+)]     # $when (Datum/Zeit-Gruppe - in eckigen Klammern)  
\s*             # Leerzeichen  
"(.+[\\"]*[^\"]+HTTP/\d\.\d)"   # $request (GET|POST|HEAD|PUT + angeforderte Ressource + HTTP-Protokoll - in Anführungszeichen)  
\s*             # Leerzeichen  
(\S+)           # $status (Serverresponse: Zahl)  
\s*             # Leerzeichen  
(\S+)           # $bytes (Dateigröße in Bytes: Zahl)  
\s*             # Leerzeichen  
(\S+)           # $domain (Domain/Subdomain - 1&1-spezifisch)  
\s*             # Leerzeichen  
"\s*(.+[\\"]*[^\"]*)\s*"        # $from (HTTP-Referrer - in Anführungszeichen)  
\s*                             # Leerzeichen  
"\s*(.+[\\"]*[^\"]*)\s*"        # $agent (User-Agent - in Anführungszeichen)  
\s*                             # Leerzeichen  
"([^\"]+)"                      # $proxy (Proxy-IP, wenn übermittelt - 1&1-spezifisch)  
\s*             # Leerzeichen  
$               # Stringende  
}ox;

Macht sogar Requests wie: »http://www.example.org/seite "mit" Anfuehrungszeichen "weil" manche "es" so "toll" finden« (diese werden ja in der Logfile escaped: "), ferner UAs, die ebenfalls Anführungszeichen enthalten (gibt's alles, ja):

255.255.255.255 - - [03/Aug/2007:20:05:40 +0200] "GET / HTTP/1.0" 200 34978 www.atomic-eggs.com "http://www.courbis.fr" "<a href="http://www.courbis.fr">Courbis presente Voyage au centre de la HP48</a>" "-"

Eine Reise durch die Logfiles ist immer spaßig! Gibt auch schlecht parsende Suchbots (s. Request... Gerade Cazoodle ist darin Weltmeister):

111.222.111.222 - - [03/Aug/2007:00:28:01 +0200] "GET /old_news/</TITLE></HEAD> HTTP/1.0" 301 261 old.atomic-eggs.com "-" "CazoodleBot/CazoodleBot-0.1 (CazoodleBot Crawler; http://www.cazoodle.com/cazoodlebot; cazoodlebot@cazoodle.com)" "-"

Und die Geckos treiben mich noch zum Wahnsinn:

Anzahl Gecko-Browser gesamt: 93944

BonEcho: 4
    Camino: 25
    Firefox: 84581
    Galeon: 21
    IceWeasel: 254
    K-Meleon: 106
    Minefield: 7344
    Mozilla: 413
    MultiZilla: 6
    Netscape: 220
    SeaMonkey: 579
    Thunderbird: 5
    Andere Geckos: 386

Wie viele gibt es denn?

Darf's a bissi mehr sein? Ja, dann "einige" Robots, Dienste und sonstwelche »Graser«:

Anzahl Robots und Dienste: 41057

Ask Jeeves: 2107
    Cazoodle: 376
    Convera Crawler: 865
    Exabot: 45
    Favorstar: 35
    Googlebot: 3813
    Heritrix: 22
    Houxou Crawler: 12
    IA-Archiver: 825
    Litefinder: 1518
    MSN-Bot: 5737
    Microsoft URL Control: 258
    Perl: 171
    Python: 7
    Seekbot: 159
    Speedy Spider: 651
    SurveyBot: 6
    VisBot: 218
    VoilaBot: 14686
    W3C-Validator: 10
    Yahoo! Slurp: 9520
    YodaoBot-Image: 16

Und zuletzt:

Anzahl Besuche bekannter Forumer mit eigenem User-Agent: 241

Cheatah: 8
    Martin: 143
    Struppi: 90

;)

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