как выяснить, как аутентифицировать себя, используя http запросы - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь войти на сайт, используя следующие запросы:

s = requests.Session()
login_data = {"userName":"username", "password":"pass", "loginPath":"/d2l/login"}
resp = requests.post("https://d2l.pima.edu/d2l/login?login=1", login_data)

, хотя я получаю ответ 200, когда я говорю

print(resp.content)
b"<!DOCTYPE html><html><head><meta charset='utf-8' /><script>var hash = window.location.hash;if( hash ) hash = '%23' + hash.substring( 1 );window.location.replace('/d2l/login?sessionExpired=0&target=%2fd2l%2ferror%2f404%2flog%3ftargetUrl%3dhttp%253A%252F%252Fd2l.pima.edu%253A80%252Fd2l%252Flogin%253Flogin%253D1' + hash );</script><title></title></head><body></body></html>" 

уведомление, что это говорит сеанс истекший. То, что я пробовал: выходить обратно и в реальном браузере, безуспешно. http basi c auth, безуспешно.

Я думаю, может быть, мне нужно авторизоваться на этом сайте, используя куки?

Если да, то как мне определить, какие куки отправлять?

Я пытался понять это, сказав

resp.cookies
Out[4]: <RequestsCookieJar[]> 

, разве это не должно давать мне имена файлов cookie? Я не уверен, что делать с таким выводом. Основная мысль: КАК Я УЗНАЮ, КАК АУТЕНТИФИЦИРОВАТЬ СЕБЯ НА ЭТОМ САЙТЕ? Помощь приветствуется. Я бы предпочел не использовать селен.

1 Ответ

0 голосов
/ 27 апреля 2020

После загрузки этой страницы https://d2l.pima.edu/d2l/login и просмотра ее источника вы увидите, что целевой путь POST равен /d2l/lp/auth/login/login.d2l. Попробуйте использовать это в качестве пути POST. Ваши другие поля выглядят в соответствии с ожиданиями формы.

Примечание: с python requests, если вы создаете объект сеанса, используйте его для выполнения ваших запросов:

resp = s.post(<blah blah>, login_data)

Сессия будет удерживайте любые файлы cookie, установленные сервером входа, и вы можете продолжать использовать объект s для отправки запросов в аутентифицированном сеансе.

...