我正在尝试自动与使用websockets的网站进行交互。从理论上讲,我需要做的就是通过Steam进行身份验证,然后发送1个数据,但是我在进行身份验证时遇到了麻烦。
我设法建立连接。但是,在我发送Steam令牌(复制我在浏览器的devtools中看到的内容)后,它答复我未登录。
下面是我当前拥有的代码。在本地它根本不起作用。但是,在repl.it(在线编辑器)上,它具有应有的效果,但Websocket仍然答复我未登录。
代码:
import asyncio
import websockets
import json
import time
import sys
token = "YOUR_STEAM_TOKEN_HERE"
adress = 'wss://eu.pug.champ.gg/socket.io/?EIO=3&transport=websocket'
authtemplate = '42["authenticate",{{"token":{0}}}]'
rolesupdatetemplate = '42["updateAvailability",{0}]'
async def add(roles):
async with websockets.connect(adress) as websocket:
await websocket.send(authtemplate.format(token))
roles_string = json.dumps(roles)
await websocket.send(rolesupdatetemplate.format(roles_string))
asyncio.get_event_loop().run_until_complete(add({'roles': ['roamer', 'pocket'], 'captain': False})
)
一些额外的信息:
正常情况下,与开发人员工具连接的websocket与我在代码中使用的websocket相比,有一个额外的参数。额外的参数是:sid = ....
但是,手动添加它会给我错误代码400。
我尝试查找方法,但找不到任何答案。我需要发送cookie吗?
我需要以其他方式而不是手动方式获取Websocket地址吗?
我想念什么?