首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何下载登录后重定向的页面?

如何下载登录后重定向的页面?
EN

Stack Overflow用户
提问于 2011-12-31 17:16:14
回答 1查看 1.6K关注 0票数 5

通常,有登录表单的页面可以通过

代码语言:javascript
复制
wget --no-check-certificate --save-cookies cookies --keep-session-cookies \
     --post-data="username=example&password=example" \
     "https://example.com/index.php?title=Special:Userlogin&returntotitle="

wget --no-check-certificate --load-cookies=cookies \
     --no-parent -r --level=2 -nc -E \
     https://example.com/Special:Sitemap

但是对于DekiWiki站点,如果需要登录,这是行不通的。

需要在man wget中描述的问题接缝

注意:如果Wget在POST请求完成后被重定向,它将不会将POST数据发送到重定向的URL。这是因为处理POST的URL通常以重定向到常规页面的方式响应,后者不希望或不接受POST。目前还不完全清楚这种行为是否是最优的;如果它不起作用,它可能会在未来被改变。

问题

这是否可以使用Perl来完成,例如使用HTML::TreeBuilder 3HTML::TokeParserMechanize或任何其他Perl模块?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-31 18:05:00

一些需要登录的站点不会将cookie与响应一起发送回来。

相反,它们发送一个重定向响应(302个对象被移动),大多数浏览器都会自动跟随这个响应,然后在重定向页面的响应中发送cookie。

我使用curl通过启用curl_opt FOLLOW_LOCATION来实现这一点,因为命令行工具使用-location选项。它是一个像wget一样的免费工具。

代码语言:javascript
复制
curl --cookie cookie.txt --cookie-jar cookie.txt \
     --data-urlencode "username=example&password=example" \
     --insecure --location https://example.com/index.php?title=Special:Userlogin&returntotitle= -o downloadedfile.html https://example.com/Special:Sitemap

http://curl.haxx.se/download.html

另外,有时登录表单需要一个多部分/表单数据发布,而不仅仅是一个应用程序/x-www-表单-urlencoded帖子。要使curl做多部分/表单数据后,将其更改为--数据-urlencode到-F。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8689440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档