一、为何运营商识别至关重要?
IP 归属地查询能告诉平台“用户在哪儿”,而运营商(ISP)识别则可以判断“用户用什么样的网络在访问”。后者在多场景风控和运营决策中往往发挥着更关键的作用。
截至 2025 年底,中国电信、中国移动和中国联通三大运营商固定宽带用户总数已达 6.91 亿户。中国 IPv6 发展同步提速,截至 2025 年 9 月,IPv6 活跃用户数达 8.65 亿,在网民中占比达 77.02% ,移动网络 IPv6 流量占比达 69.02%。IPv6 地址资源总量已达 71590 块(/32),占全球已分配 IPv6 地址的 14.61%,位居世界第二。当运营商 IP 在 IPv4/v6 双栈中不断动态调整,传统数据查询的局限性日益凸显。
中国三大运营商宽带用户数和IPv6发展数据图表
二、运营商数据在风控中的三大应用场景
场景一:跨地域风控
日常使用中“属地漂移”现象并不少见。IP池可能是跨省共享的,尤其在人口流动频繁或网络资源紧张的区域,用户可能被分配到其他省份的 IP 地址。运营商为提高网络资源利用率在全国范围内统一调度 IP 地址资源,一次注册行为中 IP 归属地在 A 省但运营商显示为数据中心或机房IP,本身就是高风险信号。运营商识别能帮助判断用户使用的是宽带、蜂窝网络、云服务器还是代理。
场景二:账号异常识别
一个账号历史登录均使用家庭宽带,却在凌晨时段突发大量登录,且运营商信息显示为云服务平台——这种组合异常可被规则引擎捕捉并触发二次验证。这类基于 IP 归属地运营商的行为画像,对账号保护和支付风控极为关键。
场景三:住宅代理识别
攻击者常利用社区网络 IP 伪装成普通宽带用户以规避风控。此类攻击本质上仍在探测 IP 的运营商角色——判断其来自固定宽带还是移动网络池。运营商识别提供了关键判断维度之一。
三、代码实操:获取 IP归属地与运营商信息
以下代码展示如何在登录注册接口中同时获取归属地和运营商信息,用于风控决策:
import requests
from typing import Optional, Dict
def get_ip_carrier_info(ip_address: str, api_key: Optional[str] = None) -> Optional[Dict]:
"""
查询 IP 的归属地、运营商等关键数据
返回字段:
- country / province / city: 地理位置
- isp: 运营商具体名称(如"中国电信")
- is_mobile: 是否为移动蜂窝网络
- asn: 自治系统编号
"""
base_url = "https://api.ipdatacloud.com/v2/locate"
params = {"ip": ip_address}
if api_key:
params["key"] = api_key
try:
response = requests.get(base_url, params=params, timeout=3)
data = response.json()
if data.get('code') == 200:
result = data['data']
return {
"ip": ip_address,
"country": result.get("country"),
"province": result.get("province"),
"city": result.get("city"),
"isp": result.get("isp"),
"latitude": result.get("latitude"),
"longitude": result.get("longitude"),
"is_mobile": result.get("is_mobile")
}
print(f"API 返回错误: {data.get('msg')}")
return None
except (requests.exceptions.RequestException, ValueError) as e:
print(f"请求或数据解析失败: {e}")
return None
def risk_decision(ip_info: Optional[Dict]) -> str:
"""
基于 IP 信息的风控决策示例
策略:
- 若运营商名称包含“数据”或“云”,返回 challenge(二次验证)
- 若为移动网络且城市未知或不是北京,返回 verify(加强验证)
- 其余情况放行
"""
if ip_info is None:
return "allow"
isp = ip_info.get("isp", "")
is_mobile = ip_info.get("is_mobile", False)
city = ip_info.get("city")
# 云服务商/数据中心 IP 判定(示例规则)
if "数据" in isp or "云" in isp:
return "challenge"
# 移动网络且城市不为北京时触发验证(城市缺失时不误判)
if is_mobile and city and city != "Beijing":
return "verify"
return "allow"
# 使用示例
if __name__ == "__main__":
ipcarrier = get_ip_carrier_info("223.104.123.456", "your_key")
if ipcarrier:
decision = risk_decision(ipcarrier)
print(f"决策: {decision},运营商: {ipcarrier['isp']}")
四、性能考量:IP归属地查询平台的响应权衡
IP归属地查询平台在高并发场景下的响应延迟至关重要:
| 方案 | 平均延迟 | 适用场景 |
|---|---|---|
| 在线 API 调用 | 35-42 ms | 低频查询 |
| 本地离线库 | 0.15-0.35 ms | 高频风控,单机 QPS 可达 250 万 |
在线API与本地离线库平均延迟对比:在线35-42ms,离线0.15-0.35ms
设备指纹可以提供比 IP 信誉更持久的检测效果,印证了离线库方案对运营商识别稳定性的保障。金融、政企行业对数据出域有严格限制,《网络安全法》及《个人信息保护法》等法律法规对企业避免用户 IP 数据流向境外提出规范性要求,私有化方案正在成为 B2B 行业的标配。
五、总结
IP 归属地运营商识别已从辅助信息升级为风控决策的核心数据源。从 6.91 亿宽带用户构成的庞杂网络,到 8.65 亿 IPv6 用户的快速增长,合理的运营商识别体系已成为帮助企业对抗动态 IP 欺诈和代理攻击的重要技术工具。搭建高并发、精准的 IP 识别系统,正持续守护国内日益扩大的业务边界。
六、数据来源
1. 中国工业和信息化部:《2025 年通信业统计公报》(2026 年 1 月)及《深入推进 IPv6 规模部署和应用工作要点》(截至 2025 年 9 月),提供宽带用户总数、IPv6 活跃用户数及流量占比等官方数据
2. 中国新闻网:《“两地分居”!为什么我的 IP 背着我去别的省了?》(2025 年 11 月),提供属地漂移现象的具体案例与运营商调度机制说明
3. APNIC 统计 / RIR:中国 IPv6 地址资源总量及全球占比数据(2025 年 12 月),来源为亚太网络信息中心公开统计