首页 > 解决方案 > 检测 Python 请求是否支持 SOCKS 代理的正确方法是什么?

问题描述

现代版本requests支持开箱即用的 HTTP(S) 代理,以及SOCKS 代理。然而,后者是“一项可选功能,需要在使用前安装额外的第三方库。” PySocks是我熟悉的所有类 POSIX 平台上的适当第三方库。

我正在构建一个requests与用户可配置代理一起使用的应用程序,并试图弄清楚如何测试本地安装的requests.

据我所知,requestsAPI 不包含检查此支持的内置函数,但是当库尝试实际使用SOCKS5 代理时,它会引发异常InvalidSchema("Missing dependencies for SOCKS support.")

我想出了以下咒语来尝试在requests使用它们之前测试是否支持 SOCKS 代理......</p>

try:
    requests.adapters.SOCKSProxyManager('socks5://')
    have_socks = True
except requests.exceptions.InvalidSchema:
    have_socks = False

这似乎工作正常(用requests2.22.0 测试),但似乎不是特别面向未来。

在使用之前,是否有更好(更简单、更安全、更面向未来)的方法来测试 SOCKS 支持requests

标签: pythonproxypython-requestssockspysocks

解决方案


推荐阅读