【问题标题】:Disabling Cookies in Webdriver for Chrome/Firefox在 Chrome/Firefox 的 Webdriver 中禁用 Cookie
【发布时间】:2015-11-29 15:52:12
【问题描述】:

我试图在启动 Chrome 或 Firefox 浏览器时禁用所有 cookie。我已经看过这里的示例,但它们都是用 Java 编写的,并且某些 Selenium 代码与 Python 不同。

ChromeOptions options = new ChromeOptions();  
Map prefs = new HashMap();  
prefs.put("profile.default_content_settings.cookies", 2);  
options.setExperimentalOptions("prefs", prefs); 
driver = new ChromeDriver(options);  

我想在 Python 中完成上述操作。

【问题讨论】:

    标签: python selenium cookies selenium-webdriver


    【解决方案1】:

    对于火狐:

    from selenium import webdriver
    
    fp = webdriver.FirefoxProfile()
    fp.set_preference("network.cookie.cookieBehavior", 2)
    
    browser = webdriver.Firefox(firefox_profile=fp)
    

    来源:FAQJS selenium cookie questionthe description of Network.cookie.cookieBehavior

    【讨论】:

      【解决方案2】:

      对于 45 版之后的 Chrome,您需要这样做(我认为 @alecxe 一直到 Chrome 45):

      selenium import webdriver
      
      chrome_options = webdriver.ChromeOptions()
      chrome_options.add_experimental_option("prefs", {"profile.default_content_setting_values.cookies": 2})
      
      driver = webdriver.Chrome(chrome_options=chrome_options)
      

      唯一有意义的变化是default_content_settings变成default_content_setting_values

      【讨论】:

      • 属性名好像还是一样。你能确认这仍然有效吗?对我来说,将 SeleniumLibrary 用于 Robotframework(内部使用 Python)时不会。
      • 我自己检查过,通过 Python 这仍然适用于 Chrome 版本 67。
      • 对于遇到相同问题的每个人:使用 headless chrome 时设置“首选项”不起作用,因为它不会暴露 preference handling
      【解决方案3】:

      应该是:

      from selenium import webdriver
      
      chrome_options = webdriver.ChromeOptions()
      chrome_options.add_experimental_option("prefs", {"profile.default_content_settings.cookies": 2})
      
      driver = webdriver.Chrome(chrome_options=chrome_options)
      

      经过测试 - 为我工作(Chrome 45,硒 2.47)。

      【讨论】:

      • 这会阻止所有 cookie 吗?我看到它标记了“阻止网站设置任何数据”,但没有标记“阻止第三方 cookie 和网站数据”
      • 谢谢。所以这有帮助(我大部分都是对的)。它实际上并没有阻止所有数据。 Firefox 似乎更直接,而 chrome 在阻止 cookie 和跟踪方面有更多选择。我在 chromedriver 文档中找不到任何关于阻止第三方 cookie 的内容(非常稀疏)。
      • 新的第三方 cookie 拦截键是 profile.cookie_controls_mode, 0 = allow, 1 = block, 2 = incognitostackoverflow.com/a/67260066
      【解决方案4】:

      你只需要把{"profile.default_content_setting_values.cookies": 2}改成{"profile.block_third_party_cookies": True}

      from selenium import webdriver
      
      chrome_options = webdriver.ChromeOptions()
      chrome_options.add_experimental_option("prefs", {"profile.block_third_party_cookies": True})
      
      driver = webdriver.Chrome(chrome_options=chrome_options)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-07
        • 1970-01-01
        • 1970-01-01
        • 2021-11-02
        • 1970-01-01
        • 2016-04-08
        相关资源
        最近更新 更多