Нужно перелогиниться на сайте, но проблема в том, что для авторизации нужно знать параметр ModdleSession в куки (причем для POST и GET запроса он разный).
Для первой авторизации я просто брал значение из браузера, но оно не подходит для следующих авторизаций. И ещё иногда выкидывает из аккаунта (из-за бездействия или из-за времени жизни сессии, я предполагаю).
Откуда вообще берется значение ModdleSession? Может я конечно не так понял, как это всё работает. Если кому не сложно, объясните пожалуйста.
s = requests.Session()
url = 'https://edu.susu.ru/login/index.php'
r = s.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
token = soup.find('input', dict(name='logintoken'))['value']
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q = 0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'ru,en;q = 0.9',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Content-Length': '82',
'Content-Type': 'application/x-www-form-urlencoded',
'Cookie': '_ym_uid=1566661886943408058; _ga=GA1.2.1158346338.1567506425; top100_id = t1.-1.894442075.1581325690213; _ym_d=1582540576; MoodleSession=m8g8sjd34q8grvitlkc0o95eh1',
'Host': 'edu.susu.ru',
'Origin': 'https://edu.susu.ru',
'Referer': 'https://edu.susu.ru/',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-User': '?1',
'Upgrade - Insecure - Requests': '1',
'User - Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 YaBrowser/20.3.1.195 Yowser/2.5 Safari/537.36'
}
headersGET = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q = 0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'ru,en;q = 0.9',
'Cache-Control': 'max-age = 0',
'Connection': 'keep-alive',
'Cookie': '_ym_uid=1566661886943408058; _ga=GA1.2.1158346338.1567506425; top100_id=t1.-1.894442075.1581325690213; _ym_d=1582540576; MoodleSession=mn7iirnibbhndi1ppfninich9o',
'Host': 'edu.susu.ru',
'Referer': 'https://edu.susu.ru/',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-User': '?1',
'Upgrade - Insecure - Requests': '1',
'User - Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 YaBrowser/20.3.1.195 Yowser/2.5 Safari/537.36'
}
data = {
'username': '***',
'password': '***',
'logintoken': token
}
d = s.post(url, data=data, headers=headers)
request = s.get('https://edu.susu.ru/', headers=headersGET)