urllib cookielib... eingeloggt bleiben
Verfasst: 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??
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
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??
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