Kleiner Hack bleibt fruchtlos (cookielib, urllib2)

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
windner
User
Beiträge: 76
Registriert: Freitag 19. Oktober 2007, 11:25

Hallo!

Ich bin mit meinem Latein am Ende.

Folgendes Theorem:
Wenn in einem Forum was neues ist, taucht der String "folder_new.gif" im HTML-File öfter als 1 mal auf (1 mal ist er nämlich in der Legende unten zu finden).
Also sollte es ganz einfach sein, automatisch zu prüfen, ob sich was tut.

Das Forum macht das Ganze scheinbar über Cookies. Also habe ich die cookielib etc. gefunden und folgenden Test-Code geschrieben (win32, Firefox):

Code: Alles auswählen

import cookielib
import urllib2

def urlopen(url):
        """ URL mit Mozilla-Cookies oeffnen """
        cj = cookielib.MozillaCookieJar()
        cj.load(r'X:\Dokumente und Einstellungen\XXX\Anwendungsdaten\Mozilla\Firefox\Profiles\xxxxxx.default\cookies.txt')
        opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
        return opener.open(url)

# forum-12.html ist das Testboard
fp = urlopen('http://www.python-forum.de/forum-12.html')
forum = fp.read()
fp.close()

print forum.count('folder_new.gif')
(die Zeile mit cj.load ist ein wenig zensiert)

Dann habe ich von einem anderen Rechner eine Testnachricht im Testboard gemacht. Dann das Testboard von meinem Rechner aus angefordert und die Nachricht war dann tatsächlich als "neu" markiert; dh 'folder_new.gif' ist 2mal dringestanden. Auch noch nach einigen Reloads, also werden die Topics erst als "gelesen" markiert, wenn man hineinschaut (was ich nicht getan habe). Dann habe ich sicherheitshalber den Mozilla beendet.

Dann habe ich meinen Testcode ausgeführt, Ausgabe: 1.
Es hat also nicht funktioniert, es hätte 2 (oder mehr) ausgegeben werden sollen.
Damit könnte ich ja noch leben, ich dachte mir: du bist eben zu dumm und hast irgendwas wichtiges vergessen.

Aber: danach habe ich den Mozilla wieder angeworfen und das Testboard angefordert. Effekt: nichts war mehr als neu markiert, auch in den Foren, die vorher noch Neuigkeiten enthielten.
Das kann ich mir allerdings gar nicht erklären.

Kann mir da jemand helfen?

P.S.: An der zensierten Zeile kann's nicht liegen, sonst wäre eine Ausnahme aufgeworfen worden.

EDIT: Ich hatte die automatische Anmeldung aktiviert, daran scheint's also nicht zu liegen.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Mmh? Wenn du dich auslogst, wird alles ales gelesen markiert. D.h. beim naechsten Einloggen siehts du nur die neuen Themen seit dem letzten Ausloggen.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Was heißt "ein Forum" genau? Manche Systeme bieten für solche Zwecke ja auch extra RSS-/Atomfeeds an.
windner
User
Beiträge: 76
Registriert: Freitag 19. Oktober 2007, 11:25

Rebecca hat geschrieben:Mmh? Wenn du dich auslogst, wird alles ales gelesen markiert. D.h. beim naechsten Einloggen siehts du nur die neuen Themen seit dem letzten Ausloggen.
Hatte ich nicht gewusst. Kann ich, denke ich, umgehen, indem ich mich einfach gar nicht auslogge.
Y0Gi hat geschrieben:Was heißt "ein Forum" genau?
Ich dachte da in erster Linie an diese Foren. Exakt formuliert geht es sich um alle phpBB-Foren.

Kann es sein, daß das Forum bei jedem Besuch einen neuen Cookie setzt (und dabei den alten löscht)? Das würde immerhin erklären, warum nach dem Testcode nichts neues mehr in den Foren markiert ist -- ich hätte in dem Fall einfach nicht mehr den richtigen Cookie. Aber warum der Testcode nicht das erwartete Resultat liefert, erklärt das nicht.
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Kann es sein, daß das Forum bei jedem Besuch einen neuen Cookie setzt (und dabei den alten löscht)? Das würde immerhin erklären, warum nach dem Testcode nichts neues mehr in den Foren markiert ist -- ich hätte in dem Fall einfach nicht mehr den richtigen Cookie. Aber warum der Testcode nicht das erwartete Resultat liefert, erklärt das nicht.
Meinst du "nichts neues mehr markiert" im Browser oder im Script? (o_O)

Wenns darum geht: Script --> Browser --> Nichts neues.

Das ist klar, da Cookies nicht Clientübergreifend gespeichert werden können. Also wenn ich mich zu Hause anmelde, bin ich auf Arbeit abgemeldet. (Scheiß Beispiel...)

(oder hab ich jetzt was falsch verstanden)

MfG EnTeQuAk
Antworten