Php 文件\u获取内容()/curl获取意外页面

Php 文件\u获取内容()/curl获取意外页面,php,Php,我正在用php做一些刮削。我一直在提取数据,包括到下一个相关页面的链接,所以整个过程是自动的。问题是,与我希望在浏览器中使用该URL相比,我似乎得到了一个稍微修改的页面(例如,日期不同) 我尝试过使用curl和get_file_内容,但都得到了错误的文件 目前我正在使用: $url = "http://www.example.com"; $ch = curl_init(); $timeout = 5; $ch = curl_init($url); curl_setopt($ch, CU

我正在用php做一些刮削。我一直在提取数据,包括到下一个相关页面的链接,所以整个过程是自动的。问题是,与我希望在浏览器中使用该URL相比,我似乎得到了一个稍微修改的页面(例如,日期不同)

我尝试过使用curl和get_file_内容,但都得到了错误的文件

目前我正在使用:

$url = "http://www.example.com";

    $ch = curl_init();
$timeout = 5;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
url_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);

$temp = curl_exec($ch);
curl_close($ch);
这是怎么回事

更新:

我试着用下面的代码来模拟浏览器,但仍然没有成功。我觉得这很奇怪

function get_url_contents($url){
$crl = curl_init();
$timeout = 10;
$header=array(
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026     Firefox/3.6.12',
 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
 'Accept-Language: en-us,en;q=0.5',
'Accept-Encoding: gzip,deflate',
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'Keep-Alive: 115',
'Connection: keep-alive',
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 

curl_setopt ($crl, CURLOPT_URL,$url);
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt ($crl, CURLOPT_AUTOREFERER, FALSE);
curl_setopt ($crl, CURLOPT_FOLLOWLOCATION, FALSE);
$ret = curl_exec($crl);
curl_close($crl);
return $ret;
}
进一步更新:

似乎该网站正在使用我的位置进行区分。有区域设置选项吗?

可以有很多东西

  • 服务器可能会根据发送的Cookie和标头呈现不同的页面
  • 服务器可能会根据服务器上现有的先决条件和状态以不同的方式呈现页面
  • 您可能有一个基于用户代理修改内容的代理,由于您没有特定的用户代理(如CURL browser),因此您的代理将发送回不同的内容

  • 这只是一些可能发生的事情

    尝试删除浏览器中为该域存储的所有cookie,然后再次加载并将结果与curl结果进行比较。不,浏览器仍然会获得所需的页面。啊,好的。是否有任何参数可以传递给curl以模拟我的浏览器?您可以使用
    curl\u setopt()
    设置自定义用户代理标识符:
    curl\u setopt($curl\u handle,CURLOPT\u USERAGENT,'任何您喜欢的用户代理字符串')