Как я 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. Это не будет перенаправлено.
Ответ 4
Немного взлома, но как насчет использования IP-адреса? http://216.239.59.147/ http://66.102.7.104/
Ответ 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);