我如何 CURL www.google.com - 它不断将我重定向到 .co.uk
Posted
技术标签:
【中文标题】我如何 CURL www.google.com - 它不断将我重定向到 .co.uk【英文标题】:How do I CURL www.google.com - it keeps redirecting me to .co.uk 【发布时间】:2011-01-11 17:55:05 【问题描述】:我正在使用 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);
当我将$url
设置为www.google.com
时,$data['url']
包含www.google.co.uk
【问题讨论】:
@Webbo - 我知道你已经接受了蒂姆的回答,但有办法做到这一点(见我的回答)。 谢谢,你每天都能学到东西! 哇,这个网站太棒了,谢谢大家! 没问题。欢迎使用 Stack Overflow! 【参考方案1】:另一种选择是使用简单的 encrypted.google.com。那不会重定向。
【讨论】:
【参考方案2】:你应该关闭 curl 的跟随位置(设置为 false),你将不再被重定向......
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);【讨论】:
【参考方案3】:有点小技巧,但是使用 IP 地址怎么样? http://216.239.59.147/ http://66.102.7.104/
【讨论】:
【参考方案4】:避免 Google 决定您所在国家/地区的一种方法是设置不同的 IP 地址。只需从 Web 获取众多美国代理服务器之一,然后执行以下操作:
$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。
【讨论】:
【参考方案5】:尝试访问www.google.com/ncr
,它将避免重定向到 .co.uk(或任何其他国家/地区)页面。
【讨论】:
太棒了,这将是我的新开始页面。【参考方案6】:您需要将 curl 与在浏览器中模拟类似行为的 cookie 一起使用。
当您从英国访问 google.com 时,它会将您重定向到 google.co.uk,但是该页面上有一个标题为“转到 google.com”的链接,可让您返回 google.com 并停留在那里。它使用 cookie 来记住您的网站偏好。
例如,这是我在执行此操作后拥有的 cookie(使用 firefox):
【讨论】:
+1 用于将您带回 google.com 的 cookie。现在他只需要弄清楚 CURL 使用哪个 cookie。 干杯 Yoni - 你的回答似乎更直接!【参考方案7】:您可以直接使用 www.google.co.uk,没有区别。 google.com/.net 始终重定向到您的位置,但如果您使用 .co.uk 之类的国家 TLD,它将不会重定向。
在使用 .com 或 .net 时,没有办法(我知道)阻止重定向。
【讨论】:
以上是关于我如何 CURL www.google.com - 它不断将我重定向到 .co.uk的主要内容,如果未能解决你的问题,请参考以下文章