file_get_contents()/ curl获取意外页面

时间:2013-12-12 20:16:52

标签: php

我正在用php进行一些搜索。我一直在提取数据,包括链接到下一个相关页面,所以整个过程都是自动的。问题是我似乎得到一个页面,与我在浏览器中使用该URL的预期相比略有修改(例如日期不同)。

我尝试过使用curl和get_file_contents,但都得到了错误的文件。

目前我正在使用:

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

进一步更新:

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

1 个答案:

答案 0 :(得分:2)

可以有很多东西......

  1. 服务器可能会根据Cookie和发送的标头以不同方式呈现网页
  2. 服务器可能会根据服务器上的现有前置条件和状态以不同方式呈现页面
  3. 您可能在其间有一个基于用户代理修改内容的代理,因为您没有特定的用户代理(例如CURL浏览器),那么您的代理会发送回不同的内容
  4. 这只是可能发生的一些事情!