2010-02-01 14 views
13

Sto usando CURL per verificare l'esistenza di un URL (richiesta HEAD) ma quando lo provo con www.google.com, mi reindirizza a www.google.co.uk - probabilmente perché il mio server è basato nel Regno Unito.Come faccio a CURL www.google.com - continua a reindirizzare a .it

C'è un modo per impedire che ciò accada? Non voglio rimuovere l'opzione CURLOPT_FOLLOWLOCATION in quanto è utile per reindirizzamenti 301 ecc.

Parte del mio codice è inferiore;

$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 quando ho impostato $url come www.google.com

+2

@Webbo - So che hai accettato la risposta di Tim, ma c'è un modo per farlo (vedi la mia risposta). –

+0

Grazie, impari qualcosa ogni giorno! –

+2

Wow, questo sito è fantastico, grazie a tutti! –

risposta

13

È necessario utilizzare arricciare con un cookie che simula un comportamento simile in un browser.

Quando visiti google.com dall'Inghilterra ti reindirizza a google.co.uk, tuttavia esiste un link in quella pagina intitolato "vai a google.com" che ti consente di tornare a google.com e di rimanere lì . Usa un cookie per ricordare le preferenze del tuo sito.

Per esempio, qui i biscotti che ho dopo aver fatto questo (utilizzando Firefox):

alt text

+0

+1 per il cookie che ti riporta a google.com. Ora deve solo capire quale cookie usare con CURL. – FrustratedWithFormsDesigner

+0

Può usare entrambi, non è vero? – Yoni

+0

Cheers Yoni - la tua risposta sembra essere più diretta! –

0

Si potrebbe utilizzare www.google.co.uk direttamente, nessuna differenza c'è. google.com/.net reindirizza sempre la tua posizione ma se utilizzi un TLD di un paese come .co.uk non reindirizzerà.

Non esiste un modo (noto a me) per impedire il reindirizzamento quando si utilizza .com o .net.

12

provare ad accedere a www.google.com/ncr, sarà evitare il reindirizzamento alla .co.uk (o qualsiasi altra pagina nazionale).

+0

Fantastico, questa sarà la mia nuova pagina iniziale. –

0

Un modo per evitare di Google di decidere quale paese ci si trova, è impostando un indirizzo IP diverso. Basta avere uno dei tanti server proxy degli Stati Uniti dal Web e fare qualcosa del genere:

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

In questo modo, Google penserà vieni formare un indirizzo negli Stati Uniti IP e non reindirizzare a un Google locale.

0

Si consiglia di spegnere la posizione follow dal ricciolo (impostarlo a false) e non sarete reindirizzati più ...

 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); 
4

Un'altra opzione è quella di utilizzare semplicemente encrypted.google.com. Questo non verrà reindirizzato.

Problemi correlati