![如何使用 wget 下载包含受密码保护部分的 phpbb 论坛?](https://linux22.com/image/1260368/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20wget%20%E4%B8%8B%E8%BD%BD%E5%8C%85%E5%90%AB%E5%8F%97%E5%AF%86%E7%A0%81%E4%BF%9D%E6%8A%A4%E9%83%A8%E5%88%86%E7%9A%84%20phpbb%20%E8%AE%BA%E5%9D%9B%EF%BC%9F.png)
我想在我管理的论坛永久关闭之前下载其中的内容。论坛上有一些有用的信息我想自己保存,我不想将数据导出到其他网络服务器,我只想要页面。请注意,我是论坛的用户,不是管理员。现在,我谷歌了一下,发现用 wget 可以轻松完成: 我如何下载整个(活跃的)phpbb 论坛?
我用了:
wget -k -m -E -p -np -R viewtopic.php*p=*,memberlist.php*,faq.php*,posting.php*,search.php*,ucp.php*,viewonline.php*,*sid*,*view=print*,*start=0* -o log.txt http://www.example.com/forum/
我尝试过这个,但我只能下载公开可见的部分,而不能下载需要登录的部分。我尝试使用 Firefox 插件制作 cookies.txt(当我的会话登录到论坛时)并添加--load-cookies 文件 cookies.txt执行命令后,我仍然只得到公开可见的部分。
有什么建议可以使这个工作成功吗?
答案1
您可能需要为会话设置 cookie,因为许多网站都使用 cookie 来实现登录和注销功能。
“--load-cookies”选项可能会对您有所帮助。
答案2
请参阅我的回答:https://superuser.com/a/1371654/216033
首先需要获取SID并在下一个请求中使用它。
登录示例:
PHPBB_URL=http://www.someserver.com/phpbb
USER=MyUser
PASS=MyPass
wget --save-cookies=./session-cookies-$USER $PHPBB_URL/ucp.php?mode=login -O - 1> /dev/null 2> /dev/null
SID=`cat ./session-cookies-$USER | grep _sid | cut -d$'\011' -f7`
echo "Login $USER --> $PHPBB_URL SID=$SID"
wget --save-cookies=./session-cookies-$USER \
--post-data="username=$USER&password=$PASS&redirect=index.php&sid=$SID&login=Login" \
$PHPBB_URL/ucp.php?mode=login --referer="$PHPBB_URL/ucp.php?mode=login" \
-O - 1> /dev/null 2> /dev/null
wget --load-cookies ./session-cookies-$USER -k -m -E -p -np -R memberlist.php*,faq.php*,viewtopic.php*p=*,posting.php*,search.php*,ucp.php*,viewonline.php*,*sid*,*view=print*,*start=0* $PHPBB_URL/viewtopic.php?t=27704
######## loop thru topics see below(but above should get most with the options.
#wget --load-cookies ./session-cookies-$USER -k -m -E -p -np -R $PHPBB_URL/viewtopic.php?t={1..29700}