2013-11-21 69 views
0

我試圖用cURL或file_get_content獲取頁面內容。在許多網站上它正在工作,但我試圖在朋友的服務器上做到這一點,事實並非如此。PHP cURL,file_get_contents空白頁

我認爲這是一個標題或類似的東西的保護。我得到以下錯誤代碼: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 
} 

我也tryed與捲曲:

$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它工作。

+0

我只是問我的朋友。 –

+0

你會得到什麼錯誤?你確定你可以訪問'192.168.1.3'嗎? '192.168.1.3'是**內部IP **,並且要求你在同一個網絡上(並且很可能是同一個子網,所以你自己的IP很可能必須以'192.168.1.X'開始 - * *和**在同一個網絡上 - 這將**不**工作在互聯網上,除非你使用VPN)。 telnet 192.168.1.3 80'會發生什麼? – h2ooooooo

+0

'401'是'''''403'是'forbiden'您能否請重新檢查錯誤? 是路由器還是設備? – K3rnel31

回答

0

嘗試與用戶代理此更新

<?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 ; 
?> 

如果仍然收到空白頁,您必須安裝此add-on在Firefox上,看到了「請求頭」和「響應報頭」 enter image description here

+0

仍然得到一個空白頁。我在其他網站上嘗試過,但是在我的朋友的網站上,它仍然不起作用 – Maxime

+0

@Maxime如果你告訴我更多關於192.168.1.3的信息,我可以幫你什麼 – K3rnel31

0

HTTP狀態401意味着UNAUTHORIZED。您需要使用用戶名和密碼發送服務器。

使用file_get_contents,您添加第二個參數。這是一個背景 - 蒸汽,您可以設置標題信息。

你最好使用curl for file_get_contents打算訪問本地文件,因爲它是一個塊函數。添加選項如下,這是一個基本的授權。

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

403 forbiden和401未授權它是不一樣的用戶很遺憾,401 forbiden – K3rnel31

+0

是的K3rnel31是正確的,不需要密碼也不需要登錄 – Maxime

+0

401 Forbidden是當您不允許訪問您請求的頁面或文件時,Web服務器生成的HTTP狀態代碼。例如,如果頁面受密碼保護且您不知道密碼,則可能會看到401 Forbidden錯誤。有些網站被鎖定,只有當地公司或學校網絡上的用戶才能訪問網站的部分內容。在這些情況下,您還會看到401禁止的錯誤。 – fayhot