去年秋天,网站我帮一个做独立博客的监控朋友查服务器账单,发现他每月多花了七十多块钱。访客钱不多,网站但他那个站总共也就几百个访客,监控按理说用不了这么多流量。访客翻了一遍访问日志,网站我指着其中几行说,监控你看,访客这几个IP每隔十几秒就来一次,网站每次只抓首页,监控User-Agent写的访客是某种监控脚本。他愣了半天,网站说这不是监控我装的。
这就是访客网站监控访客这件事最容易被忽略的一面——大多数人以为监控是为了看“谁来了”,但实际上,监控数据本身也在暴露你的网站正在被谁盯着。朋友那台服务器上跑着一个开源统计工具,功能挺全,访客来源、停留时间、页面热度都有。问题是,他自己从来没认真看过日志,更没注意到那些高频、低交互的访问模式。
监控访客,第一层含义是记录。你装个统计代码,或者直接分析Nginx日志,能看到的东西比想象中多。比如IP归属地、访问时间、请求路径、停留时长、设备类型。这些数据单看没什么,拼在一起就有意思了。我见过一个案例,某电商站的产品页每天凌晨两点到四点有一批固定IP访问,停留时间极短,只抓价格和库存接口。后来查出来是竞争对手的爬虫在定时比价。
第二层含义是识别。不是所有访客都值得欢迎。监控系统如果只告诉你“今天有500个UV”,那基本等于没说。真正有用的监控会区分:哪些是真人,哪些是机器人,哪些是带着目的来的。区分方法不复杂,看请求频率、看鼠标轨迹、看是否加载了CSS和图片。一个正常用户打开网页,浏览器会自动请求一堆静态资源;而一个脚本往往只抓HTML,连favicon都不拿。
我自己在服务器上写过一个简单的过滤脚本,逻辑很粗暴:同一个IP在60秒内请求超过20次,且没有加载任何图片,就临时拉黑十分钟。跑了一个月,拦掉了大概三千多次访问,其中大部分是各种搜索引擎的爬虫和几个不知道哪来的监控节点。真正的人类访客,一个都没误伤。
第三层含义是反监控。你知道有人在监控你的网站,那你能不能反过来监控他们?可以。把那些异常访问的IP、User-Agent、请求路径单独记一份日志,时间长了就能画出对方的访问规律。比如某个IP每天上午十点准时来一次,每次只抓首页,那它大概率是某个监控服务的探针,不是真人。你要是愿意,还可以给这些探针返回一个假页面,让它以为你的站一切正常,实际上你已经在后台把它标记了。
说回我朋友那个站。后来我们查清楚了,是他之前装的一个“网站健康检测”插件,配置写错了,把检测频率设成了每15秒一次。插件本身没问题,问题是没人看它的运行日志。监控访客这件事,工具只是工具,真正起作用的是人有没有去看、去比对、去追问为什么。
网站监控访客,说到底不是技术问题,是注意力问题。你愿不愿意花十分钟翻一遍日志,愿不愿意对某个异常数字多问一句。大多数时候,答案就藏在那些不起眼的请求记录里,等着你去发现。