第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Python 登錄一個棘手的網(wǎng)站

使用 Python 登錄一個棘手的網(wǎng)站

繁星點點滴滴 2021-11-16 16:29:13
我作為數(shù)據(jù)分析師從事數(shù)字營銷工作。我的部門使用第三方來幫助吸引更多客戶。這些第三方中的每一個都有一個網(wǎng)站,用于顯示他們?yōu)槲覀児編砹硕嗌倏蛻簟N业牟糠止ぷ魇菑拿總€網(wǎng)站收集數(shù)字并將它們放入報告中,這是一個漫長的手動過程。到目前為止,我已經(jīng)成功登錄了我們的一些第三方網(wǎng)站并提取了一些數(shù)據(jù)。但是,有一個網(wǎng)站我在登錄時遇到了一些問題... https://inspire.flg360.co.uk/SignIn.php。我還需要將會話重定向到另一個 URL 以從中抓取數(shù)據(jù)。我編寫了一些代碼,可以成功登錄到我需要從中獲取信息的其他網(wǎng)站。import requestsfrom bs4 import BeautifulSoupimport reusername = 'username'password = 'password'scrape_url = 'https://portal.mvfglobal.com/index.php/dashboard'login_url = 'https://portal.mvfglobal.com/index.php/login/login'login_info = {'login_name': username, 'login_pass': password}#Start session.session = requests.session()#Login using your authentication information.session.post(url=login_url, data=login_info)#Request page you want to scrape.url = session.get(url=scrape_url)soup = BeautifulSoup(url.content, 'html.parser')print(soup)但是,當(dāng)我嘗試使用相同的方法登錄https://inspire.flg360.co.uk/SignIn.php 時,我遇到了一些問題。import requestsfrom bs4 import BeautifulSoupusername = 'username'password = 'password'login_url = 'https://inspire.flg360.co.uk/SignIn.php'login_info = {'strEmail': username, 'strPassword': password}scrape_url = 'https://inspire.flg360.co.uk/AuthUser.php'#Start session.session = requests.session()#Login using your authentication information.session.post(url=login_url, data=login_info)#Request page you want to scrape.url = session.get(url=scrape_url)soup = BeautifulSoup(url.content, 'html.parser')print(soup)當(dāng)我檢查頁面元素時,我注意到 302 響應(yīng)重定向到https://inspire.flg360.co.uk/AuthUser.php。但是,當(dāng)我嘗試使用上面的代碼登錄時,我仍然遇到錯誤。我完全難倒任何想法?
查看完整描述

1 回答

?
SMILET

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,然后登錄。


查看完整回答
反對 回復(fù) 2021-11-16
  • 1 回答
  • 0 關(guān)注
  • 299 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號