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

Python脚本连接Dexscreener WebSocket时遭遇HTTP 403拒绝错误

解决WebSocket连接HTTP 403错误的思路及修复方案

针对Dexscreener WebSocket连接返回403的问题,结合浏览器请求头对比,可从以下方向排查修复:

1. 补全缺失的请求头

浏览器请求中包含Sec-WebSocket-Extensions头,你的脚本未添加该字段,服务器可能以此作为校验项之一,需补充到headers中。

2. 对齐User-Agent版本

脚本使用的Chrome版本为122,而浏览器捕获的是126,服务器可能对UA版本有校验,建议统一为浏览器中的UA值。

3. 移除手动生成的Sec-WebSocket-Key

websockets库会自动生成并添加Sec-WebSocket-Key,手动设置可能导致服务器验证失败,建议删除该自定义头。

修复后的完整脚本

import asyncio
import websockets
import json

async def dexscreener_scraper():
    headers = {
        "Host": "io.dexscreener.com",
        "Connection": "Upgrade",
        "Pragma": "no-cache",
        "Cache-Control": "no-cache",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
        "Upgrade": "websocket",
        "Origin": "https://dexscreener.com",
        "Sec-WebSocket-Version": "13",
        "Accept-Encoding": "gzip, deflate, br, zstd",
        "Accept-Language": "en-US,en;q=0.9,ar;q=0.8",
        "Sec-WebSocket-Extensions": "permessage-deflate; client_max_window_bits"
    }
    uri = "wss://io.dexscreener.com/dex/screener/pair/solana/zcdaw3jpcqey8jyvxnvmqs2cu35cyddy4ot7v8ednhz"
    async with websockets.connect(uri, extra_headers=headers) as websocket:
        while True:
            message_raw = await websocket.recv()
            message = json.loads(message_raw)
            print(message)
            await asyncio.sleep(1)

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

额外排查点

若上述修改后仍返回403,可尝试:

  • 携带浏览器Cookie:打开对应页面,复制Cookie添加到headers中(格式:"Cookie": "xxx=xxx; yyy=yyy")
  • 切换网络环境:确认当前IP是否被服务器封禁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 04:57:10