Не удается войти на сайт с помощью библиотеки запросов Python - PullRequest
0 голосов
/ 08 февраля 2019

edit Я считаю, что проблема заключается в том, что при первом открытии веб-сайта необходимо нажать кнопку «Принять нашу политику конфиденциальности ...».Сейчас я изучаю, как можно «щелкнуть» по этой кнопке с помощью запросов Python, однако эта кнопка вызывает функцию javascript, поэтому я не уверен, возможно ли это сделать только с помощью библиотеки запросов.

Я пытаюсь написать скрипт для этого сайта: https://rocket -league.com /

Мне нужно войти в систему, чтобы выполнить свои задачи, но у меня возникают проблемы при входе.

Мне кажется, что я учел все правильные параметры.Я извлекаю csrf_token динамически с помощью регулярных выражений.Может быть, мне нужно что-то сделать с куки-файлами, но я не уверен, что?

Это моя первая попытка написать скрипт, который взаимодействует с веб-сайтами, поэтому извините, если я наивен.

Я был бы благодарен за любые идеи, которые не являются скрытым способом сказать мне, что я тупой и / или ленивый.

Вот мой код:

import requests;
import re;

payload = {
    'csrf_token': '',
    'email': 'myemail',
    'password': 'mypassword',
    'submit': 'Login'
}

url = 'https://rocket-league.com/login'

with requests.Session() as s:
    r = s.get(url)

    m = re.search("<input type='hidden' name='csrf_token' value='(.+)'", r.text)
    if m: payload['csrf_token'] = m.group(1)
    else: print("couldnt find csrf_token")

    p = s.post('https://rocket-league.com/functions/login.php', data=payload)
    print(p.text)

При запуске этого кода выводится HTML-код, в котором все еще есть форма входа в систему, что означает, что я не вошел в систему.

Когда я вхожу в свой браузер с инструментами разработчика> сеть открыта, я получаю этоинформация для моего почтового запроса:

Заголовки:

Request URL: https://rocket-league.com/functions/login.php
Request method: POST
Status code: 302 Found
Version HTTP/2.0

Файлы cookie:

__cfduid: d2c83b2c9ad728195366656a56592f6d71549577451
acceptedPrivacyPolicy: 2.0
euconsent: BObnsHAObnsHAABABAENCF-AAAAkF7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_tphPhA
fantasy_rlcs_id: hA8fga9ghIgaFGA9
PHPSESSID: lrse3tgov95eg574sqga6la9jc

Параметры:

csrf_token: 3f2588113e8921f52dc3eb78e51246a1
email: myemail
password: mypassword
submit: Login

Вот фактический HTMLдля формы входа:

<form class="rlg-form" method="post" action="/functions/login.php">
<input type="hidden" name="csrf_token" value="3accad82ad0957cab634f805a7e28beb">
<input class="rlg-input" type="email" name="email" placeholder="Email" required="">
<input class="rlg-input" type="password" name="password" placeholder="Password" autocomplete="off" required="">
<fieldset class="rlg-checkbox">
<input type="checkbox" name="rememberme" id="rememberme-login">
<label for="rememberme-login">Remember me?</label>
</fieldset>
<input class="rlg-btn-primary" type="submit" name="submit" value="Login">
</form>
...