Я пытался создать себе собственное приложение, которое бы каждый день показывало мне план замещения школы (когда учителя болеют или отсутствуют). План всегда находится на
https://ohmoor.de/iserv/plan/show/Vertretungsplan/S-2018-10-30.htm
, где ohmoor.de
- школьный сервер, а iserv
- портал.
В конце концов, я захотел пройти аутентификацию с urllib
на https://ohmoor.de/iserv/login
с моим именем пользователя и паролем. Как вы можете видеть при проверке веб-сайта, форма отправляет запрос GET для аутентификации ввода с фактическим пользователем. Я тогда, хотя я вошел в систему (после того, как также получил cookie) и попытался получить HTML-код из
https://ohmoor.de/iserv/plan/show/Vertretungsplan/S-2018-10-30.htm
, что привело к получению html-кода из формы входа. Есть идеи, почему это не работает и как это исправить?
Это код:
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
import requests
my_url = "https://ohmoor.de/iserv/plan/show/Vertretungsplan/S-2018-10-
30.htm"
payload = {
"username" : "<usernamehere>",
"Password" : "<passwordhere>"
}
headers = {
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
login_url = "https://ohmoor.de/iserv/login"
with requests.Session() as s:
r = s.get(login_url, data=payload)
cookies = r.cookies
r = s.get('https://ohmoor.de/iserv/plan/show/Vertretungsplan/S-2018-10-
30.htm', cookies=cookies)
print(r.text)
Аутентификация работала, так как я получил код состояния 200 при печати r после входа в систему. Также вы можете получить доступ к плану только после аутентификации.