Лучший способ пройти через прокси, требующий аутентификации, - это использовать 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 есть больше примеров того, как делать сложные вещи с помощью urllib2 , которые вы также можете найти полезными.