本文目录导读:

在Python中删除指定Cookie,具体方法取决于你使用的HTTP库,以下是几种常见场景的实现方式:
使用 requests 库
import requests
# 创建一个会话
session = requests.Session()
# 先设置一个Cookie(模拟已有Cookie)
session.cookies.set('username', 'john', domain='.example.com')
# 方法1:直接删除指定Cookie
del session.cookies['username']
# 方法2:使用set方法设置过期时间(让Cookie失效)
session.cookies.set('username', '', expires=0, domain='.example.com')
# 验证删除结果
if 'username' in session.cookies:
print("Cookie仍然存在")
else:
print("Cookie已删除")
完整示例:
import requests
from http.cookiejar import Cookie
session = requests.Session()
# 模拟已有的一些Cookie
session.cookies.set('session_id', 'abc123', domain='.example.com')
session.cookies.set('user_token', 'xyz789', domain='.example.com')
session.cookies.set('theme', 'dark', domain='.example.com')
print("删除前所有Cookies:", list(session.cookies))
# 删除指定Cookie 'session_id'
del session.cookies['session_id']
print("删除后所有Cookies:", list(session.cookies))
# 输出: [Cookie(version=0, name='user_token', ...), Cookie(version=0, name='theme', ...)]
使用 Selenium WebDriver
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://example.com")
# 删除指定名称的Cookie
driver.delete_cookie("session_id")
# 或者删除所有Cookie
# driver.delete_all_cookies()
driver.quit()
使用 Flask 框架(服务端)
from flask import Flask, make_response
app = Flask(__name__)
@app.route('/delete-cookie')
def delete_cookie():
resp = make_response("Cookie已删除")
# 通过设置过期时间删除Cookie
resp.set_cookie('username', '', expires=0)
# 或者设置max_age=0
# resp.set_cookie('username', '', max_age=0)
return resp
if __name__ == '__main__':
app.run()
使用 http.cookiejar(底层API)
from http.cookiejar import CookieJar
from urllib.request import HTTPCookieProcessor, build_opener
# 创建Cookie Jar
cookie_jar = CookieJar()
opener = build_opener(HTTPCookieProcessor(cookie_jar))
# 模拟添加一些Cookie(实际项目中通过请求获取)
opener.open("http://example.com")
print("删除前:", list(cookie_jar))
# 删除所有Cookie
cookie_jar.clear()
# 或者删除指定域名的所有Cookie
# cookie_jar.clear(domain=".example.com")
# 或者删除指定名称的Cookie(需要遍历)
for cookie in list(cookie_jar):
if cookie.name == "session_id":
cookie_jar.clear(domain=cookie.domain, path=cookie.path, name=cookie.name)
print("删除后:", list(cookie_jar))
使用 httpx 库(现代HTTP库)
import httpx
# 创建客户端
with httpx.Client() as client:
# 模拟添加Cookie
client.cookies.set("token", "abc123", domain="example.com")
print("删除前:", client.cookies)
# 删除指定Cookie
del client.cookies["token"]
print("删除后:", client.cookies)
注意事项
- 删除时需要指定正确的domain和path,否则可能无法找到对应的Cookie
- 调用delete前确保Cookie存在,否则会抛出KeyError
- 在浏览器环境中(如Selenium),删除Cookie后需要刷新页面才能生效
- 服务端删除Cookie实际上是设置一个过期的Cookie,让浏览器自动清除
选择哪种方法取决于你的具体使用场景:
- 客户端请求:
requests或httpx - 浏览器自动化:Selenium
- 服务端响应:Flask/Django等框架
- 底层控制:
http.cookiejar