强制CURL(PHP)访问其他语言环境(pt-BR> en-US)

时间:2013-08-27 17:26:40

标签: php curl locale

网站: https://www.origin.com/pt-br/store/

我的位置:巴西(pt-br) 我的虚拟主机位置:USA(en-us)

我正在使用cURL捕获商店页面,因此我可以收集促销并在我的网站上设置。

问题在于,每次我访问商店时,它都会将我“重定向”到en-us页面,因为我的主机位于美国。但我需要pt-br页面。

我尝试过设置区域设置和时区,但没有任何效果。如果我从我的电脑执行,我得到了pt-br页面。 关于我如何欺骗服务器认为我的网站是在巴西而不是在美国托管的任何想法?

我正在使用的代码:

$url = 'https://www.origin.com/pt-br/store/';

$curl = curl_init();
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_ENCODING, "");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
curl_setopt($curl, CURLOPT_MAXREDIRS, 10);
curl_setopt($curl, CURLOPT_VERBOSE, 2);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Accept-Language: pt-BR;q=0.8,en-US;q=0.6,en;q=0.4"));

curl_setopt($curl, CURLOPT_URL, $url);
$html = curl_exec($curl);

print_r($html);

1 个答案:

答案 0 :(得分:0)

您是否在请求标头中设置了所需的语言?您可以在优先级列表中指定它们,如下所示:

Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4

在这种情况下,如果可能,要求服务器提供德语作为第一选项。作为后备,请求实例(我的浏览器)也对美国英语(或仅英语)感到满意,但优先级较低(0.8 vs. 0.6 vs. 0.4)。所以你应该尝试像

这样的东西
Accept-Language:pt-BR;q=0.8,en-US;q=0.6,en;q=0.4

可以通过调用

来设置
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept-Language: pt-BR;q=0.8,en-US;q=0.6,en;q=0.4"));