我想要下载网页http://forum.ubuntu-it.org/,但它需要用户名和密码。所以我用了这个:
wget --save-cookies cookies.txt --post-data 'user=goyamy&passwrd=mypassword' http://forum.ubuntu-it.org/
但它不起作用!为什么?
答案1
这可能是因为服务器使用会话 cookie 来跟踪身份验证。添加--save-cookies
旁边的选项以强制保存 cookie。因此您的命令如下所示:
wget --keep-session-cookies --save-cookies cookies.txt --post-data 'user=goyamy&passwrd=mypassword' http://forum.ubuntu-it.org/
我还没有测试过。
答案2
这是一个从 Chrome (v19) 转储 cookie 的示例脚本。
#!/bin/bash -e
#
# Quick and dirty script which dumps all Chrome cookies in
# the specified SQLite database to stdout in Netscape format.
COOKIE_FILE='~/.config/google-chrome/Default/Cookies'
echo -e '.mode tabs \n select host_key, httponly, path, secure, ' \
'expires_utc/10000000, name, value from cookies;' |
sqlite3 $COOKIE_FILE |
sed -e 's/\t0\t/\tFALSE\t/g ' -e 's/\t1\t/\tTRUE\t/g'
答案3
正如 Colin 所建议的,该网站正在使用会话 cookie 进行身份验证,但他的答案并不完全有效,因为它不会让您登录。
您需要一个 cookie,以便 wget 在初始请求时将其传递给服务器。使用 wget 的--load-cookies
选项 (记录在这里)。请注意,这使用的是旧的 cookies.txt 文件格式,而不是 Firefox 和 Chrome 当前使用的 sqlite 数据库格式。
我会这么做:
- 使用 Firefox 或 Chrome 访问该网站并登录。(确保您的浏览器设置为保存 cookie)
- 退出浏览器
- 查找你的 Cookie 文件
- 转换为 cookies.txt 格式(请参阅下面的注释)
wget --load-cookies cookies.txt http://forum.ubuntu-it.org/
从 sqlite 格式转换为 cookies.txt 的选项包括python 脚本或者更简单的 sqlite 脚本(在上一个链接的评论中),但对你来说最简单的可能是安装这个 Firefox 扩展。