Php 为什么cURL请求返回国际页面(例如谷歌搜索)?

Php 为什么cURL请求返回国际页面(例如谷歌搜索)?,php,curl,Php,Curl,我正在尝试执行一个cURL请求(直接从shell或通过PHP),该请求将返回一个URL的内容,该内容与通过浏览器发出的请求基本相同(不包括任何cookie/登录等) 对www.google.com的基本cURL请求将返回谷歌搜索的日文版本,其中包含一些字符编码问题 使用包括设置标准用户代理和跟踪位置在内的选项进行测试仍然不会产生我认为与我的浏览器非常相似的请求。我是否应该使用一组标志来模拟浏览器请求 下面的代码目前用于测试,但即使存储了cookie,谷歌也假定该位置是日本(Google.co.j

我正在尝试执行一个cURL请求(直接从shell或通过PHP),该请求将返回一个URL的内容,该内容与通过浏览器发出的请求基本相同(不包括任何cookie/登录等)

对www.google.com的基本cURL请求将返回谷歌搜索的日文版本,其中包含一些字符编码问题

使用包括设置标准用户代理和跟踪位置在内的选项进行测试仍然不会产生我认为与我的浏览器非常相似的请求。我是否应该使用一组标志来模拟浏览器请求

下面的代码目前用于测试,但即使存储了cookie,谷歌也假定该位置是日本(Google.co.jp)


卷发时可能缺少饼干?也许谷歌会在你的电脑上存储一些cookie,以了解你来自哪个地区,并在此为你提供正确的谷歌网站。请发布你正在使用的代码。我已经在问题中包含了我当前的测试代码,谢谢@cryptic@Rhys,您的服务器位于哪里?我知道一个事实,当谷歌检测到一个IP地址来自某个国家时,它将提供不同的语言。当你不得不在浏览器上使用代理,并说使用来自中国的代理,它将为谷歌的中文版服务时,这有点烦人。我相信这是你的问题。您的服务器位于该区域,Google正在检测该区域,因此将提供相应的语言。当然,@cryptic!现在我觉得自己很愚蠢。是的,我的数据中心在东京用光了,尽管我认为移动位置比代理更好。
$header = array(
        "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language: en-us,en;q=0.5",
        "Connection: keep-alive",
        "Cache-Control: no-cache",
        "Content-Type: application/x-www-form-urlencoded; charset=UTF-8",
        "Pragma: no-cache",
    );
$useragent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';

$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_URL, $request);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$data = curl_exec($ch);
curl_close($ch);
$header = array(
        "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language: en-us,en;q=0.5",
        "Connection: keep-alive",
        "Cache-Control: no-cache",
        "Content-Type: application/x-www-form-urlencoded; charset=UTF-8",
        "Pragma: no-cache",
    );
$useragent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';

$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_URL, $request);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_PROXY, 'PROXY_IP_HERE:PROXY_PORT'); // Use a proxy located in USA
$data = curl_exec($ch);
curl_close($ch);