Python 以 javascript 形式登录网站

标签 python authentication python-requests

我正在尝试使用 Requests 登录我学校的网站,但它没有通过登录页面,也没有返回受密码保护的页面中的内容。它所做的只是返回登录页面的 HTML。 Twill 将不起作用,因为此页面需要 javascript。 . HTML 登录内容是

<!--box content-->

<div id="noscript" class="feedback-alert"> To sign in to PowerSchool, you must use a browser that supports and has JavaScript enabled. </div>
<fieldset id="login-inputs" class="hide">

    <div>
          <label>Username</label>
          <input type="text" id="fieldAccount" name="account" value="" size="39"  />
    </div>
    <div>
          <label>Password</label>
          <input type="password" name="pw" value="" size="39"  /><div id="login-help"><a href="/public/account_recovery_begin.html">Having trouble signing in?</a></div>
    </div>
    <div id="translatorInput">
          <label>Translator Sign In</label>
          <input type="password" name="translatorpw" value="" size="39"  />
    </div>
    <div class="button-row">
    <button type="submit" id="btn-enter" title="Sign In To PowerSchool Parent Access" value="Enter" border="0" >Sign In</button>
    </div>
</fieldset> 

  <!-- box content-->

我检查过 this answer

我当前的代码是

import requests
payload = {
    'account': 'username',
    'pw': 'password'
}
with requests.Session() as s:
    p = s.post('https://powerschool.-/public/home.html', data=payload)   
    print p.text

    r = s.get('https://powerschool.-/guardian/studentsched.html')
    print r.text

但我似乎无法登录该页面。我的问题是我是否应该有一个有效负载来按下“提交”按钮或其他东西?我试过 'action' : 'login' 之类的东西,但都没有用。另外,我不需要 translatorpw 所以我应该写 'translatorpw': '' 还是忽略它?显然我把我真实的用户名/密码放在笔记本电脑的程序中。提前致谢!

编辑:我刚刚使用了 Selenium,它运行起来非常容易。

最佳答案

尝试设置自定义 header ,因为某些网站拒绝默认请求代理

    import requests

     payload = {
    'account': 'username',
    'pw': 'password'
     }

     headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0'}     

with requests.Session() as s:
    p = s.post('https://powerschool.-/public/home.html', data=payload, headers=headers)   
    print p.text

    r = s.get('https://powerschool.-/guardian/studentsched.html', headers=headers)
    print r.text

检查是否有任何其他参数随您的发布请求一起发送,如果有,也将其发送到负载中。

关于Python 以 javascript 形式登录网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33818206/

相关文章:

python - 绘制正方形 Cartopy map

php - PHP 中的 JWT(JSON Web token ),无需使用第 3 方库。怎么签?

javascript - 制作一个简单的登录页面

Python 请求开启多个实例

python - celery :启动时启动任务

python - 为什么 curses 模块没有通过 pip 安装?

python - 如何在 python 中单击带有 Selenium 的复选框

php - PHP 中的外部 HTTP 身份验证

python - 使用 Python 请求对 magiccardmarket 进行 OAuth 身份验证

python - 在 "for"循环中一个一个添加数组元素?