2013年6月20日 星期四

網頁資料擷取易容術

以網頁程式定期抓取網站資料時, 最忌諱被誤認為是駭客攻擊, 導致被拒絕存取, 而 PHP/cURL 可以使用易容術來避免誤會, 方法是在 cURL 的選項設定 setopt 中, 把 USERAGENT 設為一般常見瀏覽器, 例如以 Chrome 而言 :

$UA="Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36(KHTML, like Gecko) ".
        "Chrome/27.0.1453.110 Safari/537.36";

這樣在 PHP 擷取程式中, 以這個 $UA 作為 cURL 之 CURLOPT_USERAGENT 值, 就可以讓程式看起來比較像是用一般瀏覽器在下載檔案了 :

curl_setopt($ch, CURLOPT_USERAGENT, $UA);

當然, 光是這樣並沒有辦法完全避免誤會你是用程式抓檔案, 固定的來源 IP 與下載週期也很容易被識破. 當然, 來源 IP 是沒辦法改的, 而用 cron table 觸發也會導致固定的下載頻率. 不過這個可以用隨機的 sleep() 來修飾, 亦即在進行擷取前, 先隨機休眠一段時間  :

sleep(rand(5, 50));  //休息 5~50 秒再進行擷取

這樣在伺服端看來就比較不那麼突兀了.

沒有留言 :