以網頁程式定期抓取網站資料時, 最忌諱被誤認為是駭客攻擊, 導致被拒絕存取, 而 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 秒再進行擷取
這樣在伺服端看來就比較不那麼突兀了.
沒有留言:
張貼留言