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

如何使用Python Selenium绕过网站Cookie通知弹窗

原有方案失效原因
  • 代码逻辑顺序错误:先调用driver.get()加载完整页面后才添加Cookie,此时页面已完成初始化,Cookie同意弹窗已经触发渲染,后续添加Cookie再刷新也容易因为Cookie字段校验不通过被站点拦截。
  • 导出的Cookie格式不兼容:从主浏览器导出的CSV格式Cookie常丢失必填字段,或把布尔值、数字类型字段存为字符串,Selenium不会自动做类型转换,这类格式错误的Cookie会被站点判定为无效。
可行解决方案

方案1:直接定位弹窗同意按钮点击(稳定性最高)

不需要额外处理Cookie逻辑,等待弹窗的同意按钮加载完成后直接点击即可,适配绝大多数站点的Cookie弹窗场景,示例代码:

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
driver.get("https://www.antenne.de/programm/aktionen/pausenhof-konzerte/die-antenne-bayern-pausenhof-konzerte-2022/")

try:
    # 最长等待10秒,直到「同意所有Cookie」按钮可点击
    accept_btn = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, 'button[title="Akzeptieren"], button.consent-accept-all'))
    )
    accept_btn.click()
    # 等待弹窗消失后再执行后续自动化操作
    sleep(1)
except Exception:
    # 未检测到弹窗时直接跳过,不中断流程
    pass

# 后续自动化逻辑写在此处

如果上述选择器无法匹配到按钮,可打开浏览器开发者工具检查同意按钮的实际id、class属性,替换对应选择器即可。

方案2:修正Cookie导入逻辑(适合需要固定会话状态的场景)

如果需要复用预存的登录/同意状态,调整Cookie写入顺序、补全必填字段即可,示例代码:

from time import sleep
from selenium import webdriver
from csv import DictReader

driver = webdriver.Firefox()
# 先访问同域下的任意地址,初始化对应域名的Cookie存储,不要直接加载目标页面
driver.get("https://www.antenne.de/404")

def get_cookies_values(file):
    with open(file, encoding="utf-8-sig") as f:
        dict_reader = DictReader(f)
        list_of_dicts = list(dict_reader)
    return list_of_dicts

cookies = get_cookies_values("cookies.csv")

for i in cookies:
    cookie = {}
    for k, v in i.items():
        # 转换字段类型为Selenium要求的格式
        if k in ["secure", "httpOnly"]:
            cookie[k] = v.lower() == "true"
        elif k in ["expiry", "expires"] and v.isdigit():
            cookie["expiry"] = int(v)
        # 过滤浏览器导出的Selenium不识别的冗余字段
        elif k not in ["sameParty", "storeId", "id"]:
            cookie[k] = v
    # 补全域名配置,确保Cookie写入正确的域下
    if "domain" not in cookie:
        cookie["domain"] = ".antenne.de"
    try:
        driver.add_cookie(cookie)
    except Exception:
        # 跳过格式错误的无效Cookie
        pass

# Cookie全部写入完成后,再跳转至目标页面
driver.get("https://www.antenne.de/programm/aktionen/pausenhof-konzerte/die-antenne-bayern-pausenhof-konzerte-2022/")

方案3:修改浏览器启动配置(加载速度最快)

通过Firefox的首选项配置开启自动处理Cookie弹窗能力,从页面加载阶段就阻止弹窗弹出,示例代码:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

opts = Options()
# 开启Firefox原生Cookie横幅自动点击能力(支持Firefox 110及以上版本)
opts.set_preference("cookiebanners.service.mode", 1)
opts.set_preference("cookiebanners.bannerClicking.enabled", True)
opts.set_preference("network.cookie.cookieBehavior", 0)

driver = webdriver.Firefox(options=opts)
driver.get("https://www.antenne.de/programm/aktionen/pausenhof-konzerte/die-antenne-bayern-pausenhof-konzerte-2022/")
# 页面加载完成后不会弹出Cookie通知

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:01:07