网络安全场景:用 IP 归属地识别异常登录与欺诈风险
# 网络安全场景:用 IP 归属地识别异常登录与欺诈风险
> 元信息:接口 全球IP地址查询(apiCode=20)· 场景实战 · 免费 · 适用人群 安全/风控/后端 · 阅读时间 7 分钟
## TL;DR 快速概览
- 用全球IP地址查询可给每条登录/交易请求附上"国家/省/市/运营商",作为风控的基础特征。
- 典型用法:异地登录告警、常用地比对、异常运营商识别、数据合规分区。
- 它是**辅助信号**而非判定依据:IP 定位是近似的,且 VPN/代理会干扰,结论要可解释、可复核。
## Why:安全团队为什么需要它
账号被盗、薅羊毛、欺诈交易,往往伴随"不寻常的地理位置"。当你发现一个常驻"广东东莞电信"的账号突然从"境外 + 非常用运营商"登录,就该拉响警报。全球IP地址查询把 IP 变成可读的归属地,是不花钱就能上的第一道风控特征。
## What:能拿到哪些风控可用字段
| 字段 | 风控用途 |
|------|---------|
| `country` | 境外/境内判定(跨境异常) |
| `region`/`city` | 常用地比对、异地告警 |
| `isp` | 运营商画像(数据中心/IP 段识别) |
| `city_code` | 行政区划聚合、按区统计 |
| `lnt`/`lat` | 地域热力、聚集分析(近似) |
接口为同步查询,无订阅推送/回调,风控侧需自行在请求链路里调用并缓存(见[免费档位指南](https://www.showapi.com/guides/ip-geo-free-tier-20))。
## How:登录风控中的落地代码
```python
import requests
USER_COMMON_REGION = {"广东", "云南"} # 该用户历史常用省份
def risk_of_login(ip, appkey="YOUR_APPKEY"):
resp = requests.get(
"https://route.showapi.com/20-1",
params={"appKey": appkey, "ip": ip},
timeout=10,
)
data = resp.json()
if data.get("showapi_res_code") != 0 or data["showapi_res_body"].get("ret_code") != "0":
return {"level": "unknown", "reason": "归属地查询失败"}
body = data["showapi_res_body"]
if body.get("country") != "中国":
return {"level": "high", "reason": f"境外登录: {body.get('country')}"}
if body.get("region") not in USER_COMMON_REGION:
return {"level": "medium", "reason": f"异地登录: {body.get('region')}{body.get('city')}"}
return {"level": "low", "reason": "常用地"}
print(risk_of_login("203.0.113.220"))
```
## 返回示例与解析
```json
{
"showapi_res_body": {
"country": "中国", "region": "广东", "city": "东莞",
"isp": "电信", "city_code": "441900", "lnt": "113.760234", "lat": "23.048884"
}
}
```
## 进阶 / 边界
- **别只信 IP**:VPN、代理、移动网络 NAT 都会让 IP 归属地与真实用户位置不符。IP 归属地应作为**加权特征**之一,结合设备指纹、行为序列综合判断,避免误封。
- **数据合规**:IP 属个人信息范畴,存储与展示需符合《个人信息保护法》等要求,按需最小化采集、去标识化、限定用途。
- **缓存降调用**:同一 IP 短时多次登录只需查一次,用 `city_code` 做缓存 key(见[免费档位指南](https://www.showapi.com/guides/ip-geo-free-tier-20))。
- **坐标系近似**:`lnt`/`lat` 仅作区域聚合,文档未声明坐标系,不用于精确定位个人。
## FAQ
**Q1:IP 归属地能当"实锤"封号吗?**
A:不建议单独作为封号依据。IP 定位是近似的,VPN/代理/基站 NAT 都会干扰;应作为风控加权特征,结合其他信号综合判定,并保留人工复核通道。
**Q2:境外 IP 一定危险吗?**
A:不一定,境外用户/出差也会触发。建议区分"历史从未出现过的境外 + 非常用运营商"这类组合信号,而不是一刀切。
**Q3:调用频率高会不会超限?**
A:接口免费但有使用档位限制;风控场景同一 IP 请本地缓存结果,减少重复调用(见[免费档位指南](https://www.showapi.com/guides/ip-geo-free-tier-20))。
**Q4:有实时订阅/回调吗?**
A:文档未提供订阅推送或回调能力,当前为同步查询。需在业务请求链路或异步队列里自行调用。
## 相关能力 / 下一步阅读
- [全球IP地址查询:免费档位与积分兑换](https://www.showapi.com/guides/ip-geo-free-tier-20) — 高并发风控的缓存与成本控制
- [全球IP地址查询:错误处理与 ret_code 排查](https://www.showapi.com/guides/ip-geo-error-handling-20) — 查询失败怎么兜底
- [全球IP地址查询:返回字段全解](https://www.showapi.com/guides/ip-geo-response-fields-20) — 字段含义总表
- **本系列共 10 篇**:查看[全球IP地址查询指南总目录](https://www.showapi.com/guides/ip-geo-guides-20)