根据教程在代码中设置代理(我的梯子 http 端口是 8001)
proxies = {'https': 'https://127.0.0.1:8001', 'http': 'http://127.0.0.1:8001'}
然后通过 requests 包进行网络请求
print(requests.get(url=url, headers=headers, proxies=proxies).text) // 报错
结果报错
Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1129)'))
但是取消设置代理后通过下面的方式又可以正常请求到资源
print(requests.get(url=url, headers=headers).text) // 能获取到 html 资源
这是什么原因呢? 如果我用 scrapy 框架的话,那应该是在中间件中配置代理还是不配置呢
1
qtoq126 OP 还发现一个问题就是如果程序中代理用 socks5 协议是可以返回数据的
``` proxies = {'socks5': 'https://127.0.0.1:8001', 'socks5': 'http://127.0.0.1:8001'} ``` 但是用 http 的不行 |
2
ysc3839 2022-03-18 23:32:48 +08:00 via Android 1
你的代理服务器不支持用 https 协议连接吧?你写 https://代表用 https 协议连接代理服务器,这里应该写 http://
这个错误信息大概是发送了 https 数据给了 http 服务器,然后被断开连接了。 |
3
qtoq126 OP @ysc3839 我的代理服务器里默认有三个端口,一个 Socks5 端口( 1081 ),一个 HTTP 端口( 8001 ),一个 PAC 服务器端口( 7777 )
|
4
linuxyz 2022-03-19 19:51:04 +08:00
`proxies = {'https': 'http://127.0.0.1:8001', 'http': 'http://127.0.0.1:8001'}`
你把代理都改成 `http://127.0.0.1:8001` 或者 `proxy: 'socks5://127.0.0.1:1081'` or `proxy: 'http://127.0.0.1:8001'` |