Wget

只能通過 wget 的使用者名和密碼下載 HTTPS 網站?

  • February 14, 2018

我正在嘗試遞歸下載通常僅在您登錄時才可用的網站。

我有有效的使用者名和密碼,但問題是我需要通過網路界面登錄,所以使用--user=user and --password=password沒有幫助。

wget只下載一個帶有文字的網頁: 抱歉,此頁面不可用,您可能忘記登錄了?

是否可以下載?

即使在登錄頁面我也不能使用 –user, –password 因為沒有 FTP/HTTP 文件檢索登錄,如下所述man wget

--user=user
--password=password
   Specify the username user and password password for both FTP and
   HTTP file retrieval.

經典的圖形登錄就在那裡。

如果我嘗試這樣做:wget --save-cookies coookies --keep-session-cookies --post-data='j_username=usr&j_password=pwd' 'https://idp2.civ.cvut.cz/idp/Authn/UserPassword'。使用 POST 方法登錄並嘗試保存 cookie,cookie 文件為空,保存的頁面是一些錯誤頁面。

網址是https://idp2.civ.cvut.cz/idp/Authn/UserPassword。實際上,當我想登錄時,它會將我重定向到此頁面,當我成功登錄時,它會將我重定向回我之前所在的頁面或登錄後我想進入的某個頁面(例如:https://progtest.fit.cvut.cz/.

會話資訊可能保存在 cookie 中,以便您在登錄後導航到其他頁面。

如果是這種情況,您可以分兩步執行此操作:

  1. 在網站的登錄頁面上使用wget’s--save-cookies mycookies.txt和options 以及您的和選項--keep-session-cookies``--username``--password
  2. 在您嘗試檢索的後續頁面上使用wget‘選項。--load-cookies mycookies.txt

編輯

如果--passwordand--username選項不起作用,您必須找出登錄頁面發送到伺服器的資訊並模仿它:

  • 對於GET請求,您可以GET直接在 wget 必須獲取的地址中添加參數(確保正確引用&,=和其他特殊字元)。該網址可能看起來像https://the_url?user=foo&pass=bar.
  • 對於POST請求,您可以使用wget--post-data=the_needed_info選項在所需的登錄資訊上使用 post 方法。

編輯 2

看來您確實需要POST帶有j_usernameandj_password設置的方法。嘗試--post-data='j_username=yourusername&j_password=yourpassword選擇wget.

編輯 3

通過原始頁面,我能夠更多地了解正在發生的事情。話雖如此,我無法確保它有效,因為我沒有(也不想要)有效的憑據。

話雖如此,這就是正在發生的事情:

  1. 該頁面https://progtest.fit.cvut.cz/設置了一個PHPSESSIDcookie 並為您提供登錄選項。
  2. 點擊該login按鈕會發送一個請求,https://progtest.fit.cvut.cz/shibboleth-fit.php該請求接受 PHPSESSID cookie(不確定它是否使用它)並將您重定向到 SSO 引擎,其中包含專門為您設計的 url,如下所示:https://idp2.civ.cvut.cz/idp/profile/SAML2/Redirect/SSO?SAMLRequest=SOME_VERY_LONG_AND_UNIQUE_ID
  3. SSO 響應設置一個名為的新 cookie並將您重定向到再次將您_idp_authn_lc_key重定向到的頁面(真正的登錄頁面)https://idp2.civ.cvut.cz:443/idp/AuthnEngine``https://idp2.civ.cvut.cz:443/idp/Authn/UserPassword
  4. 您輸入您的憑據並發送文章數據j_username以及j_password來自 SSO 響應的 cookie
  5. ???

前四個步驟可以這樣完成wget

origin='https://progtest.fit.cvut.cz/'

# Get the PHPSESSID cookie
wget --save-cookies phpsid.cki --keep-session-cookies "$origin"

# Get the _idp_authn_lc_key cookie
wget --load-cookies phpsid.cki  --save-cookies sso.cki --keep-session-cookies --header="Referer: $origin" 'https://progtest.fit.cvut.cz/shibboleth-fit.php'

# Send your credentials
wget --load-cookies sso.cki --save-cookies auth.cki --keep-session-cookies --post-data='j_username=usr&j_password=pwd' 'https://idp2.civ.cvut.cz/idp/Authn/UserPassword'

請注意,wget它自己跟隨重定向,這在這種情況下對我們有很大幫助。

引用自:https://unix.stackexchange.com/questions/205135