儿子,别刷了!
大家好,我是鱼皮。
昨天下午我正在愉快地给新面试刷题系统写 Bug,突然发现有道题目的浏览量出现飙升,5 分钟大概涨了近 10000!
我当时的第一反应是:我的网站火了?!
开个玩笑,显然是又有不懂事的小朋友,来我的网站搞事了。
因为我的后台使用的是微信云托管(https://cloud.weixin.qq.com/),所以可以很方便地看到后台的接口调用和资源占用情况。看了一下,这小子刷了差不多整整 1 小时!
上图中的调用量是指每 5 分钟内的总请求数,QPS 指每 5 分钟内的平均 QPS(每秒请求数)。对我这个网站来说,平均每个页面大概 3 个请求,这小子的 “攻击” 大概相当于 15 个人每秒刷新一次网页。
“真温柔呢”,鱼皮这样评价道。
其实这个攻击程度真的算是挺小的了,网站以后用户多了,QPS 肯定是要比这个高的。
又看了下 HTTP 错误监控,果然在这小子刷接口的时候,接口跟平时一样稳定,几乎没有报错。忽略开头那个突刺,估计是因为那小子在调试攻击目标导致的报错:
虽然没影响系统的正常运行,但由于单个机器能同时处理的请求有限,较多的并发请求会导致请求排队,从而提高了平均响应时间。也就是说,正常用户在这个时期访问网站,会感觉 “卡” 了一些:
目前我为了省钱仅仅用了 2 个超低配的机器实例,其实后面用户量大了,我只需要在云托管平台动动鼠标,多开几个实例,就能支持更大的 QPS 了。
话说回来,既然都影响到我宝贵的用户了,那我得管管它了!
由于我给所有请求都打上了请求和响应日志,所以可以很轻松地通过日志来定位问题。比如查询某道题目的浏览情况、具体是哪个 IP 在调用接口、接口耗时情况等:
然后我随便找一条日志,查看它的上下文(上面的和下面的日志),就能看到具体是哪个用户在刷接口了:
然后动动手指,把它封号就好了:
25 号注册,26 号被封号,您也是够着急的。
然后运行我自己编写的一键恢复数据脚本,把题目的浏览量还原为正常值,这件事情就算结束了~
最后再多说几句吧,前段时间我做的这个面试鸭网站天天被各种攻击、各种造假数据,再加上工作原因无暇处理,整的我有点心累。甚至还有个人发抖音视频说我是最惨的程序员博主,给我整的哭笑不得!
所以后来我在网站上挂了一个告示,防君子不防小人。并且昨晚刚刚上线了小黑屋,记录了所有被封号的用户:
果然,最近面试鸭网站的攻击数量渐渐减少了,而且有越来越多的有志之士帮忙举报和维护,真心 感谢大家 啊,我也有空去做新功能了。
最后希望某些同学在学编程前,先学会做个人吧,有点时间不如去多学点知识或者陪陪父母,而不是大过年的吃饱了撑的来刷我这个免费的小网站!
面试鸭网站:
往期推荐