1

我有以下代码:

$homepage = file_get_contents("https://example.com/specific_page");
echo $homepage;

浏览器已经有一个我需要访问的站点会话,所以如果我在新选项卡中打开 url,页面将被正确加载。

问题是 php 脚本将我重定向到“您未登录”页面。请注意,即使我重新启动浏览器,该 url 仍然可用。

任何想法如何在不编写登录网站的代码的情况下获取内容?

4

2 回答 2

3

如果一个网站可以访问您在任意外部网站上的数据,那将是一个巨大的安全问题。想象一下:file_get_contents('https://yourbank.com/all-your-details').

您可以做到这一点的唯一方法是在外部网站上向用户询问他/她的登录凭据并手动登录。但是,这将是不可靠的,因为身份验证过程可能会改变(并且向某人询问他/她的密码是非常粗鲁的)。

这通常是 Web 服务 API 的用途,但如果您感兴趣的站点没有可用的 API,那么您就会陷入困境。


如果您已经知道网站的登录凭据,那么您可以使用 Blauesocke 概述的方法将它们硬编码到脚本中,但如果详细信息对当前用户来说是唯一的,这将不起作用。

于 2013-01-06T23:25:44.893 回答
3

PHP 运行服务器端,因此它有自己的会话处理,没有链接到您的浏览器会话。您可以使用cURL和类似的选项CURLOPT_COOKIEJAR来执行此操作。使用cURL,您可以通过 PHP 登录并保持您请求的网站的 PHP 会话。您将在我链接的 cURL 文档中找到大量示例。

于 2013-01-06T23:27:04.357 回答