使用Selenium实现Firefox浏览器zip文件自动下载并规避下载弹窗
解决方案
原因说明
你遇到弹窗的核心原因有两个:
- 仅配置了
application/zip这一种MIME类型,很多站点返回zip文件时实际用的是application/x-zip-compressed、application/octet-stream等其他MIME类型,不在白名单内就会触发确认弹窗 - 缺失了禁止打开选项、强制绕过确认的关键配置项,且旧写法在新版Selenium中兼容性不足
修改后的完整配置
from selenium import webdriver from selenium.webdriver.firefox.options import Options # 新版Selenium推荐用Options加载配置,兼容性更好 options = Options() profile = webdriver.FirefoxProfile() # 原有基础配置 profile.set_preference('browser.download.folderList', 2) # 使用自定义下载目录 profile.set_preference('browser.download.manager.showWhenStarting', False) profile.set_preference('browser.download.dir', '/tmp') # 可替换为自己的下载路径 # 核心修改:补充所有常见zip相关MIME类型,同时配置保存和打开都不询问 zip_mime_types = 'application/zip,application/x-zip,application/x-zip-compressed,application/octet-stream' profile.set_preference('browser.helperApps.neverAsk.saveToDisk', zip_mime_types) profile.set_preference('browser.helperApps.neverAsk.openFile', zip_mime_types) # 新增关键配置,彻底禁用弹窗 profile.set_preference('browser.helperApps.alwaysAsk.force', False) profile.set_preference('browser.download.forbid_open_with', True) # 禁用"打开"选项,直接下载 profile.set_preference('browser.download.manager.alertOnEXEOpen', False) profile.set_preference('browser.download.manager.focusWhenStarting', False) profile.set_preference('browser.download.manager.useWindow', False) profile.set_preference('browser.download.manager.showAlertOnComplete', False) profile.set_preference('browser.download.manager.closeWhenDone', False) profile.set_preference('services.sync.prefs.sync.browser.download.manager.showWhenStarting', False) profile.set_preference('pdfjs.disabled', True) # 把profile加载到options中启动 options.profile = profile driver = webdriver.Firefox(options=options)
可选排查步骤
如果修改后仍有弹窗,可以手动确认目标站点的实际MIME类型:
- 用本地Firefox手动触发一次下载,按F12打开开发者工具,切换到「网络」标签,找到下载请求的响应头,查看
Content-Type的实际值,把该值补充到上面的zip_mime_types中即可。
内容的提问来源于stack exchange,提问作者akhil seeramsetty
相关产品推荐
相关产品推荐

