我编写了一个python脚本,可从我们使用的某些硬件中获取“健康状况”网页。查看HTML和javascript文件,获取我想要的内容相对容易。问题是我无法结束会话并删除cookie,因此在我的会话超时之前,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。
答案 0 :(得分:0)
“删除” cookie的常用方法是简单地将cookie的过期日期设置为过去的时间(许多系统可以将其设置为time = 0才可以使用)。我不熟悉cookiejar,但您可能需要研究此方法。