一般有以下兩種判斷方法。
方法1:找出「搜尋引擎爬蟲」可能的 User-Agent,符合的即為「搜尋引擎爬蟲」。
方法2:找出「瀏覽器」可能的 User-Agent,不符合的即是「網路爬蟲」,這邊當做都是「搜尋引擎爬蟲」。當然,如果是要較精準的分辨出「搜尋引擎爬蟲」和其他網路爬蟲,還是要使用方法1。
一般情況,大都只是要分辨出所有網路爬蟲(搜尋引擎、其他爬蟲),所以這邊選用方法2,因為常用的瀏覽器 User-Agent,比較容易知道、也可自己測試取得,
而且一般使用者使用瀏覽器時,應該都會傳送正常的 User-Agent。
所以應該可以放心將不符合的當作是網路爬蟲(搜尋引擎爬蟲)。
檢查方法:
/** * 判斷是否為網路爬蟲 * @return boolean */ function webCrawlerDetect() { $pattern = '/firefox|chrome|msie|opera|safari|edge|yabrowser|maxthon|konqueror|netscape|lynx|links/i';//瀏覽器 return !(isset($_SERVER['HTTP_USER_AGENT']) && preg_match($pattern, $_SERVER['HTTP_USER_AGENT'])); }其他:
可能會在瀏覽器的 User-Agent 發現其他瀏覽器的關鍵字,
例如 Chrome、Edge 的 User-Agent 可能發現 Mozilla、Safari。
這是因為有的網站會針對不同瀏覽器特有功能,做適當的回應。
所以當新的瀏覽器,也相容其他瀏覽器特有功能時,瀏覽器便用此方式,讓網站也能如期顯示。
參考 WebAIM: History of the browser user-agent string
沒有留言:
張貼留言