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

使用Python实现Sony音频控制API WebSocket时遭遇403禁止错误

解决Python连接索尼Audio Control API WebSocket时的403 Forbidden问题

哦,这个问题我之前折腾过!索尼的那个Node.js示例看起来没做授权,但其实WebSocket握手阶段有隐藏的校验逻辑——它依赖特定的请求头,而Python的websocket-client库默认不会带上这些头,所以才会返回403。

问题原因

Node.js的ws库在发起WebSocket连接时,会自动带上一些符合设备预期的请求头(比如Origin和User-Agent),但Python的websocket-client默认没有这些配置,索尼的AV设备会因为缺少这些头拒绝连接。

修复步骤

你需要手动添加必要的请求头来模拟Node.js的请求:

  1. 首先确保导入ssl模块(你的原代码里用到了但没导入,会报错)
  2. 在connect方法里添加header参数,带上Origin和User-Agent

修改后的代码如下:

import ssl
from websocket_client import websocket

ws = websocket.WebSocket()
# 模拟Node.js请求的头信息,Origin要和设备IP对应
headers = {
    "Origin": "http://192.168.0.34:54480",
    "User-Agent": "Node.js/18.17.0"  # 可以换成你Node.js示例使用的版本号
}

try:
    ws.connect(
        "ws://192.168.0.34:54480/sony/avContent",
        sslopt={"cert_reqs": ssl.CERT_NONE},
        header=headers
    )
    print("连接成功!")
except Exception as e:
    print(f"连接失败:{e}")

如果还是不行,建议用抓包工具(比如Wireshark)捕获Node.js示例的WebSocket握手请求,把里面所有的请求头都照搬过来——索尼的设备对某些头的校验可能更严格,完全复刻就能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:22:34