J.C
J.C

Reputation: 1439

How do I CURL www.google.com - it keeps redirecting me to .co.uk

I am using CURL to check for the existence of a URL (HEAD request) but when I test it with www.google.com, it redirects me to www.google.co.uk - probably because my server is UK-based.

Is there a way you can stop this from happening? I don't want to remove the CURLOPT_FOLLOWLOCATION option as this is useful for 301 redirects etc.

Part of my code is below;

$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'] contains www.google.co.uk when I set $url as www.google.com

Upvotes: 13

Views: 9801

Answers (7)

Pieter
Pieter

Reputation: 41

Another option is to use simply encrypted.google.com. That won't redirect.

Upvotes: 4

Michael
Michael

Reputation: 6405

You should turn off the follow location from curl (set it to false) and you won't be redirected anymore ...

   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);

Upvotes: 0

Skilldrick
Skilldrick

Reputation: 70849

A bit of a hack, but how about using an IP address? http://216.239.59.147/ http://66.102.7.104/

Upvotes: 1

m4rinos
m4rinos

Reputation: 458

One way to avoid Google from deciding what country you are in, is by setting a different IP address. Just get one of the many US proxy servers from the Web and do something like this:

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

This way, Google will think you come form a US IP address and not redirect to a local Google.

Upvotes: 0

Alix Axel
Alix Axel

Reputation: 154553

Try accessing www.google.com/ncr, it'll avoid the redirect to the .co.uk (or any other national) page.

Upvotes: 12

Yoni
Yoni

Reputation: 10321

You need to use curl with a cookie that simulate a similar behavior in a browser.

When you visit google.com from England it redirects you to google.co.uk, however there is a link on that page titled "go to google.com" that lets you go back to google.com and stay there. It uses a cookie to remember your site preferences.

For example, here are the cookies that I have after doing this (using firefox):

alt text

Upvotes: 13

user253984
user253984

Reputation:

You could use www.google.co.uk directly, no difference there. google.com/.net always redirect to your location but if you use a country TLD like .co.uk it will not redirect.

There is no way (known to me) to prevent the redirect when using .com or .net.

Upvotes: 0

Related Questions