
结论先行:实名预约之所以防不住黄牛,是因为它只做了"票的实名",没做"人的实名"。**黄牛卖的不是票,是别人的一张脸。**从系统设计看,漏洞分布在购票、核验、退改三个时点;对应的解法不是单点加固,而是一套分层的风控设计。
今年国庆,某免门票景区的实名预约名额被黄牛炒到几百元一次代抢,出现"寄身份证配合预约码"入园的玩法。作为做过票务系统的人,我把这个问题拆成"漏洞在哪"和"怎么设计防线"两部分。
一、漏洞不在"实名",在三个时点
| 时点 | 常见实现 | 漏洞本质 |
|---|---|---|
| 购票 | 校验身份证号格式 | 只做格式校验,不做"人号一致"核验 → 身份可借用 |
| 核验 | 比对票面信息与证件 | 只做"票证一致",不做"人证一致" → 证件可代持 |
| 退改 | 退票即回票池 | 回池时点可预测 → 被脚本盯守抢票 |
三个漏洞对应三类黄牛手法:技术代抢(钻限购粒度)、身份借用/证件代持(钻核验盲区)、内部票(钻权限与流程)。

二、7 层风控设计(按投入产出比排序)

第 1 层 · 票池分时段配额 把日票池切成时段批次,放票按批次进行。核心是让"抢"这个动作的价值下降——即使脚本抢到,也只是抢到一个时段的额度,不能一次性吃下全天。
第 2 层 · 实名核验前置 把身份校验从"入园核验"提前到"下单"。下单时即可调用权威核验接口做真实性校验,把虚假预约挡在下单环节,而不是等到闸机。
第 3 层 · 设备指纹 + 行为频次风控 风控的核心维度是"聚合":同一设备指纹、同一 IP、同一支付账户,在短窗口内关联多个不同身份的下单行为——这是脚本与"工作室"的典型特征。实现上可用设备指纹 + 滑动窗口频次统计 + 规则引擎,命中后触发验证码、延迟或人工复核。
第 4 层 · 人证合一核验(底线) 核验环节必须回答"这个人是不是购票的人"。没有人证合一,实名预约只是一张写给别人看的纸。 技术选项包括人脸比对(1:1)、证件 + 活体检测等。注意这层的落地成本与通过率,需结合闸机硬件与网络条件设计。
第 5 层 · 退票释放机制(底线) 不要让退票即时回池。设计上可引入"释放队列":退票进入延迟队列,按整点或固定间隔批量释放,并同样纳入配额。这样脚本无法通过盯守退票接口来抢票。
第 6 层 · 异常订单审计 给运营侧提供可追溯的审计视图:按同身份高频、同设备多单、异地秒抢等维度生成异常清单,支持人工介入与处置留痕。风控不能只有自动拦截,还要有可复盘的线索。
第 7 层 · 信用与名单机制 对累计违规的身份、设备、支付账户做分级处置(限购、延迟预约、黑名单)。务必配套申诉通道,避免误伤。
三、工程上的取舍:风控与体验的平衡
7 层全开,会立刻遇到误伤:人脸核验对老年游客、儿童、无智能手机用户不友好;设备指纹会误判共用手机的同行人。
所以设计原则是按风险分级:
- 高风险场景(免票、热门时段、限量名额)→ 核验从严,人证合一 + 频次风控全开;
- 常规场景 → 保持流畅,仅在异常行为触发时升级核验;
- 全场景 → 保留人工申诉入口。
风控不是把门焊死,而是让违规的成本高于收益。
四、给采购/需求方的 5 问
- 核验是"票证一致"还是"人证一致"?人证不一怎么处理?
- 是否支持分时段配额放票?配额能否按承载量动态调整?
- 有无设备指纹与行为频次风控?异常订单能否导出审计清单?
- 退票是即时回池还是延迟/统一释放?是否纳入配额?
- 误拦真实游客的申诉与放行通道是什么?
小结
防黄牛不是单点功能,而是一套规则设计。实名预约只是第一步;把核验验人、放票限速、退票错峰补齐,才能让违规的成本高于收益。
这是《景区票务实战》系列第 1 篇。下一篇拆《断网了怎么检票:离线核销的 4 种实现与取舍》。
(本文案例取自公开报道并已匿名化,仅作技术方法讨论,不指向任何具体厂商或项目。)