Как я 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

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

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

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

alt text

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

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

Немного взлома, но как насчет использования IP-адреса? http://216.239.59.147/ http://66.102.7.104/

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

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

Один из способов избежать того, чтобы 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.

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

    curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, false);