【发布时间】:2012-11-01 20:49:16
【问题描述】:
我编写了一个简单的 PHP 脚本来使用 CURL 获取网站的源代码:
function file_get_contents_curl($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_CAINFO, dirname(__FILE__)."/curl/cacert.pem");
$data = curl_exec($ch);
$url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($data === false)
return false;
return array("content" => $data, "url" => $url, "httpcode" => $httpcode);
}
$data = file_get_contents_curl("https://www.facebook.com");
print_r($data);
在此示例中,我正在获取 facebook 源代码,但它获取的是与不受支持的浏览器相关的页面。实际上重定向后的最终 URL 是这样的:http://www.facebook.com/unsupportedbrowser
有什么问题?
【问题讨论】:
-
Facebook 不代表你的浏览器。它的意思是卷曲。
-
您意识到是 CURL 发出了这个请求,而不是您的浏览器? facebook 进行浏览器检测/重定向,但无法识别 curl。
-
为什么要投反对票?仅仅因为我提到了我的浏览器?请告诉我不投票的解决方案...
-
@hakre - 这并不是那个问题的真正副本,首先那个问题是用 Ruby 编写的,其次,他们 设置了用户代理,但作为 @ 987654322@ 而不是
User-Agent。 -
如果我错了,请纠正我,但这是一个问答网站,对吧?仅仅因为这对您来说是一个微不足道的问题并不意味着这是一个糟糕的问题。
标签: php facebook curl web-crawler