ITSWE博客

自建访问统计与反投毒:当 99% 的流量不是人

图表上一天七千九的访问量,清污后真实访客七十三。自建统计系统的设计、被伪造信标灌水的经历,与一套数据打标清污的口径。

第三方统计会用隐私问题,于是我们把访问统计做成了自建系统:一段采集脚本、一个接收端、一个轻量数据库、一张趋势图。它运转得很好——直到我们发现图表里的“流量”有百分之九十九是机器。这篇讲自建统计的设计要点,和那次彻底的数据清污。

自建统计的三个设计要点

**采集端要轻,且要会自保。**采集脚本只做最少的上报;同时要预判“伪造上报”这种事——后来真的发生了:爬虫绕过页面直接向接收端灌伪造数据,单日近万次。对策是在脚本与接收端两层都做校验:来源页合法性、上报节奏、空标识直接判为机器。

**标识要打在入库时。**每条事件入库时判定是否机器:浏览器标识缺失或带无头标记的,打机器标;已知恶意网段的,按前缀直接打标。入库时打标比事后清洗便宜一个数量级——事后清洗要动历史数据,入库时只是多个字段。

**口径要写下来。**页面量、访客、地址三个指标的口径(哪些算、哪些剔除)写在文档里,每次重算照着执行。没有成文口径的统计系统,每次看数都是一次重新发明。

被投毒的那几天

攻击形态其实不高明:伪造的上报直打接收端,每日近万次;再配合页面爬取,把曲线顶上去。不高明,但有效——如果统计系统的默认口径是“来者皆是访客”,你的仪表盘就在替攻击者画图。

清污按四步走。第一步,给已入库的机器事件批量打标(涉及上万条更新,顺带踩了轻量数据库的类型坑:拿文本和数字时间戳做字符串比较,永远为假——这类坑我们踩过两次,第二次才把它写进清单)。第二步,按新口径重算每日趋势,重算前先做库快照,可回滚。第三步,把识别规则回填到采集端与接收端,让同类的伪造下次在门口就被拦,而不是进来后再清。第四步,复核:重算脚本跑出的“当日真实访客为零”这种极端结果,换一种独立算法再验一遍,确认是真的零,不是脚本 bug。

清污之后的三个认知

**一,流量数字会撒谎,口径不会。**同一批数据,含机器口径下日访客数千,剔除后两位数。数字本身没有意义,口径才有。此后所有对外引用的数字,都带口径。

**二,有一些地址永远不要动。**清污时识别出一段混着真人手机浏览器的共享出口地址——它是负责人自己的出口。这类地址进了排除清单,整体不入库也永不封禁。清污规则的最大风险是误伤真人,所以规则清单里要有一类“神圣不可侵犯”的白名单,并且写明为什么。

**三,历史数据的删除要留快照。**最终清洗删掉了十五万九千条机器记录,保留了真实爬虫的一万四千条(它们对 SEO 分析有价值,和投毒不是一回事)。删除前的库快照归档——任何一次大规模数据操作,都要保留“后悔药”。

接收端的校验设计

采集端的判断之外,接收端还要有一层独立校验,防的是“绕过页面直接上报”。三个判据:来源合法性——上报声称的来源页必须是本站真实存在的页面;节奏合理性——同一标识的上报频率超过人类可能的节奏,判机器;标识完整性——空标识与缺失标识直接判机器(真人浏览器的上报永远带完整标识)。三层判据都在入库门口执行,伪造数据进门时就变成一条打了机器标的记录,而不是混进人群的假访客。

白名单的治理

清污最大的风险是误伤真人,所以规则清单里专门设一类“排除清单”——命中即整体不入库,永不参与封禁。最有代表性的一段地址:混着真人手机浏览器与机器访问的共享出口。判定过程要证据链:该段同时出现真人浏览器标识的正常浏览,机器访问无法在标识维度与之区分,按“自流量惯例”整体排除,库内已有记录删除。排除清单的每一条都要写明理由与判定日期,定期复审——排除清单不是黑名单的反面,它是一份需要持续维护的白名单资产。

与反爬的分工

统计打标、边缘拦截、源站频控,三层防线要划清分工。边缘拦截是对“确认恶意”的地址与行为,用最硬的手段;源站频控是对“高频但身份存疑”的访问,用限速软处理;统计打标是对“拦不掉但要看清”的长尾——住宅池那种每地址一发的访问,任何拦截都无效,但打标让它至少在报表里现形。三层的判断标准、执行手段、数据流向各不相同,混用任何两层,要么误伤、要么失效。分工表定下来之后,每一波的应对都变得机械而迅速。

为什么自建

先回答一个常见疑问:第三方统计那么成熟,为什么自建?三个理由。隐私与合规:第三方脚本要收集访客的浏览器与行为数据,站点自己的隐私声明要为它背书;自建的数据不出自己的基础设施,声明可以写得干净。口径黑箱:第三方的“访客”定义、机器人过滤规则是黑箱,你想知道“这个数怎么来的”时无从查起——这次清污如果发生在第三方系统里,我们连“七千九是假的”都无从证明。数据归属:历史数据在自己库里,想怎么重算就怎么重算,不受对方的导出限制与计费墙。

自建的代价也如实列出:要自己维护采集脚本与接收服务的可用性,要自己设计并更新判机器的规则,要做备份与重算的工程。一句话,自建把“使用成本”换成了“治理成本”——对把数据当资产的站,这笔交换是划算的。

尾声

自建统计最大的回报,不是省了第三方服务,是数据的每一环都在自己手里:怎么采、怎么判、怎么算、怎么剔,全部透明。当攻击者开始伪造你的流量时,这份透明就是防御工事——毕竟,连“什么是访客”的定义权都在你手里,伪造者伪造的,只是一份你已经学会拆穿的账本。

数据安全
返回全部文章