如何使用带有请求的文本文件中的代理?
文件中的代理采用以下格式:ip:port
所以我不能真正构建一个像 {'scheme' : 'scheme://ip:port'}
这样的字典
而且我需要使用同一个代理访问两个不同的站点,然后切换代理。其中一个站点使用 HTTP,另一个站点使用 HTTPS。
我尝试对 HTTP 请求执行此操作:
response = c.get(url, proxies = {'http': 'http://'+p})
这是 HTTPS 请求:
response = c.get(url, proxies = {'https': 'https://'+p})
但第一个不起作用并抛出错误。
有什么解决方法吗?
我的假设是它因不受信任的 SSL 证书而失败。
requests.exceptions.SSLError: [Errno 1] _ssl.c:503: error:14090086:SSL
routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
要解决此问题,请阅读以下内容 post
但是,如果您收到任何类似的消息
Connection to server refused.
可能是多种原因造成的,比如防火墙挡住了端口或者proxy配置不当。无论如何,要查看这是否是您程序中的错误,请尝试在您的浏览器中使用代理 (SSL) 并上网冲浪。
关于你的第二个问题,这应该不是问题。
例如,文件 proxies.txt
具有以下数据:
172.17.0.3:443
172.17.0.23:9443
172.17.0.34:80
然后,可以根据端口号推断scheme。以 443
结尾的端口是 HTTPS
是很常见的。
with open('proxies.txt', 'r') as data
lines = data.readlines()
proxies = {'http': [], 'https': []}
for line in lines:
ip_port = line.split(':')
ip, port = (ip_port[0], ip_port[1]) if len(ip_port) > 1 else (ip_port[0], 80)
scheme = 'http'
if port.endswith('443'):
scheme = 'https'
proxies[scheme].append(join([scheme, '://', ip, ':', port]))