只能通過 wget 的使用者名和密碼下載 HTTPS 網站?
我正在嘗試遞歸下載通常僅在您登錄時才可用的網站。
我有有效的使用者名和密碼,但問題是我需要通過網路界面登錄,所以使用
--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 中,以便您在登錄後導航到其他頁面。
如果是這種情況,您可以分兩步執行此操作:
- 在網站的登錄頁面上使用
wget
’s--save-cookies mycookies.txt
和options 以及您的和選項--keep-session-cookies``--username``--password
- 在您嘗試檢索的後續頁面上使用
wget
‘選項。--load-cookies mycookies.txt
編輯
如果
--password
and--username
選項不起作用,您必須找出登錄頁面發送到伺服器的資訊並模仿它:
- 對於
GET
請求,您可以GET
直接在 wget 必須獲取的地址中添加參數(確保正確引用&
,=
和其他特殊字元)。該網址可能看起來像https://the_url?user=foo&pass=bar
.- 對於
POST
請求,您可以使用wget
’--post-data=the_needed_info
選項在所需的登錄資訊上使用 post 方法。編輯 2
看來您確實需要
POST
帶有j_username
andj_password
設置的方法。嘗試--post-data='j_username=yourusername&j_password=yourpassword
選擇wget
.編輯 3
通過原始頁面,我能夠更多地了解正在發生的事情。話雖如此,我無法確保它有效,因為我沒有(也不想要)有效的憑據。
話雖如此,這就是正在發生的事情:
- 該頁面
https://progtest.fit.cvut.cz/
設置了一個PHPSESSID
cookie 並為您提供登錄選項。- 點擊該
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
- SSO 響應設置一個名為的新 cookie並將您重定向到再次將您
_idp_authn_lc_key
重定向到的頁面(真正的登錄頁面)https://idp2.civ.cvut.cz:443/idp/AuthnEngine``https://idp2.civ.cvut.cz:443/idp/Authn/UserPassword
- 您輸入您的憑據並發送文章數據
j_username
以及j_password
來自 SSO 響應的 cookie- ???
前四個步驟可以這樣完成
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
它自己跟隨重定向,這在這種情況下對我們有很大幫助。