使用cookiejar删除cookie /结束会话

时间:2018-12-17 09:22:19

标签: python cookies cookiejar

我编写了一个python脚本,可从我们使用的某些硬件中获取“健康状况”网页。查看HTML和javascript文件,获取我想要的内容相对容易。问题是我无法结束会话并删除co​​okie,因此在我的会话超时之前,Web界面可供其他用户使用。我无法更改服务器端的任何内容。

我正在做的基本上是:

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
url=mydataurl
headers={"Authorization:"username:encrytptedpassword","Cookie":"user=username; password="encryptedpassword"}
# Both Authorization and Cookie need to be set to go further
data="something"

req=urllib2.Request(url,data,headers)
connection=urllib2.urlopen(req)
response=connection.read()

# Now I have what I want in response and can work on that. 
# But the server thinks I am still active and does not let anybody else in

# So I call what is called when I press logout on the web page:

url=logouturl
headers={}
data=""
req=urllib2.Request(url,None,headers)
connection=urllib2.urlopen(req)
logoutresponse=connection.read()

#and just in case

headers={}
cj.clear()
cj.clear_session_cookies()
url="http://myserver/index.htm"
req=urllib2.Request(url,None,headers)
connection=urllib2.urlopen(req)
logoutresponse=connection.read()

connection.close()

我在做错什么事情来摆脱本次会议中的cookie吗?我也尝试关闭所有已启动的三个连接,但无济于事。

我可以在正在运行脚本的计算机上的浏览器中打开网页,然后注销并在另一台计算机上打开该页面后立即进行。如果我运行脚本,则必须等待几分钟以使服务器超时,然后才能再次登录。

当然,可能是服务器也在做其他事情以保持会话正常运行,如果这样的话,我可能不走运。

我更喜欢使用内置库,目前无法升级使用python 3。

1 个答案:

答案 0 :(得分:0)

“删除” cookie的常用方法是简单地将cookie的过期日期设置为过去的时间(许多系统可以将其设置为time = 0才可以使用)。我不熟悉cookiejar,但您可能需要研究此方法。