做网络投票的人迟早会撞上这堵墙:怎么拦住一个人投五十次票?听起来简单,做起来要命。每种方案都在"麻烦用户"和"结果准确"之间走钢丝,没有标准答案,只有场景适配。

我踩过这些坑,这是实战笔记。

打开网易新闻 查看精彩图片

IP哈希:省事但漏风

最常见的偷懒办法——把用户IP哈希一下,一个IP限一票。大学整个校区共用一个公网IP,公司NAT后面几百人看起来像同一个人。你刚封了刷票党,顺手把正经用户全锁门外了。反过来,VPN用户切个节点只要几秒,投完再投。

这种方案只适合"周五去哪吃"这种闹着玩的投票,一旦有人真想搞你,秒破。

浏览器指纹:聪明反被聪明误

FingerprintJS这类库挺诱人——屏幕分辨率、装了什么字体、GPU型号、时区,拼成一个哈希。不用cookie,隐身模式也认得出你。

但公司批量采购的笔记本,系统镜像一模一样,两个人指纹完全重合。Chrome自动更新,哈希就变。隐私浏览器专门随机化这些信号,故意让你认不出来。你盖的房子,地基是流沙。

Cookie/本地存储:防君子不防小人

投完票扔个标记,下次检查。清cookie、开隐身窗口,秒破。但说实话,大多数人懒得折腾。团队聚餐投票用这种,够了。

强制登录:准,但冷场

绑定Google或GitHub账号,一人一号。想刷票得先批量注册这些平台的账号,成本实打实。

代价是正经用户也烦。 casual投票搞强制登录,一半人看到登录框直接关掉。留下来的人本身就有偏,结果照样歪。

验证码:防 bot 不防人

Cloudflare Turnstile这类方案证明"你是人",但不证明"你没投过"。配合IP哈希能拦住用Postman或curl写脚本的小白,验证码token需要浏览器环境,纯API调用伪造不了。

但真想刷票的人,可以一遍遍过验证、换IP继续。怕机器人灌水就加,团队午餐投票纯属多余。

限流:最后的缓冲垫

同一个IP一分钟限五票,至少让手动刷票的人手酸。配合其他手段用,不能单防。

没有银弹。低 stakes 投票用cookie凑合,高 stakes 场景咬牙上登录,中间地带看你对"方便"和"准确"的容忍度各有多少。