1. GoAccess禁爬效果显著

当网站流量放大了 1000 倍,每小时 1 万多的访问量到 1 千万点击量是如何做到的?

1.1. 前言

时间

先看一组数据,13 点到 14 点这个时间段,访问量放到了一千倍,从17,788变成了14,178,799,访问量断崖式陡增!

事件

请求文件点击量比较大的来源于 koala 请求,是一款防作弊频率控制系统,可能有异常访问或者不合适的使用方式.

13,191,039 和 13,118,782 的流量的数量级别和总体异常的访问量也是相同数字级别.

对象

相同访问量级别的 ip 来源于可信任的两台服务器,而非其他攻击 ip.

那么问题来了,既然引起巨大流量的时间和事件都是可信任的服务器发起的请求,那么为啥会在某一时间段特别集中呢?

1.2. 分析

浏览器的分析报告显示爬虫的数据和异常的流量相仿,而且操作系统的统计报告也是得到了相同的结论.

查看全部日志

cat ~/nginx/logs/access.log \
| awk '{print $1}' \
| sort \
| uniq -c \
| sort -rn

筛选指定时间日志

awk '$4 >= "[21/Oct/2024:13:00:00" && $4 < "[21/Oct/2024:14:00:00" {print}' ~/nginx/logs/access.log

注意:这个命令假设你的时间戳格式是[day/month/year:hour:minute:second],并且月份是英文缩写(如 Oct 代表 October).

统计 IP 访问次数

awk '$4 >= "[21/Oct/2024:13:00:00" && $4 < "[21/Oct/2024:14:00:00" {print}' ~/nginx/logs/access.log \
| awk '{print $1}' \
| sort \
| uniq -c \
| sort -rn

查看某 ip 访问情况

awk '$4 >= "[21/Oct/2024:13:00:00" && $4 < "[21/Oct/2024:14:00:00" {print}' ~/nginx/logs/access.log \
| grep 'xxx.xxx.xxx.xxx' \
| awk -F '"' '{print $2}' \
| sort \
| uniq -c \
| sort -rn

1.3. 总结

经过直观数据统计图表,大致判断出异常日志出现的环境,结合自定义逻辑精确定位,最终能显著减少异常流量,该允许的允许,不允许的就拒绝.

最终,流量趋于稳定,不止于影响到其他业务服务,看最终效果吧!

最后更新时间: 2024-12-13 16:13:49
作者: 雪之梦技术驿站
来源: 雪之梦技术驿站
本文原创发布于「雪之梦技术驿站」,转载请注明出处,谢谢合作!

/snowdreams1006-wechat-open.png

results matching ""

    No results matching ""