如何在Chrome中通过Selenium WebDriver启用Tampermonkey扩展?
解决Selenium启动Chrome时Tampermonkey扩展不加载的问题
下面是几种可靠的解决方法,按场景选择即可:
方法1:直接加载Tampermonkey的CRX安装包
这是最直接的方式,手动指定扩展文件让Selenium加载:
- 先下载Tampermonkey的CRX文件(确保版本与你的Chrome浏览器匹配,可从Chrome应用商店获取)
- 在代码中通过
ChromeOptions添加扩展:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 替换为你本地Tampermonkey CRX文件的绝对路径 chrome_options.add_extension('/Users/xxx/Downloads/tampermonkey.crx') driver = webdriver.Chrome(options=chrome_options) driver.get('https://example.com')
注意:如果CRX版本和Chrome不匹配,会出现加载失败的提示,此时需要下载对应版本的CRX文件。
方法2:加载Chrome用户数据目录
如果你的本地Chrome已经安装并启用了Tampermonkey,直接复用现有用户数据目录即可保留所有扩展和配置:
- 找到Chrome的用户数据目录:
- Windows:
C:\Users\<你的用户名>\AppData\Local\Google\Chrome\User Data - Mac:
~/Library/Application Support/Google/Chrome - Linux:
~/.config/google-chrome
- Windows:
- 在代码中配置使用该目录:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 替换为你的用户数据目录路径,可指定具体profile(比如Default或Profile 1) chrome_options.add_argument(r'--user-data-dir=C:\Users\YourName\AppData\Local\Google\Chrome\User Data') # 如果有多个用户配置,加上这条指定profile # chrome_options.add_argument('--profile-directory=Profile 1') driver = webdriver.Chrome(options=chrome_options) driver.get('https://example.com')
注意:启动Selenium前要关闭所有正在运行的Chrome进程,否则会因资源占用导致加载失败。
方法3:通过Chrome DevTools协议动态安装扩展
适合需要在运行时动态添加扩展的场景:
from selenium import webdriver driver = webdriver.Chrome() # 读取CRX文件的二进制数据并转为十六进制 with open('/path/to/tampermonkey.crx', 'rb') as f: crx_hex_data = f.read().hex() # 使用CDP命令安装扩展 driver.execute_cdp_cmd('Browser.installExtension', { 'extension': crx_hex_data, 'allowFileAccess': True }) driver.get('https://example.com')
常见问题排查
- 版本匹配问题:确保Chrome浏览器、ChromeDriver、Selenium三者版本完全兼容,版本不兼容会导致扩展加载异常
- 无头模式限制:旧版Chrome的
--headless模式不支持扩展,需改用--headless=new(Chrome 112+版本支持) - 权限不足:部分扩展需要额外权限,可添加
--allow-extensions-file-access参数开放权限
内容的提问来源于stack exchange,提问作者Roy idiot
相关产品推荐
相关产品推荐

