2015-08-14 71 views
1

我試着通過Google Hotel Finder檢查一家酒店是否可用。我用下面的PHP代碼:Google Hotel Finder,file_get_contents PHP

<?php 
//get date, in the future with $_POST 

//get source 
$source = file_get_contents('https://www.google.co.uk/hotelfinder/#search;l=london;d=2015-08-14;n=1;usd=1;h=17709217511794056234;si=;av=d'); 

//"Book a room" only shows when room(s) are available 
if (strpos($source, "Book a room") !== false) { 
    echo "Room(s) available"; 
} else { 
    echo "Nothing available"; 
} 

echo $source; 
?> 

當我在我的服務器上運行此代碼,谷歌酒店搜索給了我下面的錯誤信息:「谷歌的Hotel Finder還沒有爲您的瀏覽器進行優化爲獲得最佳效果,請試用Chrome,Firefox 3.5+,Internet Explorer 8+,Safari 4+「。 因此,谷歌檢測到我正在訪問頁面低谷...有沒有辦法忽略或繞過這個「塊」?

+0

不知道如何檢查,但嘗試發送一個用戶代理。 – chris85

+3

是的,停止搜索谷歌頁面,這是明確反對他們的TOS –

+0

不想寫一個「大規模」刮腳本。只適用於我自己的網站。 –

回答

1

您可以嘗試發送帶有標題的用戶代理信息。

$options = array(
    'http'=>array(
    'method'=>"GET", 
    'header'=>"Accept-language: en\r\n" . 
       "Cookie: foo=bar\r\n" . // check function.stream-context-create on php.net 
       "User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10\r\n" // i.e. An iPad 
) 
); 

$context = stream_context_create($options); 
$file = file_get_contents($url, false, $context); 

PHP file_get_contents() and headers