簡體   English   中英

通過請求從受密碼保護的網站獲取數據

[英]Getting data from password protected website via requests

我的業余時間是自由編輯,但是最近我工作的公司使他們的通知系統更加糟糕,這使我錯失了很多機會。 我決定嘗試創建一個簡單的python腳本,每分鍾左右拉動網站,檢查特定字段中的更改,然后將電子郵件發送到專用帳戶以通知我。 我從未使用過python,但是我陷入了困境,發現最好的選擇可能是requests庫。 但是,由於我的所有請求都只會導致登錄頁面,因此我很難獲得正確的身份驗證頁面。

該網站的工作方式如下(如果將其標記為垃圾郵件,我將丟失TLD):

  1. 員工前往whiteboard.cactusglobal
  2. 他們登錄並發送到whiteboard.cactusglobal / dashboard,其中包含我要閱讀的字段。

我嘗試了以下方法:

requests.get('https://whiteboard.cactusglobal.com/dashboard', auth=('user','pass'))

and are replaced with the appropriate values, but no dice. 其中被替換為適當的值,但沒有骰子。 我也嘗試過

requests.get('https://whiteboard.cactusglobal.com/dashboard', auth=HTTPDigestAuth('user','pass'))

這沒有幫助,並且

payload = {'user':'XXXXXXXX', 'pass':'XXXXXXX'}
requests.post('https://whiteboard.cactusglobal.com/dashboard', data=payload})

仍然沒有用。 如前所述,所有請求都給出403並返回登錄頁面。

我已經使用Burp從瀏覽器中捕獲了帶有我的登錄詳細信息的POST請求,希望它可以使您對問題有所了解,但是我對requests工作原理不了解。 這是請求(已刪除Cookie):

POST /dashboard?destination=dashboard HTTP/1.1
Host: whiteboard.cactusglobal.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://whiteboard.cactusglobal.com/
Content-Type: application/x-www-form-urlencoded
Content-Length: 125
Connection: close
Upgrade-Insecure-Requests: 1
name=XXXXXXXX&pass=XXXXXXXXXX&form_build_id=XXXXXXXXXX&form_id=XXXXXXXXXXXXX

很抱歉,如果我對它的理解更好,可以通過Google輕松地尋求幫助,但是由於我缺乏python的知識並且對HTTP請求的了解很少,因此我有太多的未知因素無法有效地解決問題。 謝謝您的幫助。

對我來說,它與python或HTTP請求無關。 網站whiteboard.cactusglobal不是API,而是網站。 這並不意味着您只能以編程方式訪問其頁面。 借助瀏覽器,它希望有一個真正的用戶與之交互。

所以對我來說,您需要的工具是Selenium 或任何用戶測試自動化工具。 這種工具可以讓您模擬一個瀏覽器,該瀏覽器可以訪問網站,重定向到日志頁面,並在相關字段中輸入身份驗證信息,所有這些都在Python內。

由於您的用例是基本的,因此,如果您了解基本的教程,尤其是如何填寫表格,您將很容易找到自己的方式:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM