urllib cookielib... eingeloggt bleiben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Invincible
User
Beiträge: 1
Registriert: Sonntag 24. Februar 2008, 22:18

Freitag 29. Februar 2008, 17:58

Hallo!
Danke im Voraus für die Hilfe- ich komme nämlich echt nicht weiter:)

Ich habe gerade angefangen ein bisschen mit den beiden Modulen herumzuprobieren und wollte nun ein Script schreiben dass sich bei einer http-Seite einloggt und von dort ein paar übliche Aufgaben erfüllt.
Die Authentifikation habe ich mir leicht gemacht und über die url die Variablen Passwort und Name übergeben
(-- http://bllblaa.de/einloggen.php?login!& ... rt=sosoo--)
Aus der Seite auf die man dann kommt kann man sich die Sessionid raussuchen. Mit Übergabe dieser Sid in der neuen Url kann man im IE ohne klicken auf die anderen Unterseiten kommen.
(--http://bllblaa.de/unterseite1.php?login ... 37935873--)
Was aber im IE funktionert, geht bei Python nich, hier mal die wichtigen Codeausschnitte:
import urllib2
name="soso"
passwort"sosooow"
request=urllib2.Request((Seitemit Variablen) % (name, passwort))
response= urllib2.urlopen(request)
seite= response.read()
print seite #die seite die nach dem einloggen da sein sollte wird auch #richtig und vollständig angezeigt.
//suche sessionid
print sessionid #funktioniert
request2=urllib2.Request((UnterSeitemit Variable) % (sessionid))
response2= urllib2.urlopen(request2)
seite2= response2.read()
#die seite wird angezeigt, aber so als ob man nicht eingeloggt wäre

An die Infos die ich brauche komme ich aber natürlich nur im eingeloggten Zustand ran. Ich habe überlegt(und auch noch versucht zu überprüfen-siehe unten) ob die Seite ein Cookie schickt was der IE speichert und dann nutzt, aber als ich die Einstellungen auf -keine Cookies akzeptieren- gestellt habe konnte ich immernoch ganz normal eingeloggt auf alle UnterSeiten.
Jetzt denke ich, dass der IE normal eben vielleicht immer bestimmte header mitschickt und dass die urllib2 das eben nicht macht. Ich weiß nur nicht welche Header das sind. Jemand ne Idee?



Meine Überprüfung ob die Seite ein Cookie schickt ist sicher falsch, denn ich habe sie auch bei vielen anderen Seiten probiert und keine einzige sendete eins^^

import cookielib
cookieInst= cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieInst))
urllib2.install_opener(opener)
siteCookie= cookieInst.extract_cookies(response,request)
#das ganze eingeordnet in den code von oben, das sind derselbe
#response und request
print sitecookie #ergab immer: None

Ich weiß nicht was in einem Cookie noch mehr drin is als die Url und die dazugehörigen Header, aber ich habe zur Not mal die Header der response mit response.info ausgelesen:
Server: Apache

X-Powered-By: PHP/4.4.8_pre20070816-pl0-gentoo

Set-Cookie: MAINCHAIN2=on; path=/

Last-Modified: Fri, 29 Feb 2008 15:50:18 GMT

Expires: Fri, 29 Feb 2008 14:50:17 GMT

Pragma: no-cache

Cache-Control: no-cache

Content-Length: 1445

Connection: close

Content-Type: text/html; charset=ISO-8859-1


Ich meine da steht was von Cookie, aber warum geht die Seite dann im IE auch, wenn ich Cookies verbiete? (und warum steht Connection: close- muss das vielleicht geändert werden...)

Uuuuuuuuund.. wie integriert man denn Header in eine Anfrage??
:shock: :shock: :shock:

Auch in dem Falle, dass ich mich damit wiederhole- das Ziel ist es diese Unterseite in eingeloggtem Zustand zu öffnen.

Ich hoffe der Text ist verständlich und ihr könnt mir helfen :lol:
Benutzeravatar
snafu
User
Beiträge: 5650
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Freitag 29. Februar 2008, 18:03

EDIT: Oh, das kommt davon, wenn man Threads nur überfliegt, sorry!
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 29. Februar 2008, 20:28

Wenn man sich das Leben nicht unnötig schwer machen will, nimmt man einfach mechanize.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten