Urllib2 treibt mich in den Wahnsinn...

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Bong-Jour
User
Beiträge: 54
Registriert: Donnerstag 24. Juli 2008, 13:14
Kontaktdaten:

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();
Zuletzt geändert von Bong-Jour am Freitag 25. Juli 2008, 08:47, insgesamt 1-mal geändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Bong-Jour
User
Beiträge: 54
Registriert: Donnerstag 24. Juli 2008, 13:14
Kontaktdaten:

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.. ?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Bong-Jour
User
Beiträge: 54
Registriert: Donnerstag 24. Juli 2008, 13:14
Kontaktdaten:

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...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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()
Zuletzt geändert von Leonidas am Freitag 25. Juli 2008, 16:43, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Bong-Jour
User
Beiträge: 54
Registriert: Donnerstag 24. Juli 2008, 13:14
Kontaktdaten:

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))
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Bong-Jour
User
Beiträge: 54
Registriert: Donnerstag 24. Juli 2008, 13:14
Kontaktdaten:

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))
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.
Bong-Jour
User
Beiträge: 54
Registriert: Donnerstag 24. Juli 2008, 13:14
Kontaktdaten:

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.
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 ;)
Bong-Jour
User
Beiträge: 54
Registriert: Donnerstag 24. Juli 2008, 13:14
Kontaktdaten:

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! ^^
Das ist kein Hakenkreuz - Das ist das neue Python-Symbol!
Antworten