2010-02-01 15 views
13

Estoy usando CURL para verificar la existencia de una URL (solicitud HEAD) pero cuando la pruebo con www.google.com, me redirige a www.google.co.uk - probablemente porque mi servidor está en el Reino Unido.¿Cómo CURL www.google.com? Me redirige a .co.uk

¿Hay alguna manera de evitar que esto suceda? No quiero quitar la opción CURLOPT_FOLLOWLOCATION ya que esto es útil para 301 redirecciones etc.

parte de mi código está por debajo;

$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'] contiene www.google.co.uk cuando me puse $url como www.google.com

+2

@Webbo - Sé que has aceptado la respuesta de Tim, pero hay una manera de hacerlo (ver mi respuesta). –

+0

¡Gracias, aprendes algo todos los días! –

+2

Guau, este sitio es increíble, ¡gracias a todos! –

Respuesta

13

Debe usar curl con una cookie que simule un comportamiento similar en un navegador.

Cuando visitas google.com desde Inglaterra te redirige a google.co.uk, sin embargo, hay un enlace en esa página titulado "ir a google.com" que te permite volver a google.com y quedarte allí . Utiliza una cookie para recordar las preferencias de su sitio.

Por ejemplo, aquí son las galletas que tengo después de hacer esto (usando Firefox):

alt text

+0

+1 para la cookie que lo lleva de vuelta a google.com. Ahora solo tiene que descubrir qué cookie usar con CURL. – FrustratedWithFormsDesigner

+0

Puede usar ambos, ¿no? – Yoni

+0

Cheers Yoni: ¡su respuesta parece ser más directa! –

0

Usted podría utilizar www.google.co.uk directamente, no hay diferencia allí. google.com/.net siempre redirecciona a su ubicación, pero si utiliza un TLD de país como .co.uk, no se redireccionará.

No hay forma (que yo sepa) de evitar el redireccionamiento al utilizar .com o .net.

12

intente acceder www.google.com/ncr, que va a evitar la redirección a la .co.uk (o cualquier otra página nacional).

+0

Impresionante, esa será mi nueva página de inicio. –

0

Una forma de evitar que Google decidiendo qué país donde se encuentra, es mediante el establecimiento de una dirección IP diferente. Acaba de obtener uno de los muchos servidores proxy de Estados Unidos desde la Web y hacer algo como esto:

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

De esta manera, Google pensará que venga formar una dirección IP de Estados Unidos y no redirigir a un local de Google.

0

Deberá desactivar la ubicación seguimiento de rizo (en posición falsa) y no será redirigido más ...

 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); 
4

Otra opción es utilizar simplemente encrypted.google.com. Eso no redirigirá.

Cuestiones relacionadas