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

为什么gog.com在chromedriver中加载异常,chromedriver是否可被检测?

问题1:同一网页在chromedriver和普通Chrome展示效果差异的原因

  • 最核心的原因是GOG网站自带反自动化检测机制,识别到你在使用chromedriver访问后,故意返回错乱的样式布局,阻止爬虫/自动化程序访问。
  • 其次是默认启动参数差异:chromedriver默认启动的是无个性化配置的干净浏览器实例,视口尺寸、设备像素比、缓存、Cookie、用户配置文件都和你日常使用的普通Chrome不一样,也可能触发样式适配异常。
  • 你对比的是返回的HTML内容差异,但网站可以针对检测到的自动化环境,动态返回不同的CSS规则或者不加载部分样式资源,这部分差异不会体现在HTML结构上,所以你肉眼比对HTML很难发现问题。

问题2:“除行为特征外无法识别chromedriver”的说法是否准确

该说法完全不准确,目前有大量静态特征可以直接区分chromedriver和普通Chrome,常见的识别点包括:

  • 浏览器全局属性差异:chromedriver默认启动的浏览器中,navigator.webdriver属性值为true,普通Chrome该值为false
  • 浏览器标识差异:chromedriver启动的实例会存在AutomationControlled的标记,还有部分特殊的全局变量、插件列表、指纹信息和普通Chrome有明显区别
  • 配置项差异:chromedriver默认关闭了很多普通Chrome默认开启的特性,反爬系统可以通过探测这些特性的开启状态判断是否为自动化环境

对应的修复方案

你可以通过修改启动参数屏蔽大部分检测特征,示例代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 屏蔽自动化受控标记
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
# 取消webdriver特征
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
# 设置和你本地一致的视口大小
chrome_options.add_argument("window-size=1920,1080")
# 也可以指定你本地的Chrome用户配置路径,进一步模拟真实环境
# chrome_options.add_argument(r"user-data-dir=C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data")

driver_xpath2 = "chromedriver.exe"
driver = webdriver.Chrome(executable_path=driver_xpath2, options=chrome_options)
# 执行CDP命令覆盖webdriver属性
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
    "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })
  """
})
driver.get("https://www.gog.com/")

如果还是存在检测,也可以直接使用第三方封装的屏蔽特征的库,不需要自己逐个配置参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:15:06