使用 wget 获取受密码保护的网站(trac wiki 页面)

使用 wget 获取受密码保护的网站(trac wiki 页面)

我想编写一个 bash 脚本,用于通知我 trac wiki 时间线上的更改。不幸的是,我无法“登录”(下次登录需要 cookie)。

wget http://someserver.com/trac/xxx/login \
--save-cookies=cookies --keep-session-cookies

wget http://someserver.com/trac/xxx/login \
--load-cookies=cookies \ 
--save-cookies=cookies.new --keep-session-cookies\
--post-data=user=viroos&password=myPassword

我得到:

Error 400: Bad Request

我也尝试了 --user --password 选项:

wget --no-check-certificate --user viroos --password myPassword\ 
https://someserver.com/trac/xxx/timeline?ticket=on&changeset=on&milestone=on&wiki=on&blog=on&max=50&daysback=90&format=rss

但这只会下载登录页面。

我究竟做错了什么?

答案1

我认为您已经非常接近解决方案了。这应该取决于您的配置:

wget --no-check-certificate --user viroos --password myPassword \
     --save-cookies=cookies --keep-session-cookies \
     https://someserver.com/trac/xxx/login

wget --no-check-certificate --load-cookies=cookies \
     https://someserver.com/trac/xxx/timeline?ticket=on&changeset=on&milestone=on&wiki=on&blog=on&max=50&daysback=90&format=rss

第一次调用对 /login url 进行授权并保存身份验证 cookie。第二次调用应该会得到您想要的结果。

如果您在 ..../trac/login url 上启用了基本授权,这将会起作用。

答案2

对于 http URL,wget 中的 --user/--password 标志涵盖 HTTP 基本身份验证。Trac 有自己的登录机制,因此这些标志在这种情况下不起作用。

有一种方法可以做你想做的事(虽然我不确定 wget 是否有能力做到这一点),但在花时间研究这个方向之前,你有没有考虑过使用TRAC 时间线 RSS 提要

RSS 源将允许您使用您最喜欢的 RSS 阅读器订阅时间线更改并收到通知。它还将为您提供一个标准的 XML 文件以便于解析,这样您就可以对数据进行任何您想做的事情。

相关内容