Python 代理设置
通过环境变量或Python代码为Python程序设置代理,解决 Socks5 代理在请求 https 资源时失效的问题
通过环境变量或Python代码为Python程序设置代理,解决 Socks5 代理在请求 https 资源时失效的问题。
在 Shell 中设置环境变量
export HTTP_PROXY=socks5://127.0.0.1:1080
export HTTPS_PROXY=socks5://127.0.0.1:1080
在 Python 代码中设置
import os
os.environ['HTTP_PROXY'] = 'socks5://127.0.0.1:1080'
os.environ['HTTPS_PROXY'] = 'socks5://127.0.0.1:1080'
Socks5 代理的 BUG
Python 通过 urllib3 库进行网络请求,但是 https 协议的请求经过 socks5 代理时无法完成握手,会导致设置了代理也无法访问目标地址,需要将 socks5 协议的代理转换成 http 协议。
转换可以使用工具 privoxy 实现。
将配置中的地址改成 http 代理即可
import os
os.environ['HTTP_PROXY'] = 'http://127.0.0.1:8118'
os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:8118'