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

向NSE Option Chain API发送请求的正确方法是什么?

问题原因

不需要部署到受信任域名,问题出在请求缺少必要的会话凭证和请求头校验。
NSE的接口有两层基础反爬校验:

  • 所有API请求必须携带从NSE主站下发的合法会话Cookie,直接访问API接口会被判定为未授权访问,返回401
  • 请求头必须携带Referer字段,值设置为NSE主站地址,缺失的话也会被拦截
    你浏览器能正常访问是因为你之前访问过NSE主站,浏览器已经自动保存了有效Cookie,请求时会自动带上;在线Python工具偶尔能跑通是因为它的IP没被NSE临时封禁,且请求时恰好命中了无Cookie校验的临时窗口期。

修复后代码示例

import requests

# 先创建会话对象,自动管理Cookie
session = requests.Session()

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'en-US',
    # 新增Referer字段
    'Referer': 'https://www.nseindia.com/'
}

# 先请求主站获取Cookie
session.get('https://www.nseindia.com/', headers=headers)

url = "https://www.nseindia.com/api/option-chain-indices?symbol=NIFTY"
# 用带Cookie的会话请求API
res = session.get(url, headers=headers)

# 打印返回结果验证
print(res.json())

注意事项

  • 控制请求频率,不要短时间内多次请求,NSE对单个IP的请求频率限制比较严格,高频请求会触发IP封禁,导致长时间无响应
  • 如果出现401错误,可以重新创建会话对象,再次请求主站获取新的Cookie即可
  • 本地运行时不要使用公共代理,大部分公共代理IP已经被NSE拉黑,会直接被拦截

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 02:33:00