Библиотека запросов Python объединяет HTTPProxyAuth с HTTPBasicAuth - PullRequest
4 голосов
/ 27 января 2012

Здесь можно найти пример использования HTTPProxyAuth https://stackoverflow.com/a/8862633

Но я надеюсь, что приведу пример использования с HTTPProxyAuth и HTTPBasicAuth IE. Мне нужно передать сервер, имя пользователя и пароль через прокси иимя пользователя и пароль для веб-страницы ...

Заранее спасибо.

Ричард

Ответы [ 3 ]

1 голос
/ 08 июня 2012

Для базовой аутентификации вы можете использовать модуль Httplib2 из python. Пример приведен ниже. Для более подробной информации проверьте это

>>>import httplib2

>>>h = httplib2.Http(".cache")

>>>h.add_credentials('name', 'password')

>>>resp, content = h.request("https://example.org/chap/2", 
"PUT", body="This is text", 
headers={'content-type':'text/plain'} )

Я не думаю, что Httplib2 обеспечивает поддержку прокси. Проверьте ссылку -

0 голосов
/ 09 февраля 2015

Это не красиво, но вы можете предоставить отдельные учетные данные BasicAuth как для Прокси, так и для URL-адресов страниц с ограниченным доступом.

Например:

proxies = {
 "http": "http://myproxyusername:mysecret@webproxy:8080/",
 "https": "http://myproxyusername:mysecret@webproxy:8080/",
}

r = requests.get("http://mysiteloginname:myothersecret@mysite.com", proxies=proxies)
0 голосов
/ 01 апреля 2014

К сожалению, HTTPProxyAuth является потомком HTTPBasicAuth и переопределяет его поведение (см. requests/auth.py).

Однако вы можете добавить оба требуемых заголовка к вашему запросу, создав новый класс, который реализует оба поведения:

class HTTPBasicAndProxyAuth:
    def __init__(self, basic_up, proxy_up):
        # basic_up is a tuple with username, password
        self.basic_auth = HTTPBasicAuth(*basic_up)
        # proxy_up is a tuple with proxy username, password
        self.proxy_auth = HTTPProxyAuth(*proxy_up)

    def __call__(self, r):
        # this emulates what basicauth and proxyauth do in their __call__()
        # first add r.headers['Authorization']
        r = self.basic_auth(r)
        # then add r.headers['Proxy-Authorization']
        r = self.proxy_auth(r)
        # and return the request, as the auth object should do
        return r
...