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)