前一陣子小編接到一個客戶的反映,網站被一個 dedecms 站點採集了,需求小編協助防止網站被採集。當時小編也沒有頭緒,只好叫客戶先把伺服器日誌發過來分析下了。透過檢視伺服器日誌,小編髮現一個空 http_user_agent 的 IP 頻繁的對網站發起請求。經過站長工具查詢發現該 IP 正式採集客戶網站的織夢站點的 IP 。當時小編立即聯絡客戶,叫客戶遮蔽這個 IP 。客戶遮蔽 IP 後當天立馬就看到效果了,可是第三天的時候,該織夢站點換了個 IP 又開始對客戶的站點進行採集了。顯然封 IP 的方法不是長久之計。正好有個好基友找到小編問如何判斷瀏覽器型別來返回不同 css 。小編立馬想到了客戶被採集的事,那麼也可以透過判斷 HTTP_USER_AGENT 來達到防止採集的,程式碼如下:

if(!$_SERVER['HTTP_USER_AGENT']) { //判斷是否為空 AGENT
header("Content-type: text/html; charset=utf-8");
echo '不許採集!因為採集的站長 MJJ!';
exit;
}

客戶使用了以上程式碼之後,直到小編髮布此篇文章時也未被再次採集了。

另外可能有人會問程式碼加到哪?(PS:將以上程式碼丟到根目錄的 index.php 或者 functions.php 檔案的<?php 之後即可。當然其他 php 程式也可以使用此方法進行防採集,只需要將此程式碼加到程式的通用檔案或者是入口檔案中即可。)

另外利用 apache 的.htaccess 檔案也可以對訪客的 http_user_agent 進行判斷達到防止惡意爬蟲以及採集的效果,示例程式碼如下:(PS:實際運用中需要根據情況進行修改)

RewriteCond %{HTTP_USER_AGENT} ".*EmbeddedWB.*" [OR]
RewriteCond %{HTTP_USER_AGENT} ".*QunarBot.*" [OR]
RewriteCond %{HTTP_USER_AGENT} ".*Windows 98.*" [OR]
RewriteCond %{HTTP_USER_AGENT} "^Mozilla/4.0$"
RewriteRule ^(.*)$ https://www.weixiaoduo.com/213.html

由於網上能下載的大部分的採集程式都是空 agent 的,所以小編的方法可以遮蔽掉絕大多數的採集程式,如果你會分析日誌的話,基本上已經沒有人能很順利的採集你網站的內容了。