Python HTTPS клиент с базовой аутентификацией через прокси - PullRequest
3 голосов
/ 21 сентября 2009

Из Python я хотел бы получать контент с веб-сайта через HTTPS с базовой аутентификацией. Мне нужен контент на диске. Я нахожусь в интранете, доверяя серверу HTTPS. Платформа Python 2.6.2 для Windows.

Я играл с urllib2, но пока не получилось.

У меня работает решение, вызывающее wget через os.system ():

wget_cmd = r'\path\to\wget.exe -q -e "https_proxy = http://fqdn.to.proxy:port" --no-check-certificate --http-user="username" --http-password="password" -O path\to\output https://fqdn.to.site/content'

Я бы хотел избавиться от os.system (). Это возможно в Python?

Ответы [ 3 ]

3 голосов
/ 21 сентября 2009

Прокси и https долгое время не работали с urllib2. Это будет исправлено в следующей версии Python 2.6 (v2.6.3).

Тем временем вы можете переопределить правильную поддержку, вот что мы сделали для Mercurial: http://hg.intevation.org/mercurial/crew/rev/59acb9c7d90f

3 голосов
/ 21 сентября 2009

Попробуйте (обратите внимание, что вам также необходимо заполнить область своего сервера):

import urllib2
authinfo = urllib2.HTTPBasicAuthHandler()
authinfo.add_password(realm='Fill In Realm Here',
                      uri='https://fqdn.to.site/content',
                      user='username',
                      passwd='password')
proxy_support = urllib2.ProxyHandler({"https" : "http://fqdn.to.proxy:port"})
opener = urllib2.build_opener(proxy_support, authinfo)
fp = opener.open("https://fqdn.to.site/content")
open(r"path\to\output", "wb").write(fp.read())
0 голосов
/ 12 августа 2010

Вы можете попробовать это тоже: http://code.google.com/p/python-httpclient/

(также поддерживается проверка сертификата сервера.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...