1 回答

TA貢獻(xiàn)1796條經(jīng)驗 獲得超4個贊
看起來https://inspire.flg360.co.uk/SignIn.php頁面發(fā)送的實際 POST 請求 還有一些需要的元素。也就是說,POST 數(shù)據(jù)實際上看起來像:
strForwardURL=&strEmail=abc%40123.com&intRememberMe=1&strResponse=fdb4c46c5d0eeab6133be193afc7897e
這些字段是strForwardURL,strEmail,intRememberMe,和strResponse。查看頁面上的其余代碼,當(dāng)您單擊提交按鈕時,它會觸發(fā)頁面上的這段 javascript:
function fncSignIn() {
var loginForm = document.getElementById("signinForm");
if (loginForm.strEmail.value == "") {
alert("Please enter your email address.");
return false;
}
if (loginForm.strPassword.value == "") {
alert("Please enter your password.");
return false;
}
var submitForm = document.getElementById("submitForm");
submitForm.strEmail.value = loginForm.strEmail.value;
if (loginForm.intRememberMe.checked) submitForm.intRememberMe.value = 1;
submitForm.strResponse.value = hex_md5(loginForm.strChallenge.value+hex_md5(loginForm.strPassword.value));
submitForm.submit();
}
在頁面的其他地方,您可以在strChallenge此處找到字符串:
<input type="hidden" name="strChallenge" value="1d989603e448a1a0559f08bdc83a15522fbc6c0404ca66acc4cdd7aafe4039359e2fb23b706d60a3">
(順便說一下,這個值在重新加載時會發(fā)生變化)
本質(zhì)上,它要求strChallenge字符串的 md5 十六進(jìn)制摘要與密碼的 md5 十六進(jìn)制摘要連接,而不是字符串形式的密碼。
在python中,它會是這樣的:
import hashlib
password = "abcdefg12345"
strc = "1d989603e448a1a0559f08bdc83a15522fbc6c0404ca66acc4cdd7aafe4039359e2fb23b706d60a3"
strc_joined = strc + hashlib.md5(password.encode("utf-8")).hexdigest()
strresponse = hashlib.md5(strc_joined.encode("utf-8")).hexdigest()
print(strresponse)
本例中的輸出為 0d289f39067a25430d4818fe38046372
將原始請求中的 postdata 變?yōu)椋?/p>
{"strForwardURL":"", "strEmail":"abc@123.com", "intRememberMe": 1, "strResponse": "0d289f39067a25430d4818fe38046372"}并且您應(yīng)該能夠登錄。每次您想抓取需要此特定登錄的頁面時,您應(yīng)該能夠簡單地strChallenge使用 BeautifulSoup4抓取,計算正確的strResponse,然后登錄。
添加回答
舉報