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

URL浏览器可正常访问 但Python requests/urllib/webdriver请求超时

问题成因

NSE(印度国家证券交易所)的接口配置了反爬规则,直接发起API请求会被服务端拦截:拦截后服务端不会返回4xx/5xx错误码,只会挂起TCP连接不返回响应内容,最终表现就是不设置超时参数时请求会一直处于加载状态。
这类拦截的核心校验逻辑有两点:

  • 请求携带的User-Agent不能是Python类库默认的爬虫标识
  • 请求会话必须有前置访问NSE站点的Cookie记录,模拟真实用户从页面跳转请求API的路径
可用实现代码

requests 版本

import requests

# 初始化会话自动维护Cookie
s = requests.Session()
# 配置和普通浏览器一致的基础请求头
s.headers.update({
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
    "Accept": "application/json, text/plain, */*",
    "Referer": "https://www.nseindia.com/option-chain"
})
# 先访问期权链页面,获取服务端下发的合法Cookie
s.get("https://www.nseindia.com/option-chain", timeout=10)
# 再请求目标API接口
resp = s.get("https://www.nseindia.com/api/option-chain-indices?symbol=BANKNIFTY", timeout=10)
resp.raise_for_status()
data = resp.json()
print(data)

urllib 版本

import urllib.request
import json
import http.cookiejar

# 初始化Cookie处理器维持会话状态
cookie_jar = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie_jar))
# 配置请求头
opener.addheaders = [
    ("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"),
    ("Accept", "application/json, text/plain, */*"),
    ("Referer", "https://www.nseindia.com/option-chain")
]
# 先访问页面获取合法Cookie
opener.open("https://www.nseindia.com/option-chain", timeout=10)
# 请求目标API
with opener.open("https://www.nseindia.com/api/option-chain-indices?symbol=BANKNIFTY", timeout=10) as resp:
    data = json.loads(resp.read().decode())
    print(data)
注意事项
  • 必须先访问站点页面拿Cookie,不能直接请求API地址,这是之前方案失效的核心原因
  • 所有请求建议设置10秒左右的超时时间,避免网络异常导致程序永久卡死
  • 如果请求仍然失败,可以在请求头中补加和自己浏览器一致的Accept-Language参数,不要随意添加br压缩相关的编码配置,避免解压失败
  • 短时间内不要高频请求接口,否则会被IP封禁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:48:18