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

use*_*637 58 bash wget

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

有没有办法让我得到这样的用户页面

http://en.wikipedia.org/wiki/User:A
Run Code Online (Sandbox Code Playgroud)

这是登录页面:

http://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Login&campaign=ACP3
Run Code Online (Sandbox Code Playgroud)

ish*_*ish 63

最简单的方法:使用浏览器登录,并将cookies交给wget

最简单的方法:通常,您需要向wget或curl提供来自特定网站的(已登录)cookie,以便它们获取页面,就像您已登录一样。

如果您使用的是 Firefox,则可以通过导出 Cookie插件轻松完成。安装附加组件,然后:

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

    wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A
    
    Run Code Online (Sandbox Code Playgroud)
    • 对于curl,它是curl --cookie cookies.txt ...

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

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

  • 详细的操作方法超出了本答复的范围,但在使用卷曲用--cookie-jar或wget的与--save-cookies --keep-session-cookies选择,与HTTP / S PUT方法一起登录到网站,保存登录的Cookie,然后用它们来模拟浏览器。
  • 毋庸置疑,这需要通过登录页面的 HTML 源代码(获取输入字段名称等),并且对于使用简单登录/密码身份验证之外的任何其他内容的站点,通常很难开始工作。
  • 提示:如果你走这条路,处理网站的移动版本(如果可用)通常要简单得多,至少在身份验证步骤中是这样。

  • 这样的 cookies.txt 是什么样子的? (4认同)
  • 对于 chrome:https://chrome.google.com/webstore/detail/cookiestxt/njabckikapfpffapmjgojcnbfjonfjfg (3认同)

Bla*_*ift 18

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

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

curl 'https://mysite.test/my-secure-dir/picture1.jpg' \ 
-H 'User-Agent: Mozilla/5.0 ...' \
-H 'Cookie: SESSIONID=abcdef1234567890'
Run Code Online (Sandbox Code Playgroud)

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