Как правильно определить, поддерживаются ли прокси SOCKS с запросами Python? - PullRequest
0 голосов
/ 09 января 2020

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

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

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

...