维基百科的某些部分在您登录时会出现不同的显示。我想获取用户页面,使它们看起来就像我登录时一样。
有没有办法我可以这样获取用户页面
http://en.wikipedia.org/wiki/User:A
这是登录页面:
http://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Login&campaign=ACP3
维基百科的某些部分在您登录时会出现不同的显示。我想获取用户页面,使它们看起来就像我登录时一样。
有没有办法我可以这样获取用户页面
http://en.wikipedia.org/wiki/User:A
这是登录页面:
http://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Login&campaign=ACP3
Answers:
最简单的方法:通常,您需要向wget或curl提供来自特定网站的(已登录)Cookie,以便它们像您已登录时一样获取页面。
如果您使用的是Firefox,则可以通过“ 导出Cookies”插件轻松进行。安装加载项,并:
cookies.txt
文件(您可以更改文件名/目标)。打开一个终端,并使用wget
该--load-cookies=FILENAME
选件,例如
wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A
curl --cookie cookies.txt ...
(我将尝试为Chrome / Chromium用户更新此答案)
--cookie-jar
或wget一起使用--save-cookies --keep-session-cookies
,并与HTTP / S PUT方法一起使用以登录到站点,保存登录cookie,然后将其用于模拟浏览器。grep mydomain cookies.txt > mydomain-cookies.txt
另一个简单的解决方案对我有用,无需安装任何额外的东西:
这将为您提供一个命令,您可以将其直接粘贴到您的shell中,该命令具有所有cookie凭据,例如
curl 'https://mysite.test/my-secure-dir/picture1.jpg' \
-H 'User-Agent: Mozilla/5.0 ...' \
-H 'Cookie: SESSIONID=abcdef1234567890'
然后,您可以在命令中修改URL以获取所需的内容。
使用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,只能获取源代码。
-X
参数代表“ do post”,但using --data=xxx
-X
是隐式的,因此可以确定将其删除。
-b
是read cookie
对于仍然对这个问题感兴趣的人,有一个非常有用的Chrome扩展程序叫CurlWGet,它使您可以一键生成带有身份验证措施等的wget
/ curl
请求。要安装此扩展,请按照以下步骤操作:
请享用!
博客文章Wget with Firefox Cookies展示了如何访问Firefox存储cookie的sqlite数据文件。这样一来,无需手动导出cookie即可与wget一起使用。有评论表明它不适用于会话cookie,但对于我尝试过的网站来说效果很好。
你有尝试过吗?
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/
另请参阅此链接:
> filename.html
保存在当前目录的输出或把一个完整的文件路径。这适用于Linux和Windows系统。
对于更复杂的基于网站的登录,您还应该考虑使用Python脚本和一些模仿浏览器的模块,例如http://wwwsearch.sourceforge.net/mechanize/,而不是curl
or wget
。
这样,会话cookie会自动处理,您可以跟踪链接并填写登录表格,从而在登录过程中像使用网络浏览器一样“编写”自己的脚本。