如何使用 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 通过 SSL 连接到远程 PostgreSQL 数据库