如何使用 wget/curl 从我登录的网站下载?

如何使用 wget/curl 从我登录的网站下载?

当您登录时,维基百科的某些部分会以不同的方式显示。我希望 wget 用户页面,以便它们看起来就像我已登录一样。

有没有办法我可以像这样获取用户页面

http://en.wikipedia.org/wiki/User:A

这是登录页面:

http://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Login&campaign=ACP3

答案1

简单的方法:使用浏览器登录,并将 cookie 提供给wget

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

如果你使用的是 Firefox,则可以通过cookie文件附加组件。安装附加组件,然后:

  1. 单击插件并保存cookies.txt文件(您可以更改文件名/目标)。

  2. 打开终端,并使用wget选项--load-cookies=FILENAME,例如

     wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A
    
  • 为了卷曲, 它是curl --cookie cookies.txt ...

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

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

  • 详细的操作方法超出了本文的回答范围,但您可以使用卷曲--cookie-jar获得使用--save-cookies --keep-session-cookies选项以及 HTTP/S PUT 方法登录网站,保存登录 cookie,然后使用它们来模拟浏览器。
  • 不用说,这需要查看登录页面的 HTML 源代码(获取输入字段名称等),并且对于使用简单的登录/密码验证以外的任何方法的网站来说,通常很难让它工作。
  • 提示:如果你走这条路,处理起来往往简单得多移动的网站的版本(如果可用),至少对于身份验证步骤而言。

答案2

另一个对我有用的简单解决方案无需安装任何额外的东西:

这将为你提供一条命令,你可以将其直接粘贴到你的 shell 中,其中包含你所有的 cookie 凭据,例如

curl 'https://mysite.test/my-secure-dir/picture1.jpg' \ 
-H 'User-Agent: Mozilla/5.0 ...' \
-H 'Cookie: SESSIONID=abcdef1234567890'

然后,您可以修改命令中的 URL 来获取您想要的任何内容。

Chrome 和 Firefox 开发人员工具中均存在此功能。

答案3

使用 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。获取登录 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,只能获取源代码。

答案4

看一下克利盖特适用于 Firefox。

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

相关内容