Безопасное подключение через сокет через прокси с автобаном и витой - PullRequest
0 голосов
/ 03 октября 2019

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

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

from autobahn.twisted.websocket import WebSocketClientProtocol, \
    WebSocketClientFactory
from twisted.internet import ssl, reactor

class MyClientProtocol(WebSocketClientProtocol):

    def onConnect(self, response):
        pass

    def onConnecting(self, transport_details):
        return None  # ask for defaults

    def onOpen(self):
        pass

    def onClose(self, wasClean, code, reason):
        print(reason)


if __name__ == '__main__':
    server_ip = "example.com"
    server_port = 443
    proxy = {'host': 'proxy', 'port': 3128}  # <-- if proxy is not None, then connection is always lost with reason 'connection was closed uncleanly (None)'

    factory = WebSocketClientFactory(f"wss://{server_ip}:{server_port}")
    factory.protocol = MyClientProtocol
    factory.proxy = proxy
    reactor.connectSSL(server_ip, server_port, factory, ssl.ClientContextFactory())

    reactor.run()

Не похоже, что factory.proxy поддерживается, я не вижу попыток запросов в журналах прокси, скорее, если это не None, возникает какая-то ошибка.

Как настроить прокси для защищенных веб-сокетов?

PS: автобан 19.10.1, витая 19.7.0

...