在websocket连接中如何通过Steam进行身份验证?

时间:2018-08-04 15:54:00

标签: python websocket python-asyncio

我正在尝试自动与使用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地址吗?
我想念什么?

0 个答案:

没有答案