如何通过 SOCKs 代理发出 HTTP 请求(只需使用 ssh -D
作为代理)?我试过将请求与 SOCK 代理一起使用,但它似乎不起作用(我看到了这个 pull request )。例如:
proxies = { "http": "socks5://localhost:9999/" }
r = requests.post( endpoint, data=request, proxies=proxies )
继续使用 requests 库会很方便,但我也可以切换到 urllib2,如果已知它可以工作的话。
最佳答案
自 SOCKS support has been added to requests 2.10.0 , 它非常简单,并且非常接近您所拥有的
安装
requests[socks]
:$ pip install requests[socks]
设置您的代理变量,并使用它:
>>> import requests >>> proxies = { "http":"socks5://localhost:9999", "https":"socks5://localhost:9999" } >>> requests.get( "https://api.ipify.org?format=json", proxies=proxies ).json() {u'ip': u'123.xxx.xxx.xxx'}
需要注意的几件事是不要在代理 URL 的末尾使用 /
,您也可以使用 socks4://
作为方案如果 SOCKS 服务器不支持 SOCKS5。
关于python - 通过 SOCKs 代理请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14998006/