在服务器上拉取并加载一个 extern php 网页

Pull and load on a server an extern php webpage

我正在尝试从服务器中的 .php 加载或查看位于托管服务器外部的 .php 网页。可能吗?服务器有 PHP v.7.3.15

使用以下代码:

<?php
echo file_get_contents('http://XXXXXXXXXXXX');
?>

我收到以下错误:

Warning: file_get_contents(http://XXXXXXXXXX): failed to open stream: Network is unreachable in XXXXXX

有时使用 cURL 会更好

$url = "http://www.xxxxxxx.xxx";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$output = curl_exec($curl);
curl_close($curl);

$output 应该包含 HTML.

如果您仍然没有 HTML,可能是远程服务器阻止了类似机器人的请求。使用 cURL,您可以更好地控制如何模拟浏览器,使远程服务器不会在您的脚本和真人之间产生差异。

上面的代码是它的基础,您可以从那里添加各种 curl_setopt() 以发送假浏览器 ID 以及忽略 HTTPS。

这里有一些你可以使用的:

    curl_setopt($curl, CURLOPT_COOKIESESSION, true);
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
    curl_setopt($curl, CURLOPT_VERBOSE, true);
    curl_setopt($curl, CURLOPT_AUTOREFERER, true);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_ENCODING, '');
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36');

上面的 $cookie 是一个可写的 txt 文件的路径,因此它可以像真正的浏览器一样保存所需的数据。

您还可以在浏览网站时查看浏览器 headers(在开发人员工具中),并在 curl 请求中使用相同的值。