在python中为http连接指定用户名和密码的代理的最佳方法是什么?
Fat Bob
问问题
93235 次
6 回答
58
这对我有用:
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()
于 2008-08-29T07:30:35.720 回答
23
用这个:
import requests
proxies = {"http":"http://username:password@proxy_ip:proxy_port"}
r = requests.get("http://www.example.com/", proxies=proxies)
print(r.content)
我认为它比使用简单得多urllib
。我不明白为什么人们urllib
如此喜欢使用。
于 2017-01-29T11:19:39.493 回答
15
像这样设置一个名为http_proxy的环境变量:http://username:password@proxy_url:port
于 2010-10-15T14:06:56.003 回答
10
通过需要身份验证的代理的最佳方法是使用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 执行复杂操作的示例,您可能会发现这些示例也很有用。
于 2008-08-29T22:52:47.723 回答
3
或者,如果您想安装它,以便它始终与 urllib2.urlopen 一起使用(因此您不需要保留对 opener 的引用):
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()
于 2008-09-26T22:17:59.063 回答
2
这是使用urllib的方法
import urllib.request
# set up authentication info
authinfo = urllib.request.HTTPBasicAuthHandler()
proxy_support = urllib.request.ProxyHandler({"http" : "http://ahad-haam:3128"})
# build a new opener that adds authentication and caching FTP handlers
opener = urllib.request.build_opener(proxy_support, authinfo,
urllib.request.CacheFTPHandler)
# install it
urllib.request.install_opener(opener)
f = urllib.request.urlopen('http://www.python.org/')
"""
于 2016-03-25T08:37:45.853 回答