在PHP中模拟启用cookie的浏览器

时间:2008-11-18 05:52:37

标签: php curl curl-multi redirectwithcookies

如何使用PHP打开网页并接收其Cookie?

动机:我正在尝试使用feed43从非启用RSS的HighLearn网站(远程学习网站)创建RSS源。我找到了包含我需要解析的提要内容的网页,但是,它需要先登录。 幸运的是,登录可以通过GET请求完成,因此它就像fopen()ing“http://highlearn.website/login_page.asp?userID=foo&password=bar”一样容易。但我仍然需要获取我登录时生成的cookie ,将cookie传递给真实客户端(使用setcookie()可能?)然后重定向。

3 个答案:

答案 0 :(得分:5)

对于服务器端HTTP客户端,您应该使用cURL模块。它允许您在多个请求中保留cookie。它还做了一些其他整洁的事情,比如捆绑请求(curl_multi)和透明地处理重定向。

在将会话返回给用户时,我认为这不可行。您需要能够覆盖其他域的cookie。这会导致大量安全问题,因此没有浏览器会实现它。

答案 1 :(得分:1)

我之前使用过Simpletest的Scriptable Browser组件来进行这种屏幕抓取。它在模拟浏览器方面做得非常好。

您不需要将会话传递给真实客户端(即使可能可能,取决于站点的安全级别) - 您可以简单地让您的PHP脚本成为目标网站与最终用户之间的代理。

答案 2 :(得分:0)

不幸的是,除非网站位于同一个域中,否则这是不可能的。 Cookie仅在其源自的域中有效。此外,子域计为不同的域。否则,(请记住我没有使用太多的PHP)你可以从响应中提取标题,并将cookie复制到客户端。