如何使用wget / curl从我登录的站点下载?
当您登录时,维基百科的某些部分会有所不同。我想忘记用户页面,以便它们看起来好像我已登录。
有没有办法可以像这样忘记用户页面
http://en.wikipedia.org/wiki/User:A
这是登录页面:
http://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Login&campaign=ACP3
简单的方法:使用浏览器登录,并将cookie提供给wget
最简单的方法:一般来说,你需要提供wget或curl与来自特定网站的(登录)cookie,以便他们像登录一样获取页面。
如果您使用的是Firefox,可以通过Export Cookies插件轻松完成。 安装插件,并:
- 转到工具…导出Cookies ,并保存
cookies.txt
文件(您可以更改文件名/目的地)。 -
打开一个终端,并使用带有
--load-cookies=FILENAME
选项的wget
,例如wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A
- 对于curl ,它是
curl --cookie cookies.txt ...
- 对于curl ,它是
(我会尝试为Chrome / Chromium用户更新此答案)
困难的方法:使用curl (最好)或wget来管理整个会话
- 详细的操作方法超出了本答案的范围,但您使用curl与
--cookie-jar
或wget与--save-cookies --keep-session-cookies
选项以及HTTP / S PUT方法登录到站点,保存登录cookie,然后使用它们来模拟浏览器。 - 毋庸置疑,这需要浏览登录页面的HTML源代码(获取输入字段名称等),并且通常很难使用除简单登录/密码身份validation之外的任何其他网站。
- 提示:如果您采用这种方式,处理网站的移动版本(如果可用)通常要简单得多,至少对于身份validation步骤而言。
使用cURL非常容易以两种方式处理cookie。
curl www.target-url.com -c cookie.txt
然后会保存一个名为cookie.txt的文件。 但是你需要登录,所以需要使用带有以下参数的–data: curl -X --data "var1=1&var2=2" www.target-url.com/login.php -c cookie.txt
。 获得loggued cookie后,您可以发送: curl www.target-url.com/?user-page.php -b cookie.txt
只需使用-c(–cookie)或-b(–cookie-jar)来保存和发送。
注意1:使用cURL CLI比PHP更容易,也许更快;)
要保存最终内容,您可以轻松地将> filename.html
添加到您的cURL命令,然后保存完整的HTML代码。
注2关于“完整”:哟不能用cURL渲染javascript,只需获取源代码。
博客文章Wget with Firefox Cookies显示了如何访问Firefox存储其cookie的sqlite数据文件。 这样,您无需手动导出cookie以与wget一起使用。 评论表明它不适用于会话cookie,但它适用于我尝试过的网站。
对于那些仍然对这些问题感兴趣的人,有一个非常有用的Chrome扩展名为CurlWGet ,它允许您通过一次单击生成带有身份validation措施等的wget
/ curl
请求。 要安装此扩展程序,请按以下步骤操作:
- 从Chrome Webstore安装扩展程序 。
- 转到您要下载的网页。
- 开始下载。
- 该扩展程序将为您生成一个链接。
请享用!
你试过这个吗?
wget --user=username --password=password http://en.wikipedia.org/wiki/User:A
尝试以下方法:
wget --keep-session-cookies --save-cookies cookies.txt --post-data 'user=goyamy&passwrd=mypassword' http://forum.ubuntu-it.org/
另见此链接:
如何用wget下载这个网页?
对于更复杂的基于网站的登录,您还应该考虑使用Python脚本和一些模仿浏览器的模块,例如http://wwwsearch.sourceforge.net/mechanize/而不是curl
或wget
。
这样会话cookie就会自动处理,您可以关注链接并填写登录表单,这样就可以通过登录过程自行“编写脚本”,就像使用Web浏览器一样。
看看Firefox的cliget 。
当您即将下载时,在最终下载对话框中,您可以选择将下载作为curl命令行复制到剪贴板。