You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过Main.js或vendor.js获取网站Socket.io认证所需参数?

Socket.io客户端认证连接断开问题排查

我尝试做Socket.io客户端认证已经有段时间了,每次连接都会立刻断开,需要获取开发者工具里的相关信息来排查。目标网站没有公开API,但我的操作符合服务条款,属于合法行为。我怀疑是不是漏了某些参数,想问问能不能通过Main.js或vendor.js找到认证必需的信息。

以下是我使用的代码:

import socketio
import json

sio = socketio.Client(ssl_verify=False,logger=True,engineio_logger=True)

@sio.event
def connect():
    print("Connected!")
    sio.emit('auth',{"token": "hshdjdjjdjdjdndhdhdhdhdhdysbsbdbdshd)
    sio.emit(json.dumps({"authorization":{"session":"gdioebrvrjdbdbdbendbdhd5LZ3NtB3h","isDemo":False}}))

@sio.event
def connect_error(data):
    print("The connection failed!\n\n" + data)

@sio.event
def disconnect():
    print("Disconnected!")


@sio.on('*')
def catch_all(event,data):
    pass



@sio.on('handshake')
def on_message(data):
    print('Handshake',data)
    sio.emit("instruments/update",{"asset":"GBPUSD","period":60})
    sio.emit("indicator/list")
    sio.emit("drawing/load")
    sio.emit("pending/list")
    sio.emit("chart_notification/get")
    sio.emit("depth/follow","GBPUSD")
    sio.emit("tick")
    sio.emit("settings/store",{"chartId":"graph","settings":{"chartId":"graph","chartType":2,"currentExpirationTime":0,"isFastOption":False,"isFastAmountOption":False,"isIndicatorsMinimized":False,"isIndicatorsShowing":True,"isShortBetElement":False,"chartPeriod":4,"currentAsset":{"symbol":"GBPUSD"},"dealValue":1000,"dealPercentValue":1,"isVisible":True,"timePeriod":60,"gridOpacity":8,"isAutoScrolling":1,"isOneClickTrade":True,"upColor":"#0FAF59","downColor":"#FF6251"}})
if __name__ == '__main__' :
    sio.connect('https://ws.quotex.io/socket.io/', transports=['websocket'])
    sio.wait()

排查步骤与解决方案

1. 先修复代码里的明显错误

  • auth事件中的token字符串缺少闭合引号,应改为:"hshdjdjjdjdjdndhdhdhdhdhdysbsbdbdshd"
  • Socket.io的emit方法无需手动用json.dumps序列化参数,直接传字典即可,第二个emit的正确写法是:
    sio.emit('authorization', {"session":"gdioebrvrjdbdbdbendbdhd5LZ3NtB3h","isDemo":False})
    

2. 从Main.js和vendor.js提取认证逻辑

要找到正确的认证参数和流程,可按以下方法操作:

  • 关键词搜索:在两个JS文件中搜索socket.emit、auth、authorization、handshake等关键词,定位网站原生客户端发送的认证事件格式、顺序,以及携带的额外参数(比如时间戳、签名、关联的请求头参数)
  • 跟踪连接流程:找到网站初始化Socket连接的代码,查看连接时是否携带额外查询参数,或者是否在连接前有HTTP请求获取临时token/session
  • 对比浏览器请求:打开浏览器开发者工具的Network面板,过滤WebSocket连接,对比原生客户端发送的第一条消息格式、参数结构和发送顺序,和自己的代码做匹配

3. 关键注意事项

  • Socket.io的事件名必须和服务端要求完全一致,包括大小写
  • 部分服务端会校验连接请求头(如User-Agent、Cookie),可将浏览器中的请求头复制到代码中,在connect时添加:
    sio.connect('https://ws.quotex.io/socket.io/', transports=['websocket'], headers={
        'User-Agent': '你的浏览器User-Agent',
        'Cookie': '网站的会话Cookie'
    })
    
  • 确保使用的session/token有效,未过期且格式正确

内容的提问来源于stack exchange,提问作者Exboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 07:15:32