Как правильно определить, поддерживаются ли прокси-серверы SOCKS запросами Python?

Современные версии requestsподдержка прокси HTTP(S) из коробки, а также прокси SOCKS. Однако последние являются "дополнительной функцией, которая требует установки дополнительных сторонних библиотек перед использованием". PySocks - это подходящая сторонняя библиотека на всех POSIX-подобных платформах, с которыми я знаком.

Я создаю приложение, которое использует requests с настраиваемым пользователем прокси и пытается выяснить, как проверить, будут ли прокси-серверы SOCKS поддерживаться локальной установкой requests.

Насколько я могу судить, requestsAPI не содержит встроенной функции для проверки этой поддержки, но когда библиотека пытается фактически использовать прокси-сервер 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, прежде чем использовать?

0 ответов

Другие вопросы по тегам