成功的http请求响应101后切换到websocket连接的确切方法?

问题描述

我正在尝试使用 python 连接到 WebSocket,但对使 websocket 连接正常工作的确切转换过程感到困惑。

到目前为止,我已经成功地使用 requests 包发出了 http“升级”请求,并从服务器获得了 101 响应。

代码如下

import requests

cookies = {
    'lang': 'en','_ga': 'GA1.2.2001593629.1610867666','_gid': 'GA1.2.1826988459.1610867666','_gat_UA-171812727-1': '1','_ym_uid': '1610867667240953916','_ym_d': '1610867667','_ym_visorc_65463124': 'w','_ym_isad': '2','_gat_UA-171812727-2': '1',}

headers = {
    'Host': 'ws.website.com','Connection': 'Upgrade','Pragma': 'no-cache','Cache-Control': 'no-cache','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/87.0.4280.88 Safari/537.36','Upgrade': 'websocket','Origin': 'https://website.com','Sec-WebSocket-Version': '13','Accept-Encoding': 'gzip,deflate','Accept-Language': 'en-GB,en-US;q=0.9,en;q=0.8','Sec-WebSocket-Key': 'FMZPo/xOQ3NdTAIkH2hJaw==',}

response = requests.get('https://ws.website.com/socket.io/?EIO=3&transport=websocket',headers=headers,cookies=cookies,verify=False)

print(response.status_code)  # prints 101

令人困惑的是,当我在 WS 下检查 Chrome 的网络选项卡时,我看到标头中的请求 URL 是 wss://ws.website.com/socket.io/?EIO=3&transport=websocket。在 request.get() 中尝试使用 wss 方案时,我得到 400 响应。

那么我应该在发出升级请求时使用 http 方案并使用请求包,还是必须使用另一个包,如 websocket 并以 wss:// 开头发出请求??

在我提供的部分代码之后,是否有正确的方法进行 websocket 连接?

非常感谢您的帮助。

问候,

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)