如何使用 Wget 下载此网页?

如何使用 Wget 下载此网页?

我想要下载网页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 数据库格式。

我会这么做:

  1. 使用 Firefox 或 Chrome 访问该网站并登录。(确保您的浏览器设置为保存 cookie)
  2. 退出浏览器
  3. 查找你的 Cookie 文件
  4. 转换为 cookies.txt 格式(请参阅下面的注释)
  5. wget --load-cookies cookies.txt http://forum.ubuntu-it.org/

从 sqlite 格式转换为 cookies.txt 的选项包括python 脚本或者更简单的 sqlite 脚本(在上一个链接的评论中),但对你来说最简单的可能是安装这个 Firefox 扩展

相关内容