Python Запросы Вход в систему Запрос не работает - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь зайти на сайт, используя библиотеку запросов python.

Я проверил элементы входа на сайт сайта и посмотрел данные поста. -запрос. Затем из этих элементов я создал словарь полезной нагрузки для использования в пост-запросе.

Image of post-request data

Код, написанный из этого:

import requests
from bs4 import BeautifulSoup

BASE_URL = "https://sephir.ch/swissmem/user/lernendenportal/"
SEPHIR_LOGIN_URL = "https://sephir.ch/swissmem/user/lernendenportal/index.cfm"

LOGIN_UN = "MAIL"
LOGIN_PW = "PASSWORD"

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0'}

def _get_login_name():
    return LOGIN_UN


def _get_login_password():
    return LOGIN_PW


def login():
    payload = {
        'email': _get_login_name(),
        'passwort': _get_login_password()
    }

with requests.session() as s:
    # get cfid & cftoken
    r = s.get(SEPHIR_LOGIN_URL, headers=headers)
    soup = BeautifulSoup(r.content, 'html5lib')
    e = soup.find('iframe', attrs = {'id': 'mainFrame'})['src']
    cfid = e.split('cfid=')[1].split('&cftoken=')[0]
    cftoken = e.split('cftoken=')[1]
    payload["cfid"] = cfid
    payload["cftoken"] = cftoken

    # post request
    destination = ("https://sephir.ch/swissmem/user/lernendenportal/login_action.cfm?cfid=" + cfid +"&cftoken=" + cftoken)
    r = s.post(destination, data=payload, headers=headers)
    return r.text

if __name__ == "__main__":

    print(login())

I очевидно, заменил MAIL и PASSWORD с правильными учетными данными для входа в систему

Но я получаю следующее:

<script language="JavaScript">top.location='10_start/frameset_start.cfm?cfid=1724731&cftoken=6eda3a651549f4d2-103B4979-D0C0-5DDF-18F6E1B2C48C1CD4';</script>

Что мне нужно изменить, чтобы попасть на зарегистрированный сайт?

...