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

使用TradingView Widget调用搜索接口遇403 Forbidden问题求助

解决TradingView搜索接口403 Forbidden问题

核心原因

TradingView的公开搜索接口存在CORS限制和反爬校验机制:浏览器直接访问时会自动携带符合要求的请求头(如User-Agent、Referer),而AJAX或服务器直接调用缺少这些头,或被识别为非授权请求,导致返回403。

推荐解决方案:使用Charting Library内置搜索方法

既然你已拥有Charting Library API权限,官方提供的searchSymbols方法是最稳定、合规的方式,完全避免接口调用限制:

// 假设已完成Charting Library初始化,得到chart实例
chart.searchSymbols(
  'NISHIB',       // 要搜索的标的代码
  '',             // 交易所过滤(留空则全平台搜索)
  'crypto',       // 标的类型
  (searchResults) => {
    // 处理搜索结果
    if (searchResults.length > 0) {
      const targetSymbol = searchResults[0].symbol;
      // 将图表切换到匹配的标的
      chart.setSymbol(targetSymbol, () => {
        console.log('图表已切换至目标标的');
      });
    }
  }
);

临时前端方案:模拟浏览器请求头

如果必须调用公开搜索接口,可在AJAX请求中添加浏览器标准请求头(注意:该方法依赖TradingView反爬策略,随时可能失效,不建议生产环境使用):

function loadDoc() {
  const xhttp = new XMLHttpRequest();
  xhttp.onload = function() {
    document.getElementById("demo").innerHTML = this.responseText;
  }
  xhttp.open("GET", "https://symbol-search.tradingview.com/symbol_search/v3/?text=NISHIB&lang=en&search_type=crypto");
  // 添加浏览器标识头
  xhttp.setRequestHeader('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36');
  // 若你的域名在TradingView授权列表,添加Referer头
  xhttp.setRequestHeader('Referer', 'https://你的授权域名.com');
  xhttp.send();
}

生产环境稳定方案:服务器端代理

通过自己的服务器代理请求TradingView接口,规避浏览器CORS限制,同时可灵活设置请求头:

// Node.js/Express示例
const express = require('express');
const axios = require('axios');
const app = express();

app.get('/api/search-tradingview-symbol', async (req, res) => {
  try {
    const { text, lang, search_type } = req.query;
    const tvResponse = await axios.get('https://symbol-search.tradingview.com/symbol_search/v3/', {
      params: { text, lang, search_type },
      headers: {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
        // 可选:添加授权域名作为Referer
        'Referer': 'https://你的授权域名.com'
      }
    });
    res.json(tvResponse.data);
  } catch (err) {
    res.status(err.response?.status || 500).send(err.message);
  }
});

app.listen(3000, () => console.log('代理服务器运行在端口3000'));

前端调用代理接口即可:/api/search-tradingview-symbol?text=NISHIB&lang=en&search_type=crypto

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:52:38