一、规则定义与立法依据
1. 规则全称
运营商短信网关同接收号码 + 相同短信内容 60 秒时间窗口下发限流规则(行业简称:一分钟同号同内容剔重限流)

2. 合规底层依据
- 工信部《通信短信息服务管理规定》:禁止未经用户许可重复推送相同信息,防范垃圾短信、短信轰炸骚扰用户。
- 移动 / 联通 / 电信 / 广电运营商全网网关统一风控规范,属于通道强制硬限制,第三方短信平台 / 企业无法绕过。
- CPaaS 云通信平台(阿里云、腾讯云、秒信通等)同步叠加该层前置校验,与运营商网关双重拦截。
3. 核心一句话规则
同一接收手机号,完全一致的短信正文内容,在连续 60 秒(1 分钟)时间区间内,运营商网关仅允许成功下发 1 条;第 2 条及以上重复请求直接拦截、不予投递,返回限流错误码。
二、规则判定维度
维度 1:接收号码(to 号码)完全一致
- 仅匹配目标收信手机号,与发送端口(106/95/100xx)、短信签名无关。
- 例:发给 138XXXX0001 和 139XXXX0002,即便内容一样,互不触发限流。
维度 2:短信正文内容完全匹配(字符级精准比对)
- 比对范围:签名 + 正文全部字符(含标点、空格、换行、变量数字、链接)。
- 判定标准:任意 1 个字符差异即判定为「不同内容」,不触发限流。
- 拦截示例:
【XX 商城】您的验证码:123456,5 分钟有效
【XX 商城】您的验证码:123456,5 分钟有效→ 完全重复,1 分钟内第二条拦截 - 放行示例:
【XX 商城】您的验证码:123456,5 分钟有效
【XX 商城】您的验证码:654321,5 分钟有效→ 验证码数字不同,视为不同内容
- 拦截示例:
- 模板短信机制:使用同一模板 ID + 相同变量发送,等同于内容完全重复;动态变量变化则重置计时窗口。
维度 3:时间窗口(两种计时模式,运营商混合使用)
- 滚动滑动窗口(主流,移动 / 电信)
以每条短信提交时间为起点,向后滑动 60 秒。
例:10:00:05 下发 1 条,10:01:04 前所有同号同内容请求全部拦截,10:01:05 起恢复下发资格。 - 自然分钟窗口(联通 / 广电部分网关)
按整点自然分钟划分:10:00:00 – 10:00:59 为独立窗口,跨分钟自动重置计数。
例:10:00:58 下发 1 条,10:01:01 即可再次下发相同内容。 - 关键:两种窗口运营商底层自动切换,业务侧统一按 60 秒冷却期设计重试逻辑。
维度 4:短信业务类型统一适用(无豁免通道)
- 验证码短信、行业通知短信、营销推广短信、5G 消息、视频短信全部强制执行。
- 仅政企白名单端口可向秒信通客服协助申请临时放宽阈值,普通商用 106 通道无豁免权限。
三、网关完整执行流程(从提交到拦截/下发)
- 企业 / 第三方平台调用 API 提交短信请求。
- MiCPaaS 平台前置校验:匹配手机号 + 内容 + 时间,提前拦截超限请求。
- 短信推送至运营商省级网关。
- 运营商网关执行四层校验:
① 敏感词 / 违规内容过滤;
② 黑白名单校验;
③ 全局单号码日 / 小时总量限流;
④ 同号同内容 1 分钟剔重限流(本规则)。 - 分支处理:
- 窗口内无下发记录:正常入队投递,网关缓存「手机号 + 内容哈希 + 过期时间 60s」计数。
- 窗口内已有 1 条下发记录:直接丢弃本条短信,返回标准化限流回执。
- 缓存过期机制:60 秒后自动清除该组手机号 + 内容计数,重新开放下发权限。
四、拦截行为与返回错误规范
1. 拦截后果
- 短信不送达用户手机,无任何推送。
- 不计入运营商计费条数(拦截不扣费)。
- 接口同步返回失败回执,留存拦截日志备查。
2. 通用错误码(三大运营商统一标准)
| 运营商 | 限流错误码 | 回执描述 |
|---|---|---|
| 移动 | 10016 / MSGW:REPEAT_SMS | 一分钟内同号码相同内容重复下发,触发流控 |
| 联通 | 908 / UNDELIV:908 | 短时间重复短信拦截 |
| 电信 | E204 / CARRIER_LIMIT | 相同内容下发频率超限 |
| 广电 | L007 | 重复短信风控拦截 |
3. 日志留存要求
- 运营商网关强制留存拦截日志 ≥ 6 个月,记录字段:接收手机号、短信内容哈希、提交时间、拦截原因、端口号、通道 ID。
用于工信部骚扰短信核查溯源。来源于中国政府网。
五、规则业务边界与特殊场景说明
1. 内容微小差异不触发限流(放行场景)
- 验证码数字、订单号、随机链接、时间戳等动态参数变更。
- 结尾退订提示文字增减(如「拒收回 R」)。
- 空格、换行、标点轻微调整。
- 短信签名变更(企业多签名切换发送)。
2. 同内容不同接收号完全放行
- 同一内容批量发给多个手机号,互不干扰,无条数限制(仅受单通道 QPS、单日总量约束)。
3. 重试逻辑禁忌(高频踩坑点)
- 业务侧自动重试机制若间隔 < 60 秒,重复提交相同验证码 / 通知,会持续触发网关拦截。
- 标准业务规范:验证码重试间隔 ≥ 60 秒,通知类消息重试间隔 ≥ 3 分钟。
4. 与其他限流规则叠加关系(多层风控)
本规则为细粒度内容层限流,叠加两层基础限流:
- 总量限流:单手机号 1 小时 / 单日总短信条数上限(验证码 5 条 / 小时、10 条 / 天;营销 2–3 条 / 天)。
- 通用频控:同号码不限内容,1 分钟最多 4–10 条。
- 任意一层超限,短信都会被拦截,优先触发同号同内容剔重规则。
5. 白名单特殊政策(极少开放)
- 政企政务、应急预警、银行风控等高优先级业务,可向运营商省级分公司书面申请白名单,放宽至「1 分钟同号同内容最多 2 条」。
- 互联网普通企业、电商、线下门店无申请资格,强制 1 条 / 分钟上限。
六、规则设计目的
- 防短信轰炸:拦截恶意脚本高频刷验证码,保护用户、降低企业通道损耗。
- 治理骚扰短信:杜绝商家每分钟重复推送相同营销广告,符合工信部整治要求。
- 减轻网关负载:过滤无意义重复请求,保障全网短信通道吞吐量稳定。
- 降低用户投诉:减少重复信息骚扰,降低 12321 垃圾短信举报率,避免端口关停风险。
七、业务侧适配开发规范
- 接口层缓存:Redis 存储 key = 手机号 + 内容哈希,过期时间 60 秒,本地前置拦截,减少无效 API 请求。
- 前端限制:验证码按钮置灰冷却 60 秒,禁止连续点击。
- 重试策略:限流失败回执不立即重试,等待完整 60 秒窗口后再发起。
- 内容差异化设计:动态嵌入订单号、时间戳、随机标识,规避重复判定。
- 告警监控:监控 REPEAT_SMS/908 限流错误码,突增时排查接口重刷漏洞。
八、完整示例演示
示例 1:触发拦截(相同内容,间隔 20 秒)
10:00:10下发【XX 登录】验证码 888888→ 网关放行,缓存计数生效10:00:30再次提交完全相同短信 → 1 分钟窗口未过期,网关拦截,返回错误码 908
示例 2:正常放行(跨 60 秒窗口)
10:00:10下发验证码 88888810:01:15再次提交相同短信 → 缓存过期,计数重置,正常下发
示例 3:内容变更,不触发限流
10:00:10下发验证码 88888810:00:30下发验证码 666666 → 内容字符不一致,直接放行
规则采自中国电信、中国移动、中国联通。