python - 通过 SOCKs 代理请求

标签 python python-requests

如何通过 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 , 它非常简单,并且非常接近您所拥有的

  1. 安装requests[socks]:

    $ pip install requests[socks]
    
  2. 设置您的代理变量,并使用它:

    >>> 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/

相关文章:

python - 使用初始化的父对象创建子类对象

python - 如何加速Python中集合字典的交集

python - 包含 """(三引号)的多行字符串

python - 如何在 Windows 上使用 Python 连接到经过 kerberos 身份验证的 REST 服务

python - 为什么使用多线程求和是正确的?

python - 如何 "switch to one of the Agg backends"?

Python - 如果服务器在 PUT 完成之前回答,则 HTTP 模块无法解析响应

python - 从 URL 获取路径并在 python 脚本中使用它

python - Flask/Werkzeug 请求对象表单参数

python - 如果设置最小超时值会发生什么?