如何使用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

最简单的方法:一般来说,你需要提供wgetcurl与来自特定网站的(登录)cookie,以便他们像登录一样获取页面。

如果您使用的是Firefox,可以通过Export Cookies插件轻松完成。 安装插件,并:

  1. 转到工具…导出Cookies ,并保存cookies.txt文件(您可以更改文件名/目的地)。
  2. 打开一个终端,并使用带有--load-cookies=FILENAME选项的wget ,例如

     wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A 
    • 对于curl ,它是curl --cookie cookies.txt ...

(我会尝试为Chrome / Chromium用户更新此答案)

困难的方法:使用curl (最好)或wget来管理整个会话

  • 详细的操作方法超出了本答案的范围,但您使用curl--cookie-jarwget--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请求。 要安装此扩展程序,请按以下步骤操作:

  1. 从Chrome Webstore安装扩展程序 。
  2. 转到您要下载的网页。
  3. 开始下载。
  4. 该扩展程序将为您生成一个链接。

请享用!

你试过这个吗?

 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/而不是curlwget

这样会话cookie就会自动处理,您可以关注链接并填写登录表单,这样就可以通过登录过程自行“编写脚本”,就像使用Web浏览器一样。

看看Firefox的cliget 。

当您即将下载时,在最终下载对话框中,您可以选择将下载作为curl命令行复制到剪贴板。