我尝试在启动 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 来完成上述操作。
对于火狐浏览器:
from selenium import webdriver
fp = webdriver.FirefoxProfile()
fp.set_preference("network.cookie.cookieBehavior", 2)
browser = webdriver.Firefox(firefox_profile=fp)
Network.cookie.cookieBehavior
的描述。
对于 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
。
将会是:
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)。
你只需要把那里的
{"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)
对于那些仍然遇到此问题的人: 最新的 Chrome 版本 (126.0.6478.127) 不允许您通过 Selenium 禁用 cookie。解决此问题的唯一方法是设置 chrome 版本。
Selenium 的文档并没有告诉你如何做到这一点。
所以 python 中的解决方案如下所示:
service = webdriver.ChromeService()
options = webdriver.ChromeOptions()
options.browser_version = '125'
options.add_experimental_option("prefs", {"profile.default_content_setting_values.cookies": 2})
my_browser = webdriver.Chrome(options=options, service=service)
请记住,您只能指定主要版本和以下内容:
stable: Current CfT version.
beta: Next version to stable.
dev: Version in development at this moment.
canary: Nightly build for developers.
esr: Extended Support Release (only for Firefox).