137-8593-6100
首页 服务 案例 关于 资讯 帮助 联系

门户网站制作运维中屏蔽无用蜘蛛降低服务器压力

2023/04/20  百图网络

user-agent_l.jpg

网站制作上线后,域名就像一个大门一样向全世界都敞开着。但是我们的网站很多时候并不需要面向全球发布,比如企业网站,本身客户只是国内的,那么境外的蜘蛛拼命的访问爬取就是浪费服务器的带宽和资源。更何况,有一部分搜索引擎不按套路出牌,经常性的每秒好多请求过来。

为了解决以上的问题,我们来可以通过判断User-Agent来进行过滤筛选。同时出于安全考虑,我们还会禁止部分非GET,POST等自己网站没有用到的请求方式抓取。

下面我们用Nginx来举例说明(此方式一般只支持云主机部署的网站,虚拟主机的不支持)

禁止Scrapy等工具的抓取

#禁止Scrapy等工具的抓取if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {      return 403;}

禁止指定UA及UA为空的访问

#禁止指定UA及UA为空的访问if ($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|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" ){      return 403;}

禁止非GET|HEAD|POST方式的抓取

此处可以根据网站制作中涉及到的请求方式灵活修改

#禁止非GET|HEAD|POST方式的抓取if ($request_method !~ ^(GET|HEAD|POST)$) {     return 403;}

以上配置完成后重启Nginx加载即可。

测试配置

我们测试可以通过查看实时访问日志来看效果,同时我们也可以采用curl模拟蜘蛛请求。

这个是正确的请求

[root@WEB ~]# curl -I -A "BaiduSpider" www.wzcoder.comHTTP/1.1 200 OKServer: nginxDate: Thu, 14 Nov 2019 01:41:45 GMTContent-Type: text/html; charset=utf-8Connection: keep-aliveVary: Accept-EncodingSet-Cookie: PHPSESSID=rb4kndd2anpc7ifn91a0q2pln6; path=/Expires: Thu, 19 Nov 1981 08:52:00 GMTPragma: no-cacheCache-control: privateX-Powered-By: UpStreamX-Frame-Options: SAMEORIGIN

这个是屏蔽生效后的请求

[root@WEB ~]# curl -I -A "AhrefsBot" www.wzcoder.com           HTTP/1.1 403 ForbiddenServer: nginxDate: Thu, 14 Nov 2019 01:43:37 GMTContent-Type: text/htmlContent-Length: 146Connection: keep-aliveVary: Accept-Encoding

 

有些同学会说,搜索引擎有时候也在变化,有可能有新的User-Agent出来,那么这个时候我们就要去分析网站日志了。

首先是Nginx配置开启访问日志情况,如在vhosts中修改

server {    ...    access_log /data/logs/wzcoder.com.access.log;    ...}

开启后我们能正常看到访问日志,如下图

WX20191114-094944@2x.png

我们可以分析访问日志,将一些不想要的都给屏蔽了。

 

总结

网站做完上线后要时刻关注其状态,出于安全考虑需要进行补丁,优化等,出于自己的资源消耗情况也需要对不必要的请求,非法请求做优化屏蔽。当然,如果老板说咱能用钱解决的简单点,直接上WAF,那当然也是妥妥的!

 

相关阅读

  • 网站小程序开发启用Apache和Nginx的CORS

  • 企业网站制作开发中如何禁止不想要的用户代理和请求来源

 

内容源于网络,如有侵权或违规我们会尽快整改
在线提交您的需求
我们会在24小时内回复您,节假日除外。
微信沟通 QQ客服
扫描二维码添加客服微信