python - 来自带有请求的文件的代理

标签 python proxy

<分区>

如何使用带有请求的文本文件中的代理? 文件中的代理采用以下格式: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]))

关于python - 来自带有请求的文件的代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30566786/

相关文章:

python - 妖娆专属类

http - X-Forwarded-Host header 的实际用法?

http - 是否可以更改 nginx 中 proxy_pass 网关关闭时返回的 HTTP 状态代码?

node.js - 我应该如何处理 CONNECT 事件?

html - Outlook 网络客户端 html 电子邮件图像和 ImageProxy.mvc

python - Django 查询集注释字段为列表/查询集

python - 如何简化 sympy 中的 sqrt 表达式

python - Pandas:根据另一列向后填充缺失值

python - 如何禁用警告 "tensorflow:Method (on_train_batch_end) is slow compared to the batch update (). Check your callbacks"

ios - PAC 获取失败,出现错误 [NSURLErrorDomain :-1003]