使用autobahn和twisted保护代理后的websocket连接

2024-05-17 19:43:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图通过公司防火墙后面的websocket通过应用程序连接到

我使用安全的websockets,没有代理,一切正常。我找了些例子,但没有一个对我有用

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,则会发生一些错误

如何为安全WebSocket配置代理

PS:autobahn 19.10.1,twisted 19.7.0


Tags: fromselfipnone代理serverportfactory