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

使用Selenium Webdriver访问NSEIndia站点仅加载一次即被拒绝访问

Selenium访问nseindia站点刷新被拒绝排查及解决方案

核心原因

nseindia站点有严格的反爬虫校验机制,会识别Selenium的自动化特征、异常请求头、会话上下文一致性,首次请求未触发严格校验,刷新后校验命中拦截规则直接返回访问拒绝。

排查步骤

  • 校验浏览器特征是否暴露:Selenium默认启动的Chrome会携带webdriver标识、自动化控制标记,站点可通过前端JS直接识别到非人工访问
  • 核对请求头参数合理性:原代码使用的Chrome 39版本UA已经发布超过10年,和当前主流浏览器版本严重不符,属于明显的异常请求特征
  • 检查会话上下文一致性:站点访问时会下发Cookies、CSRF令牌,刷新时如果请求没有携带完整的上下文参数,会被判定为非法请求
  • 验证IP访问频率:短时间内多次刷新请求,会触发站点的IP频率限制,导致临时封禁

修复方案

1. 优化Chrome启动参数,隐藏自动化特征

新增反检测启动参数,移除Selenium的默认标识,替换为和当前安装Chrome版本匹配的UA:

from webdriver_manager.chrome import ChromeDriverManager
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

opts = Options()
# 替换为你本地实际安装的Chrome对应版本UA,不要使用过老的UA
user_agent =  ('Mozilla/5.0 (Macintosh; Intel Mac OS X 14_4) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/124.0.0.0 Safari/537.36')
opts.add_argument(f'user-agent={user_agent}')
# 隐藏自动化控制标识
opts.add_argument('--disable-blink-features=AutomationControlled')
opts.add_experimental_option("excludeSwitches", ["enable-automation"])
opts.add_experimental_option('useAutomationExtension', False)
# 禁用沙箱、GPU加速等可能导致检测的参数
opts.add_argument('--no-sandbox')
opts.add_argument('--disable-gpu')
opts.add_argument('--disable-dev-shm-usage')

browser = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=opts)
# 执行CDP命令覆盖webdriver等指纹特征
browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
    'source': '''
        Object.defineProperty(navigator, 'webdriver', {get: () => undefined})
        window.navigator.chrome = {runtime: {}}
        Object.defineProperty(navigator, 'plugins', {get: () => [1, 2, 3]})
        Object.defineProperty(navigator, 'languages', {get: () => ['en-US', 'en']})
    '''
})

browser.get('https://www.nseindia.com/option-chain')
# 刷新测试
time.sleep(5)
browser.refresh()
time.sleep(1000)

2. 额外优化建议

  • 如果原生Selenium还是被拦截,可以直接使用undetected-chromedriver库,它默认修复了大部分Selenium的检测特征
  • 控制请求频率,两次刷新间隔至少保持30秒以上,避免触发IP频率限制
  • 首次请求成功后,可以把站点下发的Cookies保存下来,后续请求或者刷新前主动注入Cookies,保证会话上下文一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:15:04