2010-02-01 26 views
13

我正在使用CURL檢查是否存在URL(HEAD請求),但是當我使用www.google.com進行測試時,它會將我重定向到www.google.co.uk - 可能是因爲我的服務器是基於英國的。我如何CURL www.google.com - 它一直將我重定向到.co.uk

有沒有辦法阻止這種情況發生?我不想刪除CURLOPT_FOLLOWLOCATION選項,因爲這對於301重定向等是有用的。

我的部分代碼如下;

$ch = curl_init(); 

    // set URL and other appropriate options 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_MAXREDIRS, 5); 
    curl_setopt($ch, CURLOPT_NOBODY, true); 
    curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
    curl_setopt($ch, CURLOPT_FORBID_REUSE, true); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 4); 

    $output = curl_exec($ch); 

    // get data  
$data = curl_getinfo($ch); 

$data['url']包含www.google.co.uk當我設置$urlwww.google.com

+2

@Webbo - 我知道你已經接受了蒂姆的回答,但是有辦法做到這一點(參見我的回答)。 –

+0

謝謝,你每天都會學到一些東西! –

+2

哇,這個網站很棒,謝謝大家! –

回答

13

您需要使用curl和cookie來模擬瀏覽器中的類似行爲。

當您從英國訪問google.com時,它會將您重定向到google.co.uk,但該頁面上有一個鏈接,名爲「go to google.com」,可讓您返回google.com並留在那裏。它使用cookie來記住您的網站偏好。

例如,這裏有我這樣做(用firefox)後,有餅乾:

alt text

+0

對於將您帶回google.com的Cookie。現在他只需要弄清楚使用CURL的cookie。 – FrustratedWithFormsDesigner

+0

他可以同時使用,不是嗎? – Yoni

+0

乾杯Yoni - 你的答案似乎更直接! –

0

你可以直接使用www.google.co.uk,沒有區別在那裏。 google.com/.net總是重定向到您的位置,但是如果您使用像.co.uk這樣的國家TLD,它將不會重定向。

在使用.com或.net時,無法防止重定向(我知道)。

12

嘗試訪問www.google.com/ncr,它會避免重定向到.co.uk(或任何其他國家)頁面。

+0

真棒,這將是我的新開始頁面。 –

0

的方法之一,是通過設置不同的IP地址。剛剛獲得來自Web的許多美國代理服務器之一,做這樣的事情:

$ch=curl_init(); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch,CURLOPT_FOLLOWLOCTION,1); 
curl_setopt($ch,CURLOPT_PROXY,"8.12.33.159"); 
curl_setopt($ch,CURLOPT_PROXYPORT,"80"); 
curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3"); 
curl_setopt($ch,CURLOPT_URL,$URI); 
$results=curl_exec($ch); 
curl_close($ch); 

這種方式,谷歌會認爲你來形成一個美國的IP地址,而不是重定向到本地谷歌。

0

你應該從捲曲關閉後續的位置(設置爲false),你將不再被重定向...

 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); 
4

另一種選擇是簡單地encrypted.google.com使用。這不會重定向。

相關問題