wget与身份验证的问题

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (1012)

如何下载需要用户名和密码的网页?

例如,在输入用户名和密码之后,我想下载此页面:

http://forum.ubuntu-it.org/index.php

提问于
用户回答回答于

使用以下选项:

--password=PASS
--user=USERNAME

IE:wget http://www.example.com --user=joe --password=schmoe

你还可以添加--auth-no-challenge参数在出现其他问题时:

IE:wget http://www.example.com --user=joe --password=schmoe --auth-no-challenge

用户回答回答于

试试这里介绍的解决方案:

http://www.unix.com/shell-programming-scripting/131020-using-wget-curl-http-post-authentication.html # Log in to the server. This can be done only once.

wget --save-cookies cookies.txt \

--post-data 'user=foo&password=bar' \

http://server.com/auth.php

# Now grab the page or pages we care about.

wget --load-cookies cookies.txt \

-p http://server.com/interesting/article.php

注意其他人可能会遇到这种情况:

  • 上面的模拟用户手动登录到一个具有两个输入字段的表单:一个名字user和一个名字password
  • 表单有它的action属性设置http://server.com/auth.php
  • 表单不使用JavaScript
    • 它使用JavaScript的一个很好的暗示是onsubmit表单元素的属性
    • 请注意,这是设置属性的唯一方法 - 在页面的任何位置使用JavaScript,或者任何静态或动态加载的脚本文件都可以更改表单元素

  • 看到这个最好的方法是加载页面,并用Firebug for Firefox进行实时检查

因此,如果属性名称和表单动作url不同,则需要wget适当地将参数更改为第一个命令。

如果使用JavaScript,则有可能根本无法工作 - 例如在OP的网站示例中,它使用客户端JavaScript散列,因此外部调用wget不会在表单中设置必要的字段(在这种情况下的Ubuntu网站,hash_passwrd字段)。

扫码关注云+社区

领取腾讯云代金券