使用 wget 仅通过用户名和密码下载 HTTPS 网站?

Mic*_*alH 6 wget https

我正在尝试递归下载通常仅在您登录时可用的网站。

我有有效的用户名和密码,但问题是我需要通过 Web 界面登录,所以使用--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.
Run Code Online (Sandbox Code Playgroud)

经典的图形登录就在那里。

如果我尝试这样做:wget --save-cookies coookies --keep-session-cookies --post-data='j_username=usr&j_password=pwd' 'https://idp2.civ.cvut.cz/idp/Authn/UserPassword'。使用POST方式登录并尝试保存cookies,cookies文件为空,保存页面为错误页面。

网址是https://idp2.civ.cvut.cz/idp/Authn/UserPassword。实际上,当我想登录时,它会将我重定向到此页面,当我成功登录时,它会将我重定向回我之前所在的页面或登录后我想进入的某个页面(例如:https://progtest.fit.cvut.cz/.

use*_*791 9

会话信息可能保存在 cookie 中,以便您在登录后导航到其他页面。

如果是这种情况,您可以分两步执行此操作:

  1. 在网站的登录页面上使用wget's--save-cookies mycookies.txt--keep-session-cookies选项以及您的--username--password选项
  2. 在您尝试检索的后续页面上使用wget's--load-cookies mycookies.txt选项。

编辑

如果--passwordand--username选项不起作用,您必须找出登录页面发送到服务器的信息并模仿它:

  • 对于GET请求,您可以GET直接在 wget 必须获取的地址中添加参数(确保正确引用&,=和其他特殊字符)。网址可能看起来像https://the_url?user=foo&pass=bar.
  • 对于POST请求,您可以使用wget's--post-data=the_needed_info选项在所需的登录信息上使用 post 方法。

编辑 2

看来您确实需要POST使用j_usernamej_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'
Run Code Online (Sandbox Code Playgroud)

请注意,wget重定向完全由他自己完成,这在这种情况下对我们有很大帮助。