cURL和file_get_contents不适用于特定的URL

时间:2018-07-16 15:45:55

标签: php curl file-get-contents

我经常使用cURL / file_get_contents来获取页面的源代码。 但是,有一个网站对我不起作用。

代码如下:

<?php 

$c = curl_init('https://plus.nl');
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($c, CURLOPT_POST, true);
//curl_setopt(... other options you want...)

$html = curl_exec($c);

if (curl_error($c))
    die(curl_error($c));

// Get the status code
$status = curl_getinfo($c, CURLINFO_HTTP_CODE);

curl_close($c);

echo $html;


?>

在我的浏览器中,它一直在加载。当我尝试其他网站时,它会立即起作用。 这个网站怎么了,它不起作用?

2 个答案:

答案 0 :(得分:3)

编辑:尝试了您的操作后,实际上可以在控制台中看到错误。它比x-frame-option安全性简单得多。 HTML在加载的HTML的相对路径中引用javascript和CSS。就您而言,加载的HTML来自您的网站,而不是原始的plus.nl,因此对css / javascript / images / etc的所有请求均导致404(未找到)。

原始答案(根据我的进一步调查,该答案不适用):答案很可能是使用X-FRAME-OPTION标头。基本的html几乎为空;其他所有内容均通过javascript加载。它们的X-FRAME-OPTION标头仅允许在浏览器中的URL为https:/www.plus.nl/的情况下加载资产,而在您的情况下则不是,因此,不能加载/执行任何动态内容。

答案 1 :(得分:0)

我尝试了file_get_contents,它可以在网站上运行。但是,由于该网站检测到缺少javascript,因此它不是很有用。将用户代理设置为curl并不能解决问题。

我刚收到消息

  

我们破坏了网站。 De huidige pagina werkt nog niet optimaal op mobiel。

翻译为:

  

我们目前正在网站上工作。当前页面不适用于移动设备。

所以也许您的IP被他们禁止了。