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

Python Selenium实现与chromedriver功能等效的firefoxdriver驱动函数

问题原因

Firefox的Options类不支持Chrome专属的add_experimental_option方法,同时用户目录配置、防自动化检测、保持浏览器不自动关闭的配置逻辑,火狐都有独立的实现方式,照搬Chrome的写法会直接触发属性错误。

修改后的完整代码
def get_firefoxdriver(headless = False):
    import os
    from selenium import webdriver
    from selenium.webdriver.firefox.options import Options
    options = Options()
    options.binary_location = '/usr/bin/firefox'
    # 火狐用户配置目录参数为 -profile
    options.add_argument('-profile=' + os.environ['HOME'] + '/.config/firefoxdriver')
    # 实现原有detach效果:脚本执行完后浏览器不自动关闭
    options.set_preference('keep_webdriver_alive', True)
    # 实现原有反自动化检测效果
    options.set_preference('dom.webdriver.enabled', False)
    options.set_preference('useAutomationExtension', False)
    options.headless = headless
    driver = webdriver.Firefox(executable_path='/usr/bin/geckodriver', options=options)
    # 额外隐藏webdriver特征,和Chrome版效果对齐
    driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
    return driver
核心修改点说明
  • 移除了所有Chrome专属的add_experimental_option调用,替换为Firefox支持的set_preference配置项
  • 用户数据目录启动参数从user-data-dir替换为火狐兼容的-profile
  • 新增keep_webdriver_alive配置实现和Chrome版detach完全一致的效果
  • 新增dom.webdriver.enabled等配置实现反自动化检测,和Chrome版的防检测功能对齐
  • 保留了原有无头模式、二进制路径、驱动路径的配置逻辑,功能完全等效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 03:27:03