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

Posted

技术标签:

【中文标题】如何使用 SSL 创建 python websocket 并在其中使用 cookie?【英文标题】:How to create a python websocket with SSL and use a cookie in it? 【发布时间】:2016-11-17 23:23:45 【问题描述】:

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

ws = create_connection("ws://0/socket1".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】:

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

url = "ws://0:1/socket2".format(str(ip_addr), str(port), cookie)

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

我还找到了一个答案 pass the SSL parameters from a reference here

import ssl

ws.run_forever(sslopt="cert_reqs": ssl.CERT_NONE,
                   "check_hostname": False,
                   "ssl_version": ssl.PROTOCOL_TLSv1)

这两项更改都适用于我的情况。

【讨论】:

以上是关于如何使用 SSL 创建 python websocket 并在其中使用 cookie?的主要内容,如果未能解决你的问题,请参考以下文章

如何连接 Python IMAP4_SSL 和自签名服务器 SSL 证书?

如何在 python 2.7 中使用 ssl

如何使用 python 解码 SSL 证书?

如何使用 Python 通过 SSL 连接到远程 PostgreSQL 数据库

如何使用Python避免Selenium Webdriver中的SSL认证错误?

如何使用 Smack XMPP 库创建 SSL 连接?