2014-05-05 112 views
0

我想要用戶輸入的URL頁面的源代碼。我們可以使用file_get_contents獲取它。

但是在使用的file_get_contents它給:

Warning: file_get_contents(http://www.google.com): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /var/www/html/scrap/yelp/simple_html_dom.php on line 75 

如果我打開瀏覽器,從相同的URL,它會打開正確。谷歌的人如何得到我使用file_get_content或瀏覽器進行查詢?

更新:我試着捲曲還,但還是同樣的錯誤

+0

您是否嘗試過使用捲曲也? 你可以寫更多的代碼嗎? – Seti

+0

@Seti:是的,捲曲也給出了相同的錯誤 – user123

+0

你可以閱讀這篇文章http://stackoverflow.com/questions/20095175/php-readfile-vs-file-get-contents – truesource

回答

0

嘿,它會正常工作的問題是,你的代碼是錯誤的。

file_get_contents('http://www.google.com'); 

使用它它將工作。 如果有其他任何幫助,請讓我知道。與用戶代理

+0

Shivam:我使用相同的代碼,沒有代碼問題。它是關於繞過阻擋 – user123

+0

在這個網站上運行這個代碼,你會知道http://www.compileonline.com/execute_php_online.php – Shivam

+0

老兄,file_get_contents工作正常。問題是我的服務器IP被谷歌阻止。所以,現在你有什麼解決方案 – user123

1

嘗試捲曲

function get_web_page($url){ 

    $options = array(
      CURLOPT_RETURNTRANSFER => true, 
      CURLOPT_HEADER   => false, 
      CURLOPT_FOLLOWLOCATION => true, 
      CURLOPT_USERAGENT  => "Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0", 
      CURLOPT_SSL_VERIFYPEER => false, 

     ); 

     $ch  = curl_init($url); 
     curl_setopt_array($ch, $options); 
     $content = curl_exec($ch); 
     curl_close($ch); 

     return $content; 
} 

echo get_web_page("http://www.google.com"); 
+0

它給了我這個錯誤:'對不起,你不能訪問此頁面。您的IP地址是:x.x.x.x'(*我的服務器IP) – user123

+0

我覺得谷歌以某種方式知道你是通過PHP做的 - 也許你需要嘲笑由cURL發送的頭,所以他們不會看起來像PHP一樣。 – Seti

+0

我想你最近發送了太多的自動化請求。 Google可能暫時阻止了您的服務器IP。稍後再試。 –