Php 文件\u获取内容()/curl获取意外页面
我正在用php做一些刮削。我一直在提取数据,包括到下一个相关页面的链接,所以整个过程是自动的。问题是,与我希望在浏览器中使用该URL相比,我似乎得到了一个稍微修改的页面(例如,日期不同) 我尝试过使用curl和get_file_内容,但都得到了错误的文件 目前我正在使用: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
$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结果进行比较。不,浏览器仍然会获得所需的页面。啊,好的。是否有任何参数可以传递给curl以模拟我的浏览器?您可以使用
curl\u setopt()
设置自定义用户代理标识符:curl\u setopt($curl\u handle,CURLOPT\u USERAGENT,'任何您喜欢的用户代理字符串')代码>