我试图使用请求登录我的学校的网站,但它没有通过登录页面,也没有返回密码保护页面中的内容。它所做的就是返回登录页面的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,它工作起来非常简单。
发布于 2017-05-27 22:58:32
尝试设置自定义标头,因为某些站点拒绝默认请求代理
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检查是否有任何额外的参数与您的post请求一起发送,如果有,也在有效负载中发送。
https://stackoverflow.com/questions/33818206
复制相似问题