Как получить доступ к конкретному URL после аутентификации с помощью urllib2? - PullRequest
0 голосов
/ 31 октября 2018

Я пытался создать себе собственное приложение, которое бы каждый день показывало мне план замещения школы (когда учителя болеют или отсутствуют). План всегда находится на

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 после входа в систему. Также вы можете получить доступ к плану только после аутентификации.

...