Seite 1 von 1

Urllib2 treibt mich in den Wahnsinn...

Verfasst: Donnerstag 24. Juli 2008, 13:24
von Bong-Jour
Ich habe ein Problem mit dem urllib2 Modul unter mod_python. Der folgende Block läuft in einem Script sauber durch, aber unter mod_python erhalte ich die Fehlermeldung "URLError: <urlopen error unknown url type: https>". Woran kann das liegen.. ?

Code: Alles auswählen

# coding=utf-8
import cookielib, urllib, urllib2


Cookie = cookielib.CookieJar()
Opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(Cookie)) 
urllib2.install_opener(Opener); Url = ""

global Header; Header = {}; Header["Cache-Control"] = "no-cache"; Header["Connection"] = "Keep-Alive";
Header["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"; Header["UA-CPU"] = "x86"
Header["Content-Type"] = "application/x-www-form-urlencoded"; Header["Accept-Language"] = "de";
Header["Referer"] = Url; Header["Accept"] = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*"


Url = "https://www.e-gold.com/acct/login.asp"; Header["Referer"] = Url 
Request = urllib2.urlopen(urllib2.Request(Url, None, Header)).read();

Verfasst: Donnerstag 24. Juli 2008, 13:30
von Leonidas
mod_python ist einfach schrott, da treten oft seltsame Fehler auf. Besser du nutzt WSGI das kannst du dann an jedes Backend was du willst dransetzen (CGI, FastCGI, mod_wsgi etc).

Verfasst: Donnerstag 24. Juli 2008, 17:43
von Bong-Jour
Das es nicht viel taugt, habe ich auch schnell begriffen.. Aber mein Webspaceanbieter hatte es drauf und deshalb habe ich mich trotzdem eingearbeitet. Und nun benutze ich es schon gut ein halbes Jahr.

Wenn ich die Url beispielsweise in http://www.google.de abänder, macht mod_python es. Aber warum kein https.. ? Welchen zusätzlichen Schritt führt Activestates Pythonwin (Mein Editor) im Hintergrund aus, dass es dort läuft.. ?

Verfasst: Donnerstag 24. Juli 2008, 18:44
von Leonidas
Bong-Jour hat geschrieben:Das es nicht viel taugt, habe ich auch schnell begriffen.. Aber mein Webspaceanbieter hatte es drauf und deshalb habe ich mich trotzdem eingearbeitet. Und nun benutze ich es schon gut ein halbes Jahr.
Du kannst auch unter WSGI mod_python verwenden.

Apropos, dein Code ist seltsam bis unsinnig. Gehört das so überkompliziert?

Zu dem Problem mit HTTPS kann ich dir wenig sagen, vielleicht liegt es daran, dass dein Hoster das ``_ssl``-Modul nicht bietet.

Verfasst: Freitag 25. Juli 2008, 08:47
von Bong-Jour
Keine Ahnung, ob der unsinnig ist.. Hab mir den so aus dem Internet zusammengefischt.. Viel wichtiger ist doch, dass er funktioniert ^^ Würdest du meinen Code mal mit diesen WSGI testen.. ?

Hab es nur local auf meinem Rechner ausprobiert und kein ssl installiert. Aber im Editor btw. Konsole läufts ja, nur im Browser nicht...

Verfasst: Freitag 25. Juli 2008, 11:37
von Leonidas
Bong-Jour hat geschrieben:Keine Ahnung, ob der unsinnig ist.. Hab mir den so aus dem Internet zusammengefischt.. Viel wichtiger ist doch, dass er funktioniert ^^ Würdest du meinen Code mal mit diesen WSGI testen.. ?
Kann ich schon machen, wenn du mir den WSGI-Konform umschreibst.

Du kannst von diesem, etwas aufgeräumten Code ausgehen:

Code: Alles auswählen

cookie = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
urllib2.install_opener(opener)

header = {
    "Cache-Control" : "no-cache",
    "Connection" : "Keep-Alive",
    "User-Agent" : "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)",
    "UA-CPU" : "x86",
    "Content-Type" : "application/x-www-form-urlencoded",
    "Accept-Language" : "de",
    "Accept" : "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*"
}

url = "https://www.e-gold.com/acct/login.asp"
header["Referer"] = url
request = urllib2.urlopen(urllib2.Request(url, None, header)).read()

Verfasst: Freitag 25. Juli 2008, 14:58
von Bong-Jour
Mir reicht schon diese einzige Zeile, da es in der Konsole ja auch ohne Keks und Kopf funktioniert:

Code: Alles auswählen

import urllib2; urllib2.urlopen(urllib2.Request(https://www.e-gold.com/acct/login.asp, None))

Verfasst: Freitag 25. Juli 2008, 16:08
von Leonidas
So ganz ohne Strings? Halte ich für unwarscheinlich.

Bei mir funktionierts nur mit Strings, aber ich habe ``socket.ssl()`` und du auch; ob dein Hoster es bietet ist eben die Frage.

Verfasst: Sonntag 27. Juli 2008, 22:35
von Bong-Jour
Natürlich ist das ein String... Du musst dir die Anführungzeichen halt dazu denken.. ^^

Code: Alles auswählen

import urllib2; urllib2.urlopen(urllib2.Request("https://www.e-gold.com/acct/login.asp", None))

Re: Urllib2 treibt mich in den Wahnsinn...

Verfasst: Montag 28. Juli 2008, 10:28
von lunar
Bong-Jour hat geschrieben:Ich habe ein Problem mit dem urllib2 Modul unter mod_python. Der folgende Block läuft in einem Script sauber durch, aber unter mod_python erhalte ich die Fehlermeldung "URLError: <urlopen error unknown url type: https>". Woran kann das liegen.. ?
Wahrscheinlich daran, dass dein Hoster "SSL"-Unterstützung für Python deaktiviert hat, damit du teureren Webspace kaufen musst. Was in gewisser Weise auch verständlich ist, da SSL höhere Last auf dem Server verursacht und schöne große Löcher in die Gateway-Firewall des Hosters bohren kann, was SSL zum Sicherheitsrisiko macht.

Verfasst: Dienstag 29. Juli 2008, 20:29
von Bong-Jour
Mein Webspaceanbieter hat auf meinem Rechner mit Sicherheit nichts deaktiviert ^^ Das Problem ist, dass es mit dem Editor geht, aber unter mod_python nicht. Beides lokal und ohne Ssl-Unterstützung.

Verfasst: Dienstag 29. Juli 2008, 20:38
von lunar
Bong-Jour hat geschrieben:Mein Webspaceanbieter hat auf meinem Rechner mit Sicherheit nichts deaktiviert ^^ Das Problem ist, dass es mit dem Editor geht, aber unter mod_python nicht. Beides lokal und ohne Ssl-Unterstützung.
Nutzt mod-python denn überhaupt die gleiche Python-Version? Am besten wäre es natürlich, wenn du gleich einfach mal sagst, über welches System und welche Versionen wir hier reden ;)

Verfasst: Mittwoch 30. Juli 2008, 21:30
von Bong-Jour
YEAH, du bist ja mal genial! Das mod_python hat noch die 2.4er Version benutzt. Mit 2.5 geht es. Das hätt ich alleine nie herausgefunden - Danke Pythpnforum! ^^