首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python请求登录Powerschool

使用Python请求登录Powerschool
EN

Stack Overflow用户
提问于 2017-01-02 12:03:31
回答 1查看 528关注 0票数 1
代码语言:javascript
复制
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窗口,它会询问我的用户名和密码,然后用它来登录那个网站。但是当我运行它的时候,我得到的只是登录页面的源代码。这是inspect element下的Network选项卡的图片。

Request Headers / Form Data

我不知道这里出了什么问题,我已经调查了一段时间了。提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2017-01-02 12:14:18

我没有要测试的帐户,但在您当前的方法中有多个地方是错误的:

  • 密码(pw字段)通过以下函数(定义的here)进行散列:

函数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已启用,因此发送明文密码//如果客户使用LDAP,则应启用SSL //发送未损坏的密码} //翻译器登录var translatorpw = form.translatorpw.value;var i= translatorpw.indexOf(";");如果(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);//获取密码translatorpw2 = translatorpw;translatorpw = b64_md5(translatorpw);//在移动到pcas form.translator_password.value = hex_hmac_md5(pskey,translatorpw)中增加;如果(form.translator_ldappassword!=null) { // LDAP开启,则发送明文密码//如果客户使用LDAP form.translator_ldappassword.value =translatorpw2,需要开启SSL;//发送LDAP的pw }} return true;}

  • 您不能在每次请求时都有相同的token值。您必须从实际表单中获取令牌值。这意味着您需要首先“获取”home.html,提取令牌值,然后在"POST“请求中使用它们。

对于第二个问题,您可能想尝试像mechanizemechanicalSoup这样自动“自动填充”其余表单域的内容。但是,它们不能执行JavaScript,这在这种特殊情况下非常重要。

如果您想避免处理所有这些问题,可以研究一下浏览器自动化和selenium package

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41421212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档