Удалить куки / завершить сеанс, используя cookiejar - PullRequest
0 голосов
/ 17 декабря 2018

Я написал скрипт на 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.

1 Ответ

0 голосов
/ 17 декабря 2018

Обычный способ «удалить» куки-файлы - просто установить дату истечения срока действия куки-файла на время в прошлом (многие системы могут просто установить для него время = 0, которое должно работать).Я не знаком с cookiejar, но вы можете посмотреть на этот метод.

...