查看原文
其他

儿子,别刷了!

鱼皮 程序员鱼皮 2022-08-14

大家好,我是鱼皮。

昨天下午我正在愉快地给新面试刷题系统写 Bug,突然发现有道题目的浏览量出现飙升,5 分钟大概涨了近 10000!

我当时的第一反应是:我的网站火了?!

开个玩笑,显然是又有不懂事的小朋友,来我的网站搞事了。

因为我的后台使用的是微信云托管(https://cloud.weixin.qq.com/),所以可以很方便地看到后台的接口调用和资源占用情况。看了一下,这小子刷了差不多整整 1 小时!

监控

上图中的调用量是指每 5 分钟内的总请求数,QPS 指每 5 分钟内的平均 QPS(每秒请求数)。对我这个网站来说,平均每个页面大概 3 个请求,这小子的 “攻击” 大概相当于 15 个人每秒刷新一次网页。

“真温柔呢”,鱼皮这样评价道。

其实这个攻击程度真的算是挺小的了,网站以后用户多了,QPS 肯定是要比这个高的。

又看了下 HTTP 错误监控,果然在这小子刷接口的时候,接口跟平时一样稳定,几乎没有报错。忽略开头那个突刺,估计是因为那小子在调试攻击目标导致的报错:

HTTP 错误监控

虽然没影响系统的正常运行,但由于单个机器能同时处理的请求有限,较多的并发请求会导致请求排队,从而提高了平均响应时间。也就是说,正常用户在这个时期访问网站,会感觉 “卡” 了一些:

响应时间监控

目前我为了省钱仅仅用了 2 个超低配的机器实例,其实后面用户量大了,我只需要在云托管平台动动鼠标,多开几个实例,就能支持更大的 QPS 了。

话说回来,既然都影响到我宝贵的用户了,那我得管管它了!

由于我给所有请求都打上了请求和响应日志,所以可以很轻松地通过日志来定位问题。比如查询某道题目的浏览情况、具体是哪个 IP 在调用接口、接口耗时情况等:

分析日志

然后我随便找一条日志,查看它的上下文(上面的和下面的日志),就能看到具体是哪个用户在刷接口了:

然后动动手指,把它封号就好了:

25 号注册,26 号被封号,您也是够着急的。

然后运行我自己编写的一键恢复数据脚本,把题目的浏览量还原为正常值,这件事情就算结束了~



最后再多说几句吧,前段时间我做的这个面试鸭网站天天被各种攻击、各种造假数据,再加上工作原因无暇处理,整的我有点心累。甚至还有个人发抖音视频说我是最惨的程序员博主,给我整的哭笑不得!

所以后来我在网站上挂了一个告示,防君子不防小人。并且昨晚刚刚上线了小黑屋,记录了所有被封号的用户:

果然,最近面试鸭网站的攻击数量渐渐减少了,而且有越来越多的有志之士帮忙举报和维护,真心 感谢大家 啊,我也有空去做新功能了。

最后希望某些同学在学编程前,先学会做个人吧,有点时间不如去多学点知识或者陪陪父母,而不是大过年的吃饱了撑的来刷我这个免费的小网站!

面试鸭网站:


往期推荐

前后端分离,千万别再搞错了!

这老哥的删库水平,和我有的一拼

迷的一批,上线了新功能,老功能就废了!

网站又被攻击,我心态崩了

2分钟,我把网站性能优化了3倍!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存