Selenium Python中driver.delete_all_cookies()无法删除全部Cookie问题
我来帮你拆解下这个问题——你用delete_all_cookies()后还有Cookie留存,大概率是这几个原因导致的:
可能的问题根源
- 页面脚本自动重新生成Cookie
像walla.co.il这类网站,通常会加载大量统计、分析类的JS脚本,这些脚本往往会在页面运行时自动设置Cookie。你删除Cookie后立刻调用get_cookies(),很可能刚好赶上这些脚本又悄悄写入了新的Cookie。 - 非无痕模式启动的浏览器残留Cookie
如果你的Chrome不是以无痕模式启动,浏览器本身的缓存、甚至已安装的扩展程序都可能偷偷设置或保留Cookie,这些Cookie不在Selenium初始操作的范围内。 delete_all_cookies()的作用域限制
这个方法只能删除当前页面所在域的Cookie,如果页面里有iframe加载了其他子域/外部域的内容,那些域的Cookie不会被删除(不过你打印出来的应该还是当前主域的Cookie)。
对应的解决办法
1. 删除后跳转空白页再检查
删除Cookie后立刻跳转到空白页,避开原页面脚本的自动生成逻辑:
from selenium import webdriver driver = webdriver.Chrome(executable_path= "C:\\Chrome\\chromedriver.exe") driver.get("http://www.walla.co.il") driver.delete_all_cookies() # 跳转到空白页,避免原页面脚本重新设置Cookie driver.get("about:blank") lst = driver.get_cookies() for cookie in lst: print(cookie)
2. 以无痕模式启动Chrome
用无痕模式启动浏览器,彻底隔离本地缓存和扩展程序的干扰:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("--incognito") driver = webdriver.Chrome(executable_path= "C:\\Chrome\\chromedriver.exe", options=chrome_options) driver.get("http://www.walla.co.il") driver.delete_all_cookies() driver.get("about:blank") lst = driver.get_cookies() for cookie in lst: print(cookie)
3. 等待页面完全加载后再删除
有时候页面还没加载完就执行删除操作,后续加载的脚本会重新设置Cookie,加个等待确保页面加载完成:
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By driver = webdriver.Chrome(executable_path= "C:\\Chrome\\chromedriver.exe") driver.get("http://www.walla.co.il") # 等待页面主体元素加载完成,确保所有脚本都已运行 WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, "body"))) driver.delete_all_cookies() driver.get("about:blank") lst = driver.get_cookies() for cookie in lst: print(cookie)
内容的提问来源于stack exchange,提问作者scorpio11
相关产品推荐
相关产品推荐

