Войдите в Powerschool, используя запросы Python

def get_Auth():

    USERNAME = User.get("1.0", END)
    PASSWORD = Pass.get("1.0", END)
    print(USERNAME)
    print(PASSWORD)

    url = 'https://ps.lphs.net/public/home.html'

    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.92 Safari/537.36 Vivaldi/1.6.689.34'}

    g = requests.get(url)

    soup = BeautifulSoup(g.content)

    'Find The Values'

    PSTOKEN = None
    CONTEXTDATA = None

    for input in soup.find_all('input')[0:1]:
        PSTOKEN = input.get('value')

        print(PSTOKEN)

    for input in soup.find_all('input')[1:2]:
        CONTEXTDATA = input.get('value')

        print(CONTEXTDATA)


    payload = {
              'pstoken': PSTOKEN,
              'contextData': CONTEXTDATA,
              'dbpw': '',
              'translator_username': '',
              'translator_password': '',
              'translator_ldappassword': '',
              'returnUrl': 'https://ps.lphs.net/guardian/home.html',
              'serviceName': 'PS Parent Portal',
              'serviceTicket': '',
              'pcasServerUrl': '\ /',
              'credentialType': 'User Id and Password Credential',
              'account': USERNAME,
              'pw': PASSWORD,
              'translatorpw': ''
              }

    r = requests.post(soup, data=payload)
    print(r)

Я пытаюсь войти в PowerSchool и вычеркнуть свои оценки со страницы, необходимой для входа. Я смотрел видео за видео и не могу понять, почему это не сработает. У меня есть окно Tkinter, которое запрашивает мое имя пользователя и пароль, а затем использует его для входа на этот сайт. Но когда я запускаю все это, я получаю исходный код страницы входа. Вот изображения вкладки Network под элементом inspect.

Заголовки запроса / данные формы

Я не уверен, что здесь не так, я уже давно изучаю это. Заранее спасибо!

1 ответ

У меня нет аккаунта для тестирования, но в вашем текущем подходе несколько ошибок:

  • пароль (pw поле) хешируется с помощью следующей функции (определенной здесь):

    function doPCASLogin(form)
    {
       var originalpw = form.pw.value;
       var b64pw = b64_md5(originalpw);
       var hmac_md5pw = hex_hmac_md5(pskey, b64pw)
       form.pw.value = hmac_md5pw;
       form.dbpw.value = hex_hmac_md5(pskey, originalpw.toLowerCase())
       if (form.ldappassword!=null) {
         // LDAP is enabled, so send the clear-text password
         // Customers should have SSL enabled if they are using LDAP
         form.ldappassword.value = originalpw; // Send the unmangled password
       }
    
       // Translator Login
       var translatorpw = form.translatorpw.value;
       var i = translatorpw.indexOf(";");
        if (i < 0) {
            form.translator_username.value = translatorpw;
            form.translator_password.value = "";
        }
        else {
            form.translator_username.value = translatorpw.substring(0,i);
            translatorpw = translatorpw.substring(i+1); // Get the password
            translatorpw2 = translatorpw;
            translatorpw = b64_md5(translatorpw);                   // Added in move to pcas
            form.translator_password.value = hex_hmac_md5(pskey, translatorpw);
            if (form.translator_ldappassword!=null) {
                // LDAP is enabled, so send the clear-text password
                // Customers should have SSL enabled if they are using LDAP
                form.translator_ldappassword.value = translatorpw2; // Send the pw for LDAP
            }
        }
    
        return true;
    }
    
  • Вы не можете иметь одинаковые значения токенов каждый раз, когда делаете запрос. Вы должны получить значения токенов из реальной формы. Это означает, что вам нужно сначала "ПОЛУЧИТЬ" home.htmlИзвлеките значения токенов, а затем используйте их в своем запросе "POST".

Для второй проблемы, вы можете попробовать такие вещи, как mechanize или же mechanicalSoup это автоматически заполнит остальные поля формы. Они, однако, не могут выполнять JavaScript, что довольно важно в данном конкретном случае.

Если вы хотите избежать всех этих проблем, посмотрите на автоматизацию браузера и selenium пакет

Другие вопросы по тегам