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元素下的Network选项卡的图片。
我不确定这里有什么问题,我现在已经研究了一段时间了。 提前谢谢!
答案 0 :(得分:2)
我没有要测试的帐户,但您当前的方法有多种错误:
通过以下函数(已定义here)对密码(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
package。