为什么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
相关产品推荐
相关产品推荐

