现代版本requests
支持开箱即用的 HTTP(S) 代理,以及SOCKS 代理。然而,后者是“一项可选功能,需要在使用前安装额外的第三方库。” PySocks是我熟悉的所有类 POSIX 平台上的适当第三方库。
我正在构建一个requests
与用户可配置代理一起使用的应用程序,并试图弄清楚如何测试本地安装的requests
.
据我所知,requests
API 不包含检查此支持的内置函数,但是当库尝试实际使用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
这似乎工作正常(用requests
2.22.0 测试),但似乎不是特别面向未来。
在使用之前,是否有更好(更简单、更安全、更面向未来)的方法来测试 SOCKS 支持requests
?