前一陣子小編接到一個客户的反映,網站被一個 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 的,所以小編的方法可以屏蔽掉絕大多數的採集程序,如果你會分析日誌的話,基本上已經沒有人能很順利的採集你網站的內容了。