昨天下午收到流量提醒,说站点跑出了很大的流量。我一开始以为是 9sb.net 出了问题,登上去看才发现不是,被刷的是 ihk.me。这个站算是我做的一个网页版朋友圈,平时放点照片、音乐和碎碎念,朋友上来看看,不是商业站。
说实话,看到数字的时候我有点懵。ihk.me 没有商城,没有广告,也没靠它赚过钱,流量一直很平稳。我平时连图片都要压一压再传,能省一点是一点。有人盯着这样一个没什么商业价值的小站薅流量,我确实想不通,说痛恨也不夸张。
查下来不复杂
一个六十多 MB 的音频文件被人反复直接请求,来源基本都是空的。文件之前为了方便访问放在站点目录里,腾讯 EO 又给了很长的缓存时间。对方不用打开页面,也不用经过文章,直接拿着文件地址反复请求。缓存命中以后,流量从 EO 节点出去,账还是算在我头上。请求数看起来不算夸张,流量却涨得很快,四千多次请求就把额度啃掉了一大块,前后不到 300GB。
我用的是腾讯 EO 免费版。它没有自定义 ACL 拦截规则,想在边缘直接按来源拦请求,套餐不支持。发现后我第一反应是去 EO 后台加拦截规则,免费版不支持自定义 ACL,只能改缓存和刷新缓存,真正拦人还得回到源站。
免费版也能处理
我没有先抱怨,先把能做的做了。把音频文件从 EO 缓存规则里拿掉,刷新缓存,在源站加上来源校验,没有正常来源的请求直接拒绝。顺手把网站目录里几个大的压缩包也关掉了,那些东西本来就不该公开下载。处理完再看监控,流量很快掉了下来,后面基本归零,维护算是立刻见效。
这件事让我挺不舒服。个人小站的带宽和 CDN 额度都是自己掏钱,平时省着用,结果被人当成免费下载站。更麻烦的是,这种事不一定有明显的高并发,光看请求数不容易发现,等提醒来了,流量已经跑出去了。要是我再晚一点看到,账单可能就不是现在这个数。
说几句
写这篇不是为了卖惨,也不是为了骂谁。就是想留个记录,也给同样维护小站、用免费 CDN 的朋友提个醒。大文件不要随便放在公开目录,缓存时间别一味求长,来源校验和流量告警都打开。免费版功能有限,但源站这层做好了,照样能挡住大部分直接盗刷。
ihk.me 现在已经恢复正常。该堵的口子堵上了,该清的缓存也清了。希望这是最后一次。要是还有人想拿别人的小站当免费流量池,我只能说,省省吧。



