如何使用带有请求的文本文件中的代理? 文件中的代理采用以下格式: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})
但是第一个不起作用并且给我一个错误。
这有什么变通方法吗?
答案 0 :(得分:1)
我的假设是由于不受信任的SSL证书而失败。
requests.exceptions.SSLError:[Errno 1] _ssl.c:503:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败
要解决此问题,请阅读以下post
但是,如果您收到任何类似的消息
与服务器的连接被拒绝。
可能由多种原因引起,例如防火墙阻塞端口或代理配置错误。无论如何,要查看程序中是否存在错误,请尝试在浏览器中使用代理(SSL)并上网。
关于你的第二个问题,这应该不是问题。
例如,文件proxies.txt
具有以下数据:
172.17.0.3:443
172.17.0.23:9443
172.17.0.34:80
然后,您可以根据端口号推断方案。以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]))