IP 风险评分(IP Reputation / IP Risk Score)来源和系统自建
https://chatgpt.com/share/69291b65-c5b8-8001-acf2-781c9b25c14c
这些来源都是各大代理商、风控平台、广告平台、支付公司、反欺诈系统实际使用的。
一、国际权威风险评分服务商(最核心来源)
这些是行业标准,代理商都会订阅:
1. Spamhaus
用途:反垃圾邮件、恶意活动
特征库:SBL、XBL、PBL
评分内容:
- 垃圾邮件来源
- 僵尸网络
- 恶意流量
- 动态 IP 池标记(PBL 是家庭宽带大杀器)
所有代理商一定参考 Spamhaus
2. IPQualityScore (IPQS)
用途:反欺诈、广告防作弊
提供:
- 代理/VPN 检测
- 异常活动评分
- TOR / 数据中心标记
- 高风险国家标记
- BOT、点击作弊评分
世界上使用最广的 IP 风险评分库之一
3. MaxMind GeoIP2 + MaxMind RiskScore
地区库 + 风险引擎
包含:
- 住宅/数据中心识别
- VPN / Proxy 检测
- 匿名网络检测
- 短时间内大量请求行为检测
几乎所有反爬虫系统都会用 MaxMind
4. FraudScore、FraudLogix
广告防作弊常用,识别:
- 虚假广告点击
- 模拟设备
- 程序化流量
5. Cisco Talos Intelligence
威胁情报
检测:
- 恶意软件感染
- BOT
- 被攻击的受害者 IP
二、反爬虫 / 反欺诈平台的数据源
这些平台有超大规模客户数据,覆盖面广:
1. Cloudflare Threat Score
Cloudflare 的威胁情报基于:
- 数千万人站点访问数据
- Bot 值(BOT Score)
- 爬虫评估
- 代理标记
- IP 行为历史
2. Akamai Threat Labs
提供:
- TOR
- 爬虫行为
- DDoS 参与
- 被入侵终端设备标记
3. PerimeterX / Human Security
首选广告、APP 防作弊平台
能检测:
- 浏览器指纹伪造
- 自动化工具
- Selenium/Headless
- 住宅代理节点滥用
4. Datadome、Kasada
反爬虫重量级
基于:
- 全网指纹
- IP 行为画像
- 再识别技术
三、网络安全威胁情报(多个国家与机构)
这些机构提供恶意行为数据库:
1. AbuseIPDB
非常常用,众包 + 安全厂商联合数据
评分基于:
- DDoS
- 扫描器
- 登录暴力破解
- 恶意脚本行为
2. FireHOL IP Blacklist
整合多个威胁情报源
3. AlienVault OTX
全球最有名的威胁社区
标记:
- 恶意软件感染
- 僵尸网络
- 钓鱼站
- C2 控制节点
4. TOR Project Exit Node List
标记 TOR 出口节点
四、商业数据库(付费订阅)
代理商会购买这些数据库以提升检测能力:
1. IP2Proxy / IP2Location
提供:
- 是否为代理 / VPN
- 是否为 Residential IP
- 是否为 Hosting Provider
- ASN 信息
- 区域一致性检查
2. Neustar IP Intelligence
用于广告投放风控
包含:
- 住宅/商业/IDC 分类
- 代理识别
- 风险评分
3. ThreatMetrix
全球最大数字身份图库之一
基于:
- 全球设备指纹
- 行为特征
- 匿名化网络检测
五、浏览器指纹数据(高级代理商才有)
顶级代理商(例如 BrightData、Oxylabs)会结合浏览器指纹评分:
IP + 浏览器指纹匹配度:
- 浏览器时区与 IP 所属时区是否一致
- 浏览器语言与 IP 所在地区是否一致
- Canvas / WebGL 指纹是否可疑
- User-Agent 与 IP 地区是否匹配(国别差异很明显)
六、代理商自有风控数据(核心资产)
这是每个大代理商最重要的“黑箱技术”:
自研评分包含:
① 节点成功率
- 访问常见网站是否被封
- 403/429 频率
- 目标站点 ban 率
② 用户行为异常
- 同一 IP 同时被多个用户使用
- 大量请求频率不正常
- 非浏览器模式行为
- 重复 Cookie、重复指纹行为
③ 节点画像
- 国内外访问比例
- 同 ASN 下是否存在反爬高频行为
- IP 是否曾用于爬虫/抓取工具
④ 节点稳定性
- 漏洞感染风险(如 Windows SMB)
- NAT 类型
- 带宽稳定性
- 端口开放情况(恶意软件特征端口)
综合后形成的 IP Risk Score(0-100 或 0-1)
大代理商通常是:
权威数据库 + 行业库 + 自有流量特征 → 综合评分
举例(简化版公式):
RiskScore =
0.35 * (IPQS score)
+0.20 * (MaxMind risk)
+0.15 * (Spamhaus SBL/PBL/XBL)
+0.10 * (AbuseIPDB)
+0.20 * (自研行为数据)
这样就能稳定识别出:
- 数据中心代理
- 被滥用的住宅代理
- 安全隐患 IP
- VPN / 路由器代理
- 僵尸网络节点
- TOR 出口节点
下面给你一套实战可落地的方案:从架构、数据源、特征、评分引擎(规则+ML)、离线/在线实现、指标/阈值、验证与监控,到示例代码和 SQL。目标是让你能自己搭建一个生产级的 IP 质量评分系统(IP Risk / IP Reputation),适用于住宅代理池、反欺诈或流量分级。
一、总体思路(两层架构)
把系统拆成两层,简单有效、便于迭代:
- 规则引擎(Rule-based) — 快速拦截已知高风险(黑名单、TOR、数据中心、Spamhaus 等)。低延迟、易解释,作为第一道防线。
- 评分引擎(Model-based) — 将多个信号合并为综合评分(0-100),可用简单的加权规则或机器学习(逻辑回归、GBDT)。
两者结合可取得高召回和高可解释性:先用规则剔除绝大多数明显风险,再用模型细化评分和分类。
二、数据源(必须/可选)
必须(立即接入):
- GeoIP(MaxMind GeoIP2 免费/付费) → 国家、ASN、城市、ISP、是否数据中心标记
- Spamhaus / Abuse lists(SBL, XBL, PBL, AbuseIPDB) → 黑名单标记
- 公共威胁情报(AlienVault OTX, CiscoTalos)
- TOR exit node list
- 自有流量日志(最关键):HTTP 状态、响应码分布、失败率、请求频率、会话时长、目标站点列表、user-agent、cookie、TLS 指纹等
可选/增强:
- IPQS/IP2Proxy、Neustar、IP2Location 等商业库(VPN/Proxy/Hosting 判定)
- Browser fingerprint signals(时区/语言/UA 与 IP 是否匹配、Canvas 指纹)
- 被封/被ban历史(目标站点返回 403/429 的记录)
- 节点稳定性指标(在线时长、平均带宽、丢包率)
- WHOIS/ASN 历史(是否属于家宽 ASN)
- 设备级信号(若有家庭节点 agent,可上报 CPU、OS、connected SSIDs)
三、关键特征(Feature)——按优先级
黑名单/标记类(binary):Spamhaus, AbuseIPDB, TOR, commercial proxy flag, data-center flag.
地理/网络一致性:IP.country == claimed country? ASN type (ISP vs Hosting). ASN age, prefix size.
行为统计(从日志统计,窗口:1m/10m/1h/24h):
- 请求频率(req/s)
- 成功率(2xx / 总请求)
- 错误率(4xx、5xx 比例)
- 403/429 出现次数与频率(针对目标站点)
- 新会话比例 vs 长会话比例
- 用户代理多样性(同IP下UA数量)
历史信誉:
- 过去 7/30/90 天 ban 率
- 下线/丢失率(节点不稳定)
指纹一致性(若可得):
- 浏览器时区/语言 vs IP 地理是否匹配
- TLS 指纹异常
网络特征:
- TTL/TTL 分布(可能被 NAT/CGNAT 修改)
- 端口扫描 / 非 HTTP 协议异常
经济/商业信号:是否通过 SDK 得到(已知渠道),是否来自付费路由器合作等(正向信号)
四、评分策略(示例:混合规则 + ML)
设计思路:先用规则打低风险/高风险标签,然后用模型输出 0-100 分。
示例简化流程:
规则判定 HIGH_RISK(立即 block / score=100):
- 在 Spamhaus SBL/XBL 列表 或 AbuseIPDB 分超过阈值
- 在 TOR exit list
- 商业库标注为 DATA_CENTER 且 ASN 属于云厂商
规则判定 LOW_RISK(score=0):
- ASN 属于大型 ISP(residential ASN),且历史 30 天内 ban_rate < 0.1% 且稳定性好
其余进入模型:features -> 标准化 -> 模型(LR / GBDT) -> 输出概率 p -> map 到 RiskScore = round(p * 100)
简单线性加权(规则替代模型):
score = clamp(
40*blacklist_flag +
25*data_center_flag +
15*ban_rate(0-1) +
10*error_rate(0-1) +
10*(1 - stability(0-1)),
0, 100)
五、离线训练与在线服务(架构)
架构要点(生产实践):
- 离线数据仓库:ClickHouse/BigQuery/ClickHouse 用于存储访问日志;用于 batch 特征计算与模型训练。
- 特征流水线:Airflow 或 Prefect 调度的 ETL,按窗口(1m/10m/1h/1d)生成特征表。
- 模型训练:使用 scikit-learn / xgboost / lightgbm。保留验证集和回测历史(A/B test)。
- 实时评分服务:FastAPI / gRPC microservice,加载模型与规则库,提供 low-latency scoring。
- 缓存层:Redis 缓存 IP 最近评分(TTL 1-10 min),减轻实时服务压力。
- 控制台 & 可视化:Grafana + Prometheus 或 Kibana,用于显示 IP 分布、拒绝率、误判率。
- 黑名单同步:评分到阈值后,自动写入防火墙 / WAF / 路由器 / CDN 黑名单。
六、阈值与策略示例(生产建议)
score >= 90→ 高风险:block 或 require captcha / 触发人工审核。70 <= score < 90→ 高风险:降权/限制速率/验证。40 <= score < 70→ 中风险:限速、观察、二次验证。score < 40→ 低风险:允许。
阈值应基于业务容忍度与 A/B 实验不断调优。
七、模型与训练细节
- 标签(supervised):用历史日志标注
bad(经常被目标站点封禁/大量 403/429/事务异常)与good(长期稳定低错误率)。 - 特征工程:滑动窗口聚合(count, rate, unique_count, pct_403等),one-hot 国家/ASN,embedding(若ASN很多)。
- 训练流程:分时间切片做回测(time-based CV),避免数据泄漏。
- 模型选择:先用逻辑回归做 baseline(解释性好),再用 LGBM 提升效果。
- 输出校准:用 Platt scaling 或 isotonic regression 校准概率(便于映射到 0-100 分)。
八、示例表结构(ClickHouse / Postgres)
示例 access_logs(原始):
CREATE TABLE access_logs (
ts DateTime,
ip String,
target_host String,
http_status UInt16,
user_agent String,
bytes_sent UInt32,
latency_ms UInt32,
session_id String
);
示例 ip_features_hourly(汇总特征):
CREATE TABLE ip_features_hourly (
hour DateTime,
ip String,
req_count UInt32,
pct_2xx Float32,
pct_4xx Float32,
pct_403 Float32,
unique_ua UInt16,
avg_latency Float32,
ban_count UInt16,
stability_score Float32,
is_blacklist UInt8,
country String,
asn UInt32
);
九、关键 SQL 示例(ClickHouse 风格)
计算一小时内请求数与 403 比率:
SELECT
ip,
toStartOfHour(ts) as hour,
count() as req_count,
sum(http_status >= 200 AND http_status < 300)/count() as pct_2xx,
sum(http_status = 403)/count() as pct_403,
uniqExact(user_agent) as unique_ua
FROM access_logs
WHERE ts >= now() - INTERVAL 1 HOUR
GROUP BY ip, hour;
十、示例 Python 实现(极简版评分函数)
下面代码示例展示如何把规则 + 模型结合(假设你已经训练好了 model):
# requirements: scikit-learn, lightgbm, pandas, joblib
import math
import joblib
import numpy as np
# 加载模型(示例)
model = joblib.load("ip_risk_model.pkl") # 输出概率
def rule_check(ip_meta):
# ip_meta 包含 is_spamhaus, is_tor, is_datacenter 等布尔
if ip_meta.get("is_spamhaus") or ip_meta.get("is_tor"):
return 100 # 强制最高风险
if ip_meta.get("is_datacenter") and ip_meta.get("is_proxy_flag"):
return 95
return None
def compute_score(feature_vector, ip_meta):
# 规则优先
r = rule_check(ip_meta)
if r is not None:
return r
# 假设 feature_vector 已经是模型要求的数组
p = model.predict_proba([feature_vector])[0][1] # 取正类概率
# calibration / mapping
score = int(round(p * 100))
# 再加上少量规则惩罚(示例)
if ip_meta.get("asn_risk_score"):
score = min(100, score + int(ip_meta["asn_risk_score"] * 10))
return score
十一、评估与上线策略
- 回测(backtest):用历史数据比对不同阈值下的 TP/FP/TPR/FPR。
- 灰度发布:先对 1% 流量启用评分并记录决策影响,再扩大到 10%/50%/100%。
- A/B 测试:一组继续按旧策略,一组用新评分,比较成功率与误封率。
- 常态化监控:监控每天被 block IP 数量、误封申诉数量、平均响应延迟、模型漂移(数据分布变化)。
十二、运维与自动化
- 定期(每日/小时)重新训练模型并自动回测,若性能提升则自动部署。
- 黑名单同步到 WAF、CDN(Fastly/Cloudflare API)与防火墙。
- 提供人工复核控制台(查看 IP 的历史行为、评分依据、可手动白/黑名单)。
- 自动报警:当误报率、拒绝率或 ban 率异常提升时告警。
十三、隐私与合规注意
- 避免保存过度个人数据(如完整 cookie、个人信息)。
- 若使用商业威胁情报服务,确保合约允许你用于风控目的。
- 在某些地区(GDPR 等)使用指纹/行为数据需注意合规与用户同意。
十四、扩展高级方向(可选)
- 在线学习:使用 streaming 更新特征与模型(例如 River 库)以快速适应新态势。
- 图谱关联:把 IP、ASN、设备指纹、session 做图谱分析,识别协同行为群体(Graph ML)。
- 可解释性:用 SHAP 展示模型对某 IP 的贡献特征,方便人工复核与合规。
- 反向验证:对“低风险”IP随机抽样发起深度探测,验证其真实性(地理连通性、延时、traceroute 等)。
十五、快速落地清单(最小可行产品 MVP)
- 把原始 access_logs 收集到 ClickHouse(或 Postgres)。
- 接入 GeoIP + Spamhaus + TOR 列表。
- 写一个小时级的特征聚合任务(Airflow)。
- 写一个简单规则引擎(黑名单、数据中心直接标注)。
- 用历史标签训练逻辑回归模型,部署到 FastAPI。
- 在生产用 Redis 缓存评分、并在 Nginx/WAF 接入评分决策。
- 建 Grafana 仪表盘监控关键指标(block rate、false positive 报告等)。