首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用安全登录进行PHP站点抓取

使用安全登录进行PHP站点抓取
EN

Stack Overflow用户
提问于 2010-12-02 02:50:04
回答 2查看 4.5K关注 0票数 5

我正在尝试计算我的一个分销商每种产品的库存数量。他们不知道如何导出此数据。所以我想知道是否有人可以帮助我指出正确的方向,如何用PHP抓取你必须登录才能获得数据的网站?它不是一个使用SSL的安全站点。

谢谢你的建议,

克里斯·爱德华兹

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-02 04:02:01

获得所需位置的最简单方法是利用cURL。cURL的基本特性是,它允许您发出HTTP请求,并根据需要进行配置并接收响应。这可以根据您的需要以不同程度的细节来完成。

您想要做的基本上是发出一个HTTP请求来获取您想要的页面,并从响应的HTML中抓取数据。这可能很容易做到,但在您的情况下,您需要克服一些障碍。

我假设你说“必须登录”的意思是,你必须通过一个登录表单,然后才能抓取任何东西。在你的帮助下,cURL可以伪造一个登录。

首先,您需要使用cURL“提交”登录表单,就像手动操作一样。为了确保正确,您需要在手动提交表单时查看浏览器发出的HTTP请求,并使用cURL构造相同的请求。要查看HTTP请求的详细信息,您可以使用Firebug、Chrome的开发工具或绝对神奇的Fiddler debugging proxy

很可能在提交有效的登录表单后,服务器会向您发送一个cookie,用于在后续请求中验证您的身份。此cookie将成为服务器的HTTP响应的标头(Set-Cookie标头)的一部分。您将需要记住该cookie的值,并在后续对服务器的抓取中包含一个Cookie头--本质上,您所做的正是您的浏览器在登录**时所做的事情。

最后,您可能需要进行多次往返才能找到您的目标。也许你需要抓取的URL事先并不知道,你需要抓取一个“列表”页面来找出你想抓取的URL的某些可变部分。这可以通过分步骤解决问题来解决:首先刮掉“列表”页面,找出你需要的,然后刮掉你真正想要的“详细信息”页面。

我没有提供任何代码,因为网上有大量的cURL教程,但我相信知道计划会让你的工作变得容易得多。

另一种(更快,但粗糙)的方法是自己登录,查看你得到的cookie的价值,然后将其粘贴到你的抓取请求中。优点是您不再需要使用cURL伪造登录;缺点是在每次使用您的工具之前,必须有人手动登录并向您的工具提供凭据。

票数 12
EN

Stack Overflow用户

发布于 2010-12-02 02:52:36

有一个名为curl的库,你应该去查一查

link

它允许你的脚本登录,使用cookies/会话和抓取它所跟随的任何页面的内容,你可以设置它应该走的深度,以及它是否应该遵循任何重定向等,你甚至可以使用它来发布数据。基本上,它是一个很棒的工具。

这里还有一个指向教程的链接,您可以在其中一步一步地了解它是如何工作的

http://devzone.zend.com/article/1081

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4327908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档