Seite 1 von 1

mechanize + proxy + SSL

Verfasst: Mittwoch 15. Juli 2009, 10:03
von da.dom
Tag Zusammen,

der Titel sagt ja im Grunde schon alles was ich tuen will, ich versuche mit mechanize über einen Proxy eine (ok: mit Passwort versehene) SSL - Seite auf zu rufen. Scheinbar mache ich da irgendetwas falsch:

Code: Alles auswählen

import mechanize

url="https://somehttpsUrl.de"
browser=mechanize.Browser()
optional.
browser.set_proxies({"http": "proxy.de:8080","https": "proxy.de:8080"})

browser.add_password(url,"username","password")
browser.open(url)
baseHTML=browser.response().read()
print baseHTML
Aufruf von "normalen" Seiten (google und dergleichen) funtkioniert problemslos, wodurch ich vermute das es die Kombination von Proxy + SSL mir hier probleme bereitet:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\eclipseGanymadeSR2\workspace\dcodingSVN\Programme\Python\PHPMyAdminBackup.py", line 9, in <module>
    browser.open(url)
  File "build\bdist.win32\egg\mechanize\_mechanize.py", line 206, in open
    return self._mech_open(url, data)
  File "build\bdist.win32\egg\mechanize\_mechanize.py", line 232, in _mech_open
    response = UserAgentBase.open(self, request, data)
  File "build\bdist.win32\egg\mechanize\_opener.py", line 181, in open
    response = urlopen(self, req, data)
  File "C:\Java\Python\lib\urllib2.py", line 399, in _open
    '_open', req)
  File "C:\Java\Python\lib\urllib2.py", line 360, in _call_chain
    result = func(*args)
  File "build\bdist.win32\egg\mechanize\_http.py", line 741, in https_open
    return self.do_open(conn_factory, req)
  File "build\bdist.win32\egg\mechanize\_http.py", line 691, in do_open
    raise URLError(err)
URLError: <urlopen error (1, 'error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol')>

Alternativ hatte ich versuch keinen Proxy explizit an zu geben. Ergebnis war, das Google & Co weiterhin funktionieren, der Aufruf der SSL Seite nun aber zu dieser Fehlermeldung führt:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\eclipseGanymadeSR2\workspace\dcodingSVN\Programme\Python\PHPMyAdminBackup.py", line 9, in <module>
    browser.open(url)
  File "build\bdist.win32\egg\mechanize\_mechanize.py", line 206, in open
    return self._mech_open(url, data)
  File "build\bdist.win32\egg\mechanize\_mechanize.py", line 232, in _mech_open
    response = UserAgentBase.open(self, request, data)
  File "build\bdist.win32\egg\mechanize\_opener.py", line 181, in open
    response = urlopen(self, req, data)
  File "C:\Java\Python\lib\urllib2.py", line 399, in _open
    '_open', req)
  File "C:\Java\Python\lib\urllib2.py", line 360, in _call_chain
    result = func(*args)
  File "build\bdist.win32\egg\mechanize\_http.py", line 741, in https_open
    return self.do_open(conn_factory, req)
  File "build\bdist.win32\egg\mechanize\_http.py", line 691, in do_open
    raise URLError(err)
URLError: <urlopen error (11001, 'getaddrinfo failed')>
Hoffe auf tatkräftige Unterstützung
Dom

Verfasst: Mittwoch 15. Juli 2009, 15:19
von mkesper
Hallo, eventuell musst du explizit den Port 443 für SSL angeben, wie eine Google-Suche mich vermuten lässt.

Code: Alles auswählen

url="https://somehttpsUrl.de:443"

Verfasst: Donnerstag 16. Juli 2009, 09:53
von da.dom
mh komischerweise hat sich die Fehlermeldung heute ein wenig verändert. Er scheint jetzt zumindest eine Verbindung zur Webseite aufbauen zu können, wird aber zurück gewiesen :)

Code: Alles auswählen

line 12, in <module>
    browser.open(url)
  File "build\bdist.win32\egg\mechanize\_mechanize.py", line 206, in open
    return self._mech_open(url, data)
  File "build\bdist.win32\egg\mechanize\_mechanize.py", line 257, in _mech_open
    raise response
httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt

Datz ebenfalls jemand eine gute Idee? (hatte schon versucht den UserAgent zu verändern:
browser.addheaders = [('User-agent', 'My Own One')]
hat aber scheinbar kein Erfolg gebracht)

Grüße
D

Verfasst: Donnerstag 16. Juli 2009, 09:58
von Leonidas
da.dom hat geschrieben:Datz ebenfalls jemand eine gute Idee?
Ja: die Bitte des Betreibers akzeptieren und seine Seite nicht scrapen, wenn er das nicht will.

Verfasst: Donnerstag 16. Juli 2009, 11:36
von snafu
Mechanize bietet eine eigene Option zum Ignorieren der `robots.txt`. Das sollte man aber eigentlich nicht machen. Die Datei hat ja durchaus ihren Sinn.