Я работаю над проектом, которому необходимо получить доступ к веб-странице с помощью механизма с прокси-сервером socks. Немного покопавшись, я придумал следующий код:
def create_connection(address, timeout=None, source_address=None):
sock = socks.socksocket()
sock.connect(address)
return sock
CRAWLER_SOCKS_PROXY_HOST = '0.0.0.0'
CRAWLER_SOCKS_PROXY_PORT = 1080
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, CRAWLER_SOCKS_PROXY_HOST, CRAWLER_SOCKS_PROXY_PORT)
socket.socket = socks.socksocket
socket.create_connection = create_connection
Что действительно позволяет мне получить доступ к веб-странице, используя прокси-носки, которые я создал с помощью файла ssh -f -N -D 1080 user@host
.
После этого я понял, что Celery не может подключиться к моему брокеру Redis, выдавая Connection closed unexpectedly
ошибки, поэтому я убил процесс ssh и подтвердил, что виновата конфигурация socks прокси-сервера. Полученная ошибка: Cannot connect to redis://127.0.0.1:6379//: Error connecting to SOCKS5 proxy 0.0.0.0:1080: [Errno 111] Connection refused.
Итак, мой вопрос: есть ли способ установить прокси-носки для механизации, но не затрагивая другие части кода? Я подозреваю, что если я попытаюсь использовать модуль запросов, он также будет использовать прокси-сервер, что не входит в мои намерения. Мне просто нужен прокси для конкретного вызова.