当您登录时,维基百科的某些部分会以不同的方式显示。我希望 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
最简单的方法:一般来说,你需要提供wget
或curl
使用来自特定网站的(登录)cookie,以便他们获取页面就像您已登录一样。
如果你使用的是 Firefox,则可以通过cookie文件附加组件。安装附加组件,然后:
单击插件并保存
cookies.txt
文件(您可以更改文件名/目标)。打开终端,并使用
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
另一个对我有用的简单解决方案无需安装任何额外的东西:
- 打开“网络”选项卡“Web开发人员”工具:Ctrl-Shift-E
- 访问您想要保存的页面(例如登录后的照片)
- 右键单击请求并选择'复制'->'复制为 cURL'
这将为你提供一条命令,你可以将其直接粘贴到你的 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 命令行复制到剪贴板。