特定网站无法在Headless模式运行?Selenium代码适配求助
解决无头模式访问目标网站失败的修改方案
问题根源
目标网站通过检测浏览器特征识别出了无头模式,进而限制了访问。无头Chrome的默认配置和正常浏览器存在多处差异,比如User-Agent标识、默认窗口尺寸等,这些差异很容易被网站的反爬机制捕捉。
需要补充的配置项
给ChromeOptions添加以下配置,模拟正常浏览器的运行环境:
- 设置与正常Chrome一致的User-Agent,避免被识别为无头模式
- 指定标准窗口尺寸,无头模式默认窗口过小,易触发检测
- 禁用暴露无头模式的特殊参数
- 明确启用JavaScript(虽默认开启,但显式指定更稳妥)
修改后的完整代码
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.headless = True # 模拟正常Chrome的User-Agent标识 options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36") # 指定常规窗口大小 options.add_argument("window-size=1920,1080") # 禁用暴露自动化控制的特征 options.add_argument("--disable-blink-features=AutomationControlled") # 关闭开发者模式提示 options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False) # 确保JavaScript功能启用 options.add_argument("--enable-javascript") driver = webdriver.Chrome(options=options) driver.get('https://cases.ra.kroll.com/Clovis/Home-DocketInfo') print(driver.title) driver.quit() # 用quit替代close,彻底关闭浏览器进程
额外提示
如果上述配置仍无法访问,可尝试添加--no-sandbox和--disable-dev-shm-usage参数,解决部分环境下无头模式的运行限制;若网站有更复杂的指纹检测(如WebGL、字体特征),则需要进一步模拟对应细节,但上述配置已覆盖绝大多数常见的无头模式检测场景。
内容的提问来源于stack exchange,提问作者ScottyCov
相关产品推荐
相关产品推荐

