Seite 1 von 1

Kleiner Hack bleibt fruchtlos (cookielib, urllib2)

Verfasst: Donnerstag 15. November 2007, 01:40
von windner
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.

Verfasst: Donnerstag 15. November 2007, 10:02
von Rebecca
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.

Verfasst: Donnerstag 15. November 2007, 12:05
von Y0Gi
Was heißt "ein Forum" genau? Manche Systeme bieten für solche Zwecke ja auch extra RSS-/Atomfeeds an.

Verfasst: Donnerstag 15. November 2007, 12:21
von windner
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.

Verfasst: Donnerstag 15. November 2007, 13:55
von EnTeQuAk
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