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

如何用Selenium Python配置Chrome全局禁用Cookie并设站点例外

问题描述

在爬虫项目中,使用Selenium和Python尝试全局拦截弹窗,当前ChromeOptions配置能拦截部分弹窗,但导致部分站点无法加载。同时尝试全局禁用Cookie并为特定站点(https://www.misterspex.de/、https://www.kabum.com.br/)设置例外,但配置后例外站点仍空白显示。

原配置代码:

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--window-size=1920,1080")
chrome_options.add_argument("--start-maximized")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--disable-infobars")
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument('--disable-notifications')
chrome_options.add_argument("--disable-plugins")
# 原代码此处存在多余括号,属于语法错误
chrome_options.add_experimental_option("prefs", {
    "profile.default_content_setting_values.cookies": 2,
    "profile.default_content_setting_values.javascript": 1,
    "profile.managed_default_content_settings.notifications":2,
    "profile.managed_default_content_settings.popups":2,
    "profile.block_third_party_cookies": True,
    "profile.default_content_setting_values.plugins": 1,
})

尝试的无效例外配置:

"profile.default_content_setting_values.cookies": 2,
"profile.managed_default_content_settings.cookies":1,
"profile.content_settings.exceptions.cookies":{
     "https://www.misterspex.de/":{"setting":1},
     "https://www.kabum.com.br/":{"setting":1}
}
解决方案

要实现全局禁用Cookie并为特定站点设置例外,需遵循Chrome偏好设置的格式规范,避免配置冲突,以下是修正后的完整方案:

关键修正点

  1. 修复原代码中的语法错误(多余的括号)
  2. 统一Cookie权限配置,避免managed_default_content_settings与default_content_setting_values的规则冲突
  3. 修正例外站点的URL格式:Chrome要求例外规则需以[scheme]://[domain],*格式定义,确保匹配该域名下的所有子路径与请求

完整代码示例

from selenium.webdriver.chrome.options import Options
from selenium import webdriver

chrome_options = Options()
# 基础窗口与性能配置
chrome_options.add_argument("--window-size=1920,1080")
chrome_options.add_argument("--start-maximized")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--disable-infobars")
chrome_options.add_argument("--disable-extensions")

# 弹窗与通知拦截配置
chrome_options.add_argument('--disable-notifications')
chrome_options.add_experimental_option("prefs", {
    # 全局禁用Cookie(2=阻止)
    "profile.default_content_setting_values.cookies": 2,
    # 允许JavaScript执行
    "profile.default_content_setting_values.javascript": 1,
    # 全局拦截通知
    "profile.default_content_setting_values.notifications": 2,
    # 全局拦截弹窗
    "profile.default_content_setting_values.popups": 2,
    # 阻止第三方Cookie(可根据需求调整)
    "profile.block_third_party_cookies": True,
    # 允许插件运行
    "profile.default_content_setting_values.plugins": 1,
    # 为特定站点设置Cookie例外(1=允许)
    "profile.content_settings.exceptions.cookies": {
        "https://www.misterspex.de,*": {"setting": 1},
        "https://www.kabum.com.br,*": {"setting": 1}
    }
})

# 初始化Chrome驱动
driver = webdriver.Chrome(options=chrome_options)

# 测试例外站点加载情况
driver.get("https://www.misterspex.de/")
# 可添加显式等待确保页面加载完成
# from selenium.webdriver.support.ui import WebDriverWait
# WebDriverWait(driver, 10).until(lambda d: d.title != "")
print(f"页面标题: {driver.title}")

driver.quit()

额外注意事项

  • 若部分站点仍无法加载,可尝试移除--disable-plugins参数,部分站点依赖特定插件组件完成渲染
  • 若遇到意外弹窗,可结合Selenium的Alert类做兜底处理,但全局配置优先级更高
  • 确保Chrome浏览器与ChromeDriver版本严格匹配,版本不兼容会导致配置不生效

内容的提问来源于stack exchange,提问作者Swati Mishra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:38:16