我試圖從使用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