一个 web 能连接但 Python 不能访问的 websocket 链接,是什么原理?

2023-06-10 13:18:31 +08:00
 tg11

链接地址如下:

wss://api.cotrans.touhou.ai/task/clipekg954dosmc01ll5xpyh1/event/v1

用 web 的在线调试工具,可以连接->接收参数->断开。

用 python 代码或 postman ,加上同样的请求头,连接超时。

是哪里做了验证?

3696 次点击
所在节点    Python
37 条回复
so1n
2023-06-10 14:29:49 +08:00
你是不是用了 socketio
tg11
2023-06-10 14:34:13 +08:00
@so1n 不清楚,服务端是一个网站上的。我只是尝试客户端连接。
Nazz
2023-06-10 15:57:57 +08:00
可能是 header 差异造成的,服务端有 check origin
tg11
2023-06-10 16:02:01 +08:00
@Nazz header 应该不会有差异吧,我完全复制的浏览器使用的 header 。以 cURL 复制也试过了
momocraft
2023-06-10 16:24:01 +08:00
2 个不好判断 完全有可能是 py 代码写错了
试试别的 cliient?
Nazz
2023-06-10 16:26:04 +08:00
连接超时是因为没使用代理
tg11
2023-06-10 16:30:19 +08:00
@Nazz 使用 clash 代理了,没用。
tg11
2023-06-10 16:30:42 +08:00
@momocraft postman 也不行啊
marshmallow
2023-06-10 16:34:19 +08:00
python 用了 http2 ,而浏览器降级到 http/1.1 了吧?
marshmallow
2023-06-10 16:38:44 +08:00
你看一下浏览器请求头,如果有 Connection: upgrade 和 Upgrade: websocket ,那就是用 http1.1 握手的。http2 版的 websocket 我还没有测过,只是我确定没有 Connection 和 Upgrade 头。
Nazz
2023-06-10 17:18:55 +08:00
@tg11 开了 clash 不意味着 websocket 能通过代理建立连接,关掉 clash 你会发现浏览器里面也会超时
Nazz
2023-06-10 17:24:40 +08:00
@marshmallow 好好看看 rfc6455 吧
Nazz
2023-06-10 18:12:04 +08:00
@tg11 使用 Clash X Pro 开启增强模式, 或许可行
tg11
2023-06-10 20:09:01 +08:00
@Nazz 我直接用的
websocket.enableTrace(True)
ws = websocket.WebSocket( http_proxy_host="127.0.0.1", http_proxy_port=7890)
ws.connect('wss://api.cotrans.touhou.ai/task/clipekg954dosmc01ll5xpyh1/event/v1')
所以肯定是走了代理的
tg11
2023-06-10 20:14:17 +08:00
@marshmallow python 的 websocket-client 是基于 http1.1 握手的。请求头确实有 Connection: upgrade 和 Upgrade: websocket 。
我在连接 ws 的时候手动添加这两个 header 也不管用。
对了,我在主楼留的链接,是可以直接访问的,你可以试试
tg11
2023-06-10 20:14:50 +08:00
@Nazz 我在主楼留下的链接地址是可以访问的,你可以尝试下
centralpark
2023-06-10 20:51:51 +08:00
可能是 tls 指纹
tg11
2023-06-10 21:34:57 +08:00
@centralpark 随便手撸一个 js 的 websocket 客户端,就不受 tls 指纹影响吗?
marshmallow
2023-06-10 21:46:21 +08:00
@Nazz 你好好看看 rfc8441 ,再来回复我吧
Nazz
2023-06-10 21:56:42 +08:00
@marshmallow 是我孤陋寡闻了,没见过 RFC8441 的 server 实现

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/947518

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX