博客网站防攻击方法汇总

最近在百度统计后台看博客的每日数据,发现每天的访问量增长很明显,一顿惊喜,然后看了下是从哪来的访问量,瞬间崩溃,如下图(都是博彩网站,关键部位已打码),这只是Top10的,搜索词列表几乎全是这种

为什么会有这么多莫名的的搜索词出现,一个正常的技术博客,这些关键词是绝对搜索不到的。继续往下查,发现这些搜索词都是百度带过来的,火大,百度为何要这样,让这些辣鸡关键词搜索出现在百度统计里面。
二话不说,立马禁用百度爬虫,正常情况下博客从来没有过百度带来的正常请求(大家用百度搜索下技术词就知道了,排名靠前的全是各个大的博客网站,个人网站根本没有展示的机会),禁用爬虫后当然也没什么影响。

只禁用百度爬虫是不够的,查看Nginx日志发现还有各种爬虫。
这里要点名批评一个爬虫:bytespider,因为前段时间公司的页面也被这个爬虫爬过,而且毫无节制,造成很多脏数据,并且我还没找到这个爬虫是哪家的,太可恶了!

步骤一:禁用各种爬虫(主要是百度爬虫和bytespider,禁用后百度排名会下降,辣鸡的请求也不会过来),同时也把UA为空的给禁止掉,防止被程序爬

1
2
3
4
5
6
7
server {
...
if ($http_user_agent ~* "^$|Baiduspider|Bytespider|Scrapy|YisouSpider|bingbot|Sogou web spider"){
return 500;
}
...
}

这里解释下为什么要返回500,而不是404,因为500更具有误导性,爬虫会认为服务不可用,从而做降级处理(我认为的)

禁用各种爬虫后,效果不是立马能看出来,继续查看日志,看还有什么无用的请求

步骤二:禁用IP直接访问,主要是server_name _;这一行。

1
2
3
4
5
6
7
8
9
server {
listen 80 default_server;
listen [::]:80 default_server;

# 禁止IP访问
server_name _;

return 500;
}

步骤三:禁用各种攻击性请求,例如.asp结尾的.php结尾的(因为我博客没有这些路径,大家看情况处理),搞不懂有些人为什么就不能找点正经事干,进别人的管理后台很好玩么

从图片中可以看到,百度爬虫升级到2.0了,专门爬这些后台url,你咋这么优秀

1
2
3
4
5
6
7
server {
...
location ~* \.(php|asp|jsp)$ {
return 500;
}
...
}

步骤四:禁用IP
方法IP太多,而且频繁更换,禁用起来也是麻烦

步骤五:禁用referer
这个不好判断,只能看到一个,禁用一个

步骤六:做完上述步骤,还能在百度统计里面看到一些非法的搜索词,因为别人直接用百度统计的ID发请求,这些请求根本就没有到服务器上,直接到百度统计那边,最后统计的时候被判断为搜索词了,这种情况只有在百度统计上把网站删掉,然后新增一个网站,这样统计ID就会更换一个。可是这样会造成以前的数据丢失,不到万不得已还是不要这样操作

JouyPub wechat
欢迎订阅「K叔区块链」 - 专注于区块链技术学习