不知道我们各位朋友们的网站是否有出现流量不大,但是我们的主机商会告诉我们某个时间段的时候网站被大量的攻击导致内存占据超标,要求我们处理。同样的,如果我们自己在使用VPS主机环境建站的时候,有些时候因为模拟蜘蛛的抓取、采集,以及有些空User Agent爬虫的抓取,会导致服务器压力较大,内存一直处于较高的占用状态。
往往这样大部分的原因是因为有些被恶意或者故意的User Agent蜘蛛抓取导致的服务器内存占用超过导致网站的访问不能正常,我们可以通过设定.htaccess(Apache服务器)和nginx.conf(Nginx服务器)来解决这些问题。
我们要善于分析网站的日志,在日志中,我们可能会看到有很多来路不明的蜘蛛(搜索引擎之外的蜘蛛我们都可以屏蔽),我们只需要屏蔽掉就可以解决这些问题。
第一、Apache环境
如果我们的虚拟主机、VPS服务器,采用的是Apache环境,我们可以在网站根目录的.htaccess文件进行设置。
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (^$|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms) [NC]
RewriteRule ^(.*)$ – [F]
修改我们网站的.htaccess文件,屏蔽一些没有必要的蜘蛛User Agent。这里我们较为常用的是屏蔽空User Agent。
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule ^(.*)$ – [F]
第二、Nginx环境
Nginx环境的配置不能像Apache直接在网站根目录的配置文件丢上禁止爬虫的文件,需要在Nginx.conf文件中处理。
1、新建agent_deny.conf
vi /usr/local/nginx/conf/agent_deny.conf
在上面目录中创建一个新的.conf文件。
if ($http_user_agent ~* “WinHttp|WebZIP|FetchURL|node-superagent|java/|FeedDemon|Jullo|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|Java|Feedly|Apache-HttpAsyncClient|UniversalFeedParser|ApacheBench|Webbench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|BOT/0.1|YandexBot|FlightDeckReports|Linguee Bot|Scrapy|Curl|wget”) {
return 403;
}if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
2、添加调用文件
然后我们在/usr/local/nginx/conf/站点配置文件.conf中添加:
include agent_deny.conf;
在server中添加就可以。
3、重启Nginx
根据我们使用的环境重启nginx或者重启VPS也可以。
总结,这样通过上面的方法,我们可以对自己网站环境的Nginx或者Apache网站结构进行部署屏蔽恶意、无用User Agent爬虫。