我正在尝试递归下载通常仅在您登录时才可用的网站。
我有有效的用户名和密码,但是问题是我需要通过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.
那里有经典的图形登录。
如果我尝试这样做: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,coookies文件为空,并且保存的页面为某些错误页面。
网址为https://idp2.civ.cvut.cz/idp/Authn/UserPassword
。实际上,当我想登录时,它会将我重定向到此页面,当我成功登录时,它会将我重定向回我之前的页面或登录后想要的某个页面(例如:https://progtest.fit.cvut.cz/
。
会话信息可能保存在cookie中,以便您登录后可以导航到其他页面。
如果是这种情况,您可以分两个步骤进行操作:
wget
的--save-cookies mycookies.txt
和--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
和j_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(不确定是否使用它),并使用专门为您设计的url将您重定向到SSO引擎,如下所示:https://idp2.civ.cvut.cz/idp/profile/SAML2/Redirect/SSO?SAMLRequest=SOME_VERY_LONG_AND_UNIQUE_ID
_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
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
重定向完全由他自己完成,在这种情况下,这对我们有很大帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句