SOCKS Proxy с Python

Я использую следующий код для прокси моего трафика в моем приложении Django через прокси socks,

def bind_proxy_port(enable=True):
    try:
        if enable == True:
            socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 8080)
            socket.socket = socks.socksocket
        return True
    except:
        raise Exception("unable to set proxy 127.0.0.1:8080")

Трафик, который я посылаю через него, является трафиком HTTPS. Однако это приводит к тому, что трафик к Rabbit-MQ также будет передаваться через прокси, что нарушает работу приложения. Есть ли способ определить только один порт назначения для прокси и / или любое другое решение?

1 ответ

Предполагая, что вы используете один из SocksiPy вилки. Давайте рассмотрим эту версию: https://github.com/Anorov/PySocks

Вы можете попытаться унаследовать от socks.socksocket ( https://github.com/Anorov/PySocks/blob/1.5.0/socks.py) и переопределите его connect метод https://github.com/Anorov/PySocks/blob/1.5.0/socks.py и может быть некоторыми другими, в зависимости от того, что вам нужно в вашем приложении.

В свой пользовательский класс вы можете добавить дополнительную логику, которая будет использовать прокси только для указанного набора портов и в противном случае прибегнуть к неизмененной версии сокета (см. Эти строки https://github.com/Anorov/PySocks/blob/1.5.0/socks.py)

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