Как определить аутентифицируемый прокси для Python http соединение?

Оператор ввода для числа пропускает ведущие пробелы, поэтому вы можете просто прочитать число в цикле:

while (myfile >> a)
{
    // ...
}
50
задан Stu Thompson 17 September 2008 в 07:54
поделиться

3 ответа

Это работает на меня:

import urllib2

proxy = urllib2.ProxyHandler({'http': 'http://
username:password@proxyurl:proxyport'})
auth = urllib2.HTTPBasicAuthHandler()
opener = urllib2.build_opener(proxy, auth, urllib2.HTTPHandler)
urllib2.install_opener(opener)

conn = urllib2.urlopen('http://python.org')
return_str = conn.read()
57
ответ дан HongboZhu 7 November 2019 в 20:54
поделиться

Лучший способ пройти прокси, который требует аутентификации, использует urllib2 для создания пользовательского новичка URL, затем с помощью этого для выполнения всех запросов, Вы хотите пройти прокси. Отметьте, в частности, Вы, вероятно, не хотите встраивать пароль прокси в URL или исходный код Python (если это не просто быстрый взлом).

import urllib2

def get_proxy_opener(proxyurl, proxyuser, proxypass, proxyscheme="http"):
    password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
    password_mgr.add_password(None, proxyurl, proxyuser, proxypass)

    proxy_handler = urllib2.ProxyHandler({proxyscheme: proxyurl})
    proxy_auth_handler = urllib2.ProxyBasicAuthHandler(password_mgr)

    return urllib2.build_opener(proxy_handler, proxy_auth_handler)

if __name__ == "__main__":
    import sys
    if len(sys.argv) > 4:
        url_opener = get_proxy_opener(*sys.argv[1:4])
        for url in sys.argv[4:]:
            print url_opener.open(url).headers
    else:
        print "Usage:", sys.argv[0], "proxy user pass fetchurls..."

В более сложной программе, можно разделить эти компоненты как соответствующие (например, только с помощью одного менеджера паролей в течение времени жизни приложения). Документация Python имеет [еще 112] примеры того, как сделать сложные вещи с urllib2, который Вы могли бы также найти полезным.

9
ответ дан gz. 7 November 2019 в 20:54
поделиться

Или если Вы хотите установить его, так, чтобы это всегда использовалось с urllib2.urlopen (таким образом, Вы не должны сохранять ссылку на новичка вокруг):

import urllib2
url = 'www.proxyurl.com'
username = 'user'
password = 'pass'
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
# None, with the "WithDefaultRealm" password manager means
# that the user/pass will be used for any realm (where
# there isn't a more specific match).
password_mgr.add_password(None, url, username, password)
auth_handler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
print urllib2.urlopen("http://www.example.com/folder/page.html").read()
3
ответ дан iChux 7 November 2019 в 20:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: