我试图从使用PHP的同一站点读取页面。我碰到这个good discussion并决定使用卷曲方法建议:防止被脚本抓取
function get_web_page($url)
{
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch);
$header = curl_getinfo($ch);
curl_close($ch);
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
}
//Now get the webpage
$data = get_web_page("https://www.google.com/");
//Display the data (optional)
echo "<pre>" . $data['content'] . "</pre>";
所以,对于我来说,我叫get_web_page
这样的:
$target_url = "http://" . $_SERVER['SERVER_NAME'] . "/press-release/index.html";
$page = get_web_page($target_url);
的事情,我不能fathom在我所有的测试服务器上都能正常工作,只有一个。我已验证相关服务器上可以使用cURL。此外,设置`$ target_url =“http://www.google.com”工作正常。所以,我相当肯定,罪魁祸首与图书馆没有任何关系。
难道是因为某些服务器阻止他们被这种类型的脚本“抓取”?或者,也许我在这里错过了一些东西?
预先感谢。
类似的问题:
您是否收到任何错误消息或意外输出? – 2011-12-20 09:38:54
@Jack Maney:不,我的脚本/页面只是保持“尝试”(浏览器看起来正在忙着加载内容),直到超时。 – moey 2011-12-20 09:44:58