Я написал скрипт на Python, извлекающий веб-страницу State of Health с некоторого оборудования, которое мы используем.Просматривая файлы HTML и javascript, было относительно легко получить то, что я хотел.Проблема в том, что я не могу завершить сеанс и удалить файлы cookie, чтобы веб-интерфейс мог использоваться другими пользователями до истечения времени моего сеанса.У меня нет возможности что-либо изменить на стороне сервера.
Что я делаю в основном:
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.