隻要是建有數據量比較多的網站,幾乎不可避免采集的情況,這方面我們已經有多年的對付經驗,主要是通過分析Web訪問日志,找到采集的規律,相應來設置屏蔽IP地址或者URL網址來解決。
國内的Linux服務器上我們都安裝了Squid作為Apache的前端緩存,所以我們遇到采集的情況就分析Squid的日志,在squid.conf文件中進行設置屏蔽,然後重啟Squid服務就可以。
近期租用的國外Linux服務器上默認是沒有Squid的,我們也就隻用了Apache作為Web服務器,修改了httpd.conf來讓Apache的日志文件顯示更詳細的虛拟主機域名、User-Agent等信息,以便遇到采集的情況可以分析。
前一陣子遇到來自固定某個或者某段IP的采集,我們就修改httpd.conf文件,在影響的主機設置中添加這樣的代碼:
Order Deny,Allow Deny from 125.115.2.85 Deny from 91.228.196.234
然後重啟Apache服務就可以。
這兩天遇到比較狡猾的采集,平均每10秒采集一次,IP地址分散到10多個,日志中的User-Agent也是各種都有,這樣僅僅靠屏蔽IP還無法解決,但通過分析發現采集是順着某種頁面的很多分頁順序進行的,例如:http://www.example.com/path/file?page=12345 ,這個12345在不斷增加中,因此隻要屏蔽對http://www.example.com/path/file 這類URL的訪問,就可以全部屏蔽這些采集。
設置可修改httpd.conf,也可以修改具體目錄下的.htaccess文件,添加rewrite規則如下:
RewriteCond %{HTTP_HOST} ^can\.bizdirlib\.com(.*)$ RewriteCond %{REQUEST_URI} ^\/business_directory\/S\_\%26\_J(.*)$ RewriteRule .* - [F,L]
這樣就屏蔽了can.bizdirlib.com站點下/business_directory/S_%26_J 這一類URL。
评论3
補充:禁止某種User-Agent訪問的辦法
除了屏蔽IP和被訪問網址以外,還可以設置屏蔽User-Agent,在.htaccess中設置的例子如下:
另外,還可以把httpd.conf中屏蔽IP的辦法也改為在.htaccess中設置,例如:
那麼在tomcat中是在哪裡修改才可以達到禁止User
那麼在tomcat中是在哪裡修改才可以達到禁止User-aget訪問的效果呢抱歉,我自己沒有用過Tomcat。
抱歉,我自己沒有用過Tomcat。