如何使用SSL创建python websocket并在其中使用cookie?

时间:2016-11-17 23:23:45

标签: python ssl websocket

有一种方法可以使用SSL参数创建websocket,如下所示。

ws = create_connection("ws://{0}/socket{1}".format(ip_addr, cookie),
                       sslopt={"cert_reqs": ssl.CERT_NONE,
                               "check_hostname": False,
                               "ssl_version": ssl.PROTOCOL_TLSv1})

从示例here开始,创建websocket连接的方法之一如下所示。但是,没有给出如何传递SSL参数,如上所述?

使用带有SSL参数的'WebSocketApp'以及将cookie传递给它的方法是什么?

if __name__ == "__main__":
    websocket.enableTrace(True)
    if len(sys.argv) < 2:
        host = "ws://echo.websocket.org/"
    else:
        host = sys.argv[1]
    ws = websocket.WebSocketApp(host,
                                on_message=on_message,
                                on_error=on_error,
                                on_close=on_close)
    ws.on_open = on_open
    ws.run_forever()

1 个答案:

答案 0 :(得分:2)

  • 我想出了将cookie传递给连接的方法,如下所示。 cookie在URL本身中编码。注意:请参阅服务器实现的URL组件。 ip_addr,port和cookie可以是本地参数。

    url = "ws://{0}:{1}/socket{2}".format(str(ip_addr), str(port), cookie)
    

    创建websocket连接时传递此URL。请参阅原始问题以查看URL的传递位置。

  • 我还发现一个答案传递来自参考here

    的SSL参数
    import ssl
    
    ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE,
                       "check_hostname": False,
                       "ssl_version": ssl.PROTOCOL_TLSv1})
    

这些变化都适用于我的情况。