如何使用Selenium Python自动接受各网站的Cookie弹窗
方案一:优化浏览器Cookie设置(适配Firefox/Chrome)
Firefox适配版
你之前用的network.cookie.cookieBehavior=2是拒绝所有Cookie,但脸书、Ins这类网站会强制检测用户的Cookie同意状态,哪怕浏览器允许Cookie,仍会弹出提示。改成自动接受所有Cookie+禁用隐私提示的组合设置:
from selenium import webdriver from selenium.webdriver.firefox.options import Options options = Options() # 自动接受所有Cookie(0=允许所有,1=仅允许来自当前站点,2=拒绝所有) options.set_preference("network.cookie.cookieBehavior", 0) # 禁用Cookie通知弹窗 options.set_preference("privacy.notification.enabled", False) # 隐藏网站隐私政策提示 options.set_preference("privacy.websites.hideTrackingPolicy", True) driver = webdriver.Firefox(options=options)
Chrome适配版
Chrome通过启动参数和实验性偏好设置直接跳过Cookie弹窗:
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() # 禁用弹窗和通知拦截 options.add_argument("--disable-popup-blocking") options.add_argument("--disable-notifications") # 强制允许所有Cookie,关闭Cookie提示 options.add_experimental_option("prefs", { "profile.default_content_setting_values.cookies": 1, "profile.block_third_party_cookies": False, "profile.cookie_controls_mode": 0 # 0=允许所有Cookie,无提示 }) driver = webdriver.Chrome(options=options)
方案二:通用Cookie弹窗自动点击脚本(兼容多数网站)
如果浏览器设置仍失效,写一个覆盖常见按钮的自动点击逻辑,适配多语言场景:
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 def accept_cookies(driver): # 常见的"同意Cookie"按钮文本(含多语言) accept_texts = ["Accept", "Accept All", "同意全部", "接受全部", "Accepter", "Akzeptieren"] # 常见的按钮定位规则 locators = [ (By.XPATH, f"//button[contains(text(), '{text}')]") for text in accept_texts ] + [ (By.ID, "accept-cookie"), (By.CLASS_NAME, "cookie-accept"), (By.XPATH, "//button[@aria-label='Accept cookies']") ] for locator in locators: try: button = WebDriverWait(driver, 5).until( EC.element_to_be_clickable(locator) ) button.click() break except: continue # 使用示例 driver = webdriver.Firefox() driver.get("https://facebook.com") accept_cookies(driver)
方案三:借助浏览器扩展自动处理
安装专门的Cookie自动同意扩展(比如"I Don't Care About Cookies"),在Selenium中加载扩展直接跳过弹窗:
Chrome加载扩展
options = Options() # 替换为本地扩展的.crx文件路径 options.add_extension("/your/path/I-Dont-Care-About-Cookies.crx") driver = webdriver.Chrome(options=options)
Firefox加载扩展
options = Options() # 替换为本地扩展的.xpi文件路径 options.add_argument("-install-global-extension=/your/path/I-Dont-Care-About-Cookies.xpi") driver = webdriver.Firefox(options=options)
内容的提问来源于stack exchange,提问作者rudeus123
相关产品推荐
相关产品推荐

