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

Python3连接WebSocket遇HTTP 403错误请求技术协助

解决WebSocket连接HTTP 403错误

出现HTTP 403错误,是因为服务器对WebSocket握手请求做了校验,拒绝了无合法请求头的客户端连接。网页端能正常连接是因为浏览器会自动携带必要的请求头,而websockets库默认不会添加这些头。

解决方法是在建立连接时手动添加模拟浏览器的请求头,比如User-Agent和Origin:

import asyncio
import websockets

async def handler(websocket):
    while True:
        message = await websocket.recv()
        print(message)

async def main():
    url = "wss://io.dexscreener.com/dex/screener/pairs/h6/1?rankBy[key]=volume&rankBy[order]=desc&filters[buys][h1][min]=100&filters[sells][h1][min]=100&filters[liquidity][min]=500&filters[pairAge][max]=1&filters[chainIds][0]=bsc"
    # 添加模拟浏览器的请求头
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
        "Origin": "https://dexscreener.com"
    }
    async with websockets.connect(url, extra_headers=headers) as ws:
        await handler(ws)
        await asyncio.Future()  # run forever

if __name__ == "__main__":
    asyncio.run(main())

关键说明:

  • User-Agent:模拟浏览器标识,让服务器认为请求来自合法的浏览器客户端
  • Origin:指定请求来源,很多WebSocket服务器会校验这个字段,确保请求来自允许的域名

如果添加后仍然报错,可以尝试抓包网页端的WebSocket握手请求,对比请求头,补充缺失的字段(比如Sec-WebSocket-Protocol等),确保Python请求的头和浏览器完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:15:56