Как правильно определить, поддерживаются ли прокси-серверы SOCKS запросами Python?
Современные версии requests
поддержка прокси HTTP(S) из коробки, а также прокси SOCKS. Однако последние являются "дополнительной функцией, которая требует установки дополнительных сторонних библиотек перед использованием". PySocks - это подходящая сторонняя библиотека на всех POSIX-подобных платформах, с которыми я знаком.
Я создаю приложение, которое использует requests
с настраиваемым пользователем прокси и пытается выяснить, как проверить, будут ли прокси-серверы SOCKS поддерживаться локальной установкой requests
.
Насколько я могу судить, requests
API не содержит встроенной функции для проверки этой поддержки, но когда библиотека пытается фактически использовать прокси-сервер SOCKS5, возникает исключение.InvalidSchema("Missing dependencies for SOCKS support.")
.
Я придумал следующее заклинание, чтобы проверить, действительно ли requests
поддерживает прокси SOCKS до их использования...
try:
requests.adapters.SOCKSProxyManager('socks5://')
have_socks = True
except requests.exceptions.InvalidSchema:
have_socks = False
Кажется, это работает правильно (проверено с requests
2.22.0), но не особо рассчитан на будущее.
Есть ли лучший (более простой, безопасный, ориентированный на будущее) способ проверить поддержку SOCKS в requests
, прежде чем использовать?