问题描述
当您登录时,维基百科的某些部分会有所不同。我想忘记用户页面,以便它们看起来好像我已登录。
有没有办法可以像这样忘记用户页面
http://en.wikipedia.org/wiki/User:A
这是登录页面:
http://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Login&campaign=ACP3
最佳解决方法
简单的方法:使用浏览器登录,并将cookie提供给wget
最简单的方法:通常,您需要使用来自特定网站的(logged-in)cookie提供wget或curl,以便他们像登录一样获取页面。
如果您使用的是Firefox,可以通过Export Cookies add-on轻松完成。安装add-on,并:
-
转到工具…导出Cookies,然后保存
cookies.txt
文件(您可以更改文件名/目的地)。 -
打开一个终端,并使用
wget
和--load-cookies=FILENAME
选项,例如,wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A
-
对于 curl ,它是
curl --cookie cookies.txt ...
-
(我会尝试为Chrome /Chromium用户更新此答案)
困难的方法:使用curl(最好)或wget来管理整个会话
-
详细的how-to超出了本答案的范围,但您使用curl与
--cookie-jar
或wget与--save-cookies --keep-session-cookies
选项,以及HTTP /S PUT方法登录到站点,保存登录cookie,然后使用它们模拟浏览器。 -
毋庸置疑,这需要浏览登录页面的HTML源代码(获取输入字段名称等),并且通常很难使用除简单登录/密码身份验证之外的任何其他站点。
-
提示:如果您采用这种方式,处理网站的移动版本(如果可用)通常要简单得多,至少对于身份验证步骤而言。
次佳解决方法
使用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代码。
关于”full”的注2:哟不能用cURL渲染javascript,只需获取源代码。
第三种解决方法
博客文章Wget with Firefox Cookies显示了如何访问Firefox存储其cookie的sqlite数据文件。这样就不需要手动导出cookie以与wget一起使用。评论表明它不适用于会话cookie,但它适用于我尝试过的网站。
第四种方法
对于那些对此问题仍然感兴趣的人,有一个非常有用的Chrome扩展名为CurlWGet,只需点击一下即可生成带有身份验证措施等的wget
/curl
请求。要安装此扩展程序,请按以下步骤操作:
-
从Chrome Webstore安装扩展。
-
转到您要下载的网页。
-
开始下载。
-
该扩展程序将为您生成一个链接。
请享用!
第五种方法
另一个简单的解决方案,无需安装任何额外功能,
-
打开“Web Developer”工具的”Network”选项卡:Ctrl-Shift-E
-
访问您要保存的页面(例如登录后面的照片)
-
右键单击该请求,然后选择‘Copy’->’Copy as cURL’
这将为您提供一个命令,您可以将其直接粘贴到您的shell中,该命令包含您的所有Cookie凭据,例如:
curl 'https://mysite.test/my-secure-dir/picture1.jpg' \
-H 'User-Agent: Mozilla/5.0 ...' \
-H 'Cookie: SESSIONID=abcdef1234567890'
然后,您可以修改命令中的URL以获取所需的任何内容。