Как я CURL www.google.com - он перенаправляет меня на .co.uk

Я использую CURL для проверки наличия URL-адреса (HEAD-запрос), но когда я тестирую его с помощью www.google.com, он перенаправляет меня на www.google.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, когда я устанавливаю $url как www.google.com

Ответы

Ответ 1

Вам нужно использовать завиток с файлом cookie, который имитирует аналогичное поведение в браузере.

Когда вы посещаете google.com из Англии, он перенаправляет вас на google.co.uk, однако на этой странице есть ссылка "go to google.com", которая позволяет вернуться на google.com и остаться там. Он использует cookie для запоминания настроек вашего сайта.

Например, вот куки, которые у меня есть после этого (с использованием firefox):

alt text

Ответ 2

Попробуйте получить доступ к www.google.com/ncr, это позволит избежать перенаправления на .co.uk(или любую другую национальную) страницу.

Ответ 3

Другой вариант - просто использовать encrypted.google.com. Это не будет перенаправлено.

Ответ 5

Вы можете напрямую использовать www.google.co.uk, без каких-либо различий. google.com/.net всегда перенаправляется на ваше местоположение, но если вы используете TLD страны, например .co.uk, он не будет перенаправлен.

Мне неизвестно, как предотвратить перенаправление при использовании .com или .net.

Ответ 6

Один из способов избежать того, чтобы Google решал, в какой стране вы находитесь, - это установить другой IP-адрес. Просто получите один из многих прокси-серверов в США из Интернета и сделайте что-то вроде этого:

$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);

Таким образом, Google подумает, что вы пришли из американского IP-адреса и не перенаправляетесь на локальный Google.

Ответ 7

Вы должны отключить следующее местоположение от curl (установить его на false), и вы больше не будете перенаправлены...

   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);