PHP cURL,file_get_contents空白页面

时间:2013-11-21 11:15:11

标签: php curl

我尝试使用cURL或file_get_content获取页面内容。在许多网站上它都在工作,但我试图在朋友的服务器上这样做,但事实并非如此。

我认为有标题或类似内容的保护。我收到以下错误代码:401禁止。如果我尝试使用普通浏览器访问同一页面,则可以正常运行。

这是我的file_get_contents函数的代码:

$homepage = file_get_contents('http://192.168.1.3');

echo $homepage; // just a test to see if the page is loaded, it's not.

if (preg_match("/my regex/", $homepage)) {
   // ... some code
}

我也试过cURL:

$url = urlencode('http://192.168.1.3');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0');
$result = curl_exec($ch) or die("Not working"); 
curl_close($ch);

echo $result; // not working ..

没有任何作用,也许我应该为curl_setopt添加更多的参数......

感谢。

PS:如果我尝试使用linux(wget),我会收到一个错误,但是如果我尝试使用aria2c它会正常工作。

2 个答案:

答案 0 :(得分:0)

使用useragent

尝试此更新
<?php
$curlSession = curl_init();
curl_setopt($curlSession, CURLOPT_URL, 'http://192.168.1.3/');
curl_setopt($curlSession,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($curlSession, CURLOPT_BINARYTRANSFER, true);
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);
$homepage = curl_exec($curlSession);
curl_close($curlSession);
echo $homepage ;
?>

如果仍然是空白页面,则必须在firefox上安装此add-on并查看“request-headers”和“response-headers” enter image description here

答案 1 :(得分:0)

HTTP状态401表示UNAUTHORIZED。您需要使用username和passwd发送服务器。

使用file_get_contents,您可以添加第二个参数。这是一个context-steam,你可以设置标题信息。

你最好使用curl for file_get_contents打算访问本地文件,因为它是一个块函数。添加如下选项,这是一个基本授权。

curl_setopt($ch,CURLOPT_USERPWD,"my_username:my_password");