2010-02-01 6 views
13

Ich benutze CURL, um nach der Existenz einer URL (HEAD Anfrage) zu überprüfen, aber wenn ich es mit www.google.com teste, leitet es mich zu www.google.co.uk - wahrscheinlich, weil mein Server in Großbritannien basiert.Wie lese ich CURL www.google.com - es leitet mich weiter zu .co.uk

Gibt es eine Möglichkeit, dies zu verhindern? Ich möchte die Option CURLOPT_FOLLOWLOCATION nicht entfernen, da dies für 301-Weiterleitungen usw. nützlich ist.

Teil meines Codes ist unten;

$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'] enthält www.google.co.uk wenn ich gesetzt $url als www.google.com

+2

@Webbo - Ich weiß, dass Sie Tims Antwort akzeptiert haben, aber es gibt einen Weg, es zu tun (siehe meine Antwort). –

+0

Danke, du lernst jeden Tag etwas! –

+2

Wow, diese Seite ist großartig, danke an alle! –

Antwort

13

Sie müssen curl mit einem Cookie verwenden, das ein ähnliches Verhalten in einem Browser simuliert.

Wenn Sie google.com von England aus besuchen, werden Sie auf google.co.uk weitergeleitet. Es gibt jedoch einen Link auf dieser Seite mit dem Titel "go to google.com", mit dem Sie zu google.com zurückkehren und dort bleiben können . Es verwendet einen Cookie, um sich an Ihre Website-Einstellungen zu erinnern.

Zum Beispiel, hier die Cookies sind, die ich habe dies nach tun (mit Firefox):

alt text

+0

+1 für das Cookie, das Sie zurück zu google.com führt. Jetzt muss er nur herausfinden, welches Cookie mit CURL verwendet werden soll. – FrustratedWithFormsDesigner

+0

Er kann beides, nicht wahr? – Yoni

+0

Prost Yoni - Ihre Antwort scheint direkter zu sein! –

0

Sie könnten direkt verwenden www.google.co.uk, keinen Unterschied gibt. google.com/.net leitet immer zu Ihrem Standort weiter, aber wenn Sie eine Länder-TLD wie .co.uk verwenden, wird es nicht umgeleitet.

Es gibt keine Möglichkeit (mir bekannt), die Umleitung zu verhindern, wenn Sie .com oder .net verwenden.

12

Versuchen www.google.com/ncr Zugriff, es wird die Umleitung auf die .co.uk vermeiden (oder eine andere nationale) Seite.

+0

Super, das wird meine neue Startseite sein. –

0

Eine Möglichkeit, Google zu vermeiden, von der Entscheidung, in welchem ​​Land Sie sich befinden, ist durch eine andere IP-Adresse einstellen. Nehmen Sie einfach eine der vielen US-Proxy-Server aus dem Internet und etwas tun, wie folgt aus:

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

Auf diese Weise wird denken, Google Sie kommen eine US-IP-Adresse bilden und nicht auf eine lokale Google umleiten.

0

Sie sollten die Folge Lage von Curl (setzen Sie ihn auf false) ausschalten und Sie werden nicht mehr ...

 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); 
4

Eine weitere Option umgeleitet werden ist einfach encrypted.google.com zu verwenden. Das wird nicht umgeleitet.