如何清除urllib.request中的cookies(python3)

7 投票
1 回答
9531 浏览
提问于 2025-04-16 11:54

我在查看文档的时候,第一反应是调用 urllib.request.HTTPCookieProcessor().cookiejar.clear(),但是这样并没有成功。接下来我想,也许我需要创建一个子类,然后用一个 opener 来构建和安装它?我不知道怎么做,当然如果需要的话我可以去做,但我觉得这对于我认为应该是个简单操作来说,实在是太复杂了。

1 个回答

17

默认情况下,urllib.request 不会保存任何 cookies,所以也就没有什么可以清除的。如果你创建了一个包含 HTTPCookieProcessor 实例的 OpenerDirector,作为其中一个处理器,你需要清除这个实例的 cookiejar

文档中的示例
import http.cookiejar, urllib.request
cj = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")

如果你想清除 cj 中的 cookies,只需调用 cj.clear()

你尝试的调用 urllib.request.HTTPCookieProcessor().cookiejar.clear() 会创建一个新的 HTTPCookieProcessor 实例,这个实例会有一个空的 cookiejar,然后清除这个 cookiejar(反正它本来就是空的),最后又把整个东西丢掉,因为你并没有保存对任何创建的对象的引用——所以简单来说,这样做是没有任何效果的。

撰写回答