3

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

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

4

3 回答 3

5

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

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

于 2008-11-18T08:43:41.137 回答
1

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

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

于 2008-11-18T09:23:13.023 回答
0

不幸的是,除非网站在同一个域中,否则这是不可能的。Cookie 仅在其来源的域上有效。此外,子域算作不同的域。否则,(请记住,我没有使用太多 php)您可以将标头从响应中提取出来,然后将 cookie 复制到客户端。

于 2008-11-18T06:13:13.220 回答