[Python-de] Squid Log-Parser

Axel_Gerke at peacock.de Axel_Gerke at peacock.de
Thu Sep 26 15:39:27 EDT 2002


Hi zusammen,

ich arbeite z.Z. an einem Parser für Logdateien des Squid-Proxy's.
dort tritt folgendes Problem auf:

Um den User-Agent zu ermitteln, schaue ich in der gebastelten Liste nach, ob
"User-Agent: " vorkommt. Wenn ja,
trage es in eine temp-Liste ein. Wenn jetzt aber der betreffende Eintrag ein
Proxy ist und kein Browser,
taucht entweder NUR "Via: " auf oder (je nach Einstellung des Proxys worüber der
Besucher surft) beides.
und dann habe ich ein Problem, denn wenn beides eingetragen wird und somit die
Länge der tempListe variiert,
knallt der import der tempListe in eine DB.



Beispiel mein Script:
def responseEntries(Liste):
    for item in Liste[1:]:
        if item[:12]=="User-Agent: ": # Gib uns den User-Agent
            destList.append(item[12:])
        elif item[:5]=="Via: ": # oder den Proxy
            destList.append(item.split("(")[-1].replace(")","")) # wir wollen
nur den Proxy Namen/Typ
    return destList


Im Prinzip brauche ich folgendes:
Wenn "User-Agent: " in der Liste vorkommt, nimm es, taucht jedoch NUR "Via:"
auf, nimm "Via:",
taucht beides auf, nimm nur "User-Agent: " und wenn keins von beiden auftaucht,
nimm "kein User-Agent".
(letzteres kommt vor, z.Bsp. bei den hübschen IIS Würmern,Viren,usw. ;o)
Ich habe bereits mit "re" rumhantiert, was mir passend erschien, aber leider
sind die Beispiele in der Doku
nicht gerade "hübsch" wenn man damit noch nicht gearbeitet hat.

Danke im Vorraus.

Axel





Beispiel der Liste, wo beides vorkommt(der Übersichtlichkeit halber einmal
untereinander) :
[
IP-Adresse,
- ,
- ,
24/Sep/2002:00:44:46 +0200 ,
GET ,
http://URL ,
HTTP/1.0,
200 ,
4843 ,
Accept: image/gif; image/x-xbitmap,
Referer: http://URL,
Accept-Language: de,
Accept-Encoding: gzip; deflate,
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1),
Via: 1.1 RECHNER-NAME (Squid/2.4.STABLE6),
X-Forwarded-For: IP-Adresse,
Host: www.host.de,
Cache-Control: max-age=259200,
Connection: keep-alive,
HTTP/1.0 ,
200 OK,
Server: Zope/Zope 2.3.0a1 (source release, python 1.5.2, linux2) ZServer/1.1b1,
Date: Mon, 23 Sep 2002 22:44:46 GMT,
Connection: Keep-Alive,
Content-Type: text/html,
Content-Length: 4601,
]






More information about the Python-de mailing list