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

启用JavaScript的Selenium未忽略<noscript>标签引发跳转问题

触发重定向的页面代码:

<noscript>
<meta http-equiv="refresh" content="0;URL='https://www.flashscore.mobi/'" />
</noscript>
核心原因
  • 传统无头浏览器的解析逻辑差异:Chrome 112版本之前的默认无头模式(启动参数为--headless)对<noscript>标签的处理和有头浏览器不一致,即使JavaScript已处于启用状态,HTML解析阶段仍会读取标签内的meta refresh规则并触发跳转。
  • 页面加载时序差:HTML解析器的执行优先级高于JavaScript引擎初始化流程,部分场景下在JavaScript启用的状态标记生效前,解析器就已经识别到了<noscript>内的刷新规则,提前触发了重定向。
可用解决方案
  • 替换为新版无头模式:使用Chrome 112及以上版本时,将启动参数从--headless替换为--headless=new,新版无头模式的运行逻辑和有头浏览器完全对齐,会正常忽略JS启用状态下的<noscript>标签内容。
  • 全局禁用meta刷新:启动浏览器时添加--disable-meta-refresh参数,直接禁止所有页面的meta自动刷新逻辑,适合目标站点无正常meta刷新依赖的场景。
  • 页面加载阶段提前清除noscript标签:调用driver.get后立即执行JS脚本删除页面内所有noscript标签,避免解析到内部的刷新规则,示例代码如下:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--headless=new")
chrome_options.add_argument("user-agent=你配置的桌面端User Agent")
driver = webdriver.Chrome(options=chrome_options)

driver.get("https://www.flashscore.com/")
# 立即执行脚本移除noscript标签
driver.execute_script("document.querySelectorAll('noscript').forEach(el => el.remove())")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:36:02