禁用Chrome/Firefox中Webdriver的Cookies

4
我正在尝试在启动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中实现上述功能。
4个回答

6
对于Firefox:
from selenium import webdriver

fp = webdriver.FirefoxProfile()
fp.set_preference("network.cookie.cookieBehavior", 2)

browser = webdriver.Firefox(firefox_profile=fp)

来源: 常见问题解答, 一个JS selenium cookie问题,以及关于Network.cookie.cookieBehavior的描述。


5

对于Chrome 45版本之后,您需要执行以下操作(@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

属性名称似乎仍然相同。您能确认这仍然有效吗?对我来说,在使用Robotframework的SeleniumLibrary(其内部使用Python)时,它不起作用。 - jotrocken
我已经亲自检查过,通过Python,这仍然适用于Chrome 67版本。 - jotrocken
对于遇到相同问题的所有人:在使用无头 Chrome 时,设置“prefs”不起作用,因为它不会暴露首选项处理 - jotrocken

4

这将是:

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,selenium 2.47)。


1
这个是否会阻止所有的Cookie?我看到它标记了“阻止站点设置任何数据”,但没有标记“阻止第三方Cookie和站点数据”。 - ohbrobig
1
谢谢。这很有帮助(我大部分都是正确的)。它实际上并没有阻止所有数据。Firefox似乎更为直接,而Chrome在阻止Cookie和跟踪方面有更多选项。我在chromedriver文档中找不到有关阻止第三方Cookie的任何信息(该文档相当稀疏)。 - ohbrobig
新的第三方Cookie阻止密钥是profile.cookie_controls_mode0 = 允许,1 = 阻止,2 = 隐身模式。 https://dev59.com/j6jka4cB1Zd3GeqPFN3b#67260066 - lsl

0

您只需要更改以下内容:{"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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接