技术博客
获取外网IP:用户地域分布分析怎么做(市场地域分析实战)

获取外网IP:用户地域分布分析怎么做(市场地域分析实战)

作者: 万维易源
2026-09-02
获取外网IP地域分布用户分析市场分析运营商分布
# 获取外网IP:用户地域分布分析怎么做(市场地域分析实战) > 接口:获取外网IP(apiCode 632,接入点 1) · 免费 · POST/GET · JSON · 适用:运营、增长、产品经理 · 阅读约 7 分钟 ## 核心要点 - 把每次访问者的 IP 属地(省/市/运营商)聚合起来,就能得到用户地域分布看板。 - 用 `city_code` 做区域归并更稳定;`region`/`city` 适合直接分组统计。 - 免费档位下建议"采样 + 缓存",对高频重复访问者不必每次调用。 ## Why:看清用户都在哪 做市场或增长,最常被问的一个问题是"我们的用户主要分布在哪些省份?用的什么运营商?"手动看日志里的 IP 没意义,你需要的是"IP → 属地"的批量转换。获取外网IP 让这件事免费可跑: - 运营:按省份看 activation / 活跃,指导区域投放。 - 增长:识别高潜省份,定向做活动。 - 产品:按运营商分布优化弱网体验。 ## What:分析链路速览 | 项 | 值 | |----|----| | 数据源 | 每次访问/注册时调用获取外网IP 得到的 `region`/`city`/`isp`/`city_code` | | 聚合维度 | 省份 `region`、城市 `city`、运营商 `isp` | | 归并键 | `city_code`(城市编码,比城市名更稳定) | | 成本控制 | 免费档位有限,对已知访客缓存属地,避免重复调用 | ## How:批量聚合地域分布 落库(每次访问记录一行属地): ```sql CREATE TABLE visit_geo ( id BIGINT PRIMARY KEY, user_key VARCHAR(64), region VARCHAR(32), city VARCHAR(32), city_code VARCHAR(16), isp VARCHAR(32), created_at DATETIME ); ``` 聚合统计(按省份 + 运营商): ```python import requests from collections import Counter APP_KEY = "YOUR_APPKEY" CACHE = {} # 生产用 Redis:user_key -> 属地,避免重复调用 def region_of(user_key): if user_key in CACHE: return CACHE[user_key] r = requests.post( "https://route.showapi.com/632-1", params={"appKey": APP_KEY}, headers={"content-type": "application/x-www-form-urlencoded"}, timeout=10, ) body = r.json().get("showapi_res_body", {}) info = (body.get("region"), body.get("city"), body.get("isp"), body.get("city_code")) CACHE[user_key] = info return info # 假设已有一批访问者 user_keys rows = [region_of(k) for k in user_keys] province_counter = Counter(r[0] for r in rows if r[0]) isp_counter = Counter(r[2] for r in rows if r[2]) print("省份分布:", province_counter.most_common()) print("运营商分布:", isp_counter.most_common()) ``` 把 `province_counter` 喂给柱状图 / 地图 choropleth,就是一张地域分布看板。 ## 返回示例与解析 ```json { "showapi_res_code": 0, "showapi_res_body": { "ip": "183.225.1.165", "region": "云南", "city": "昆明", "city_code": "530100", "isp": "移动" } } ``` 聚合时:`region` 直接做省份分组;`city_code`(`530100`=昆明)作城市归并键,比城市名更抗脏数据;`isp` 单独分组看运营商占比。 ## 进阶 / 边界 - **采样而非全量**:免费档位有调用限制,对高频回访用户用缓存/Redis 记录属地,只对"新访客"或"过期缓存"调用,成本可控。 - **看板口径**:地域分布是"访问者出口属地",不等于"用户真实常住地"(NAT/代理/基站出口都会偏移)。对外汇报时标注"按访问 IP 属地统计"。 - **城市编码归并**:同名城市或特殊地区优先用 `city_code` 归并,减少因字段为空造成的统计缺口。 ## FAQ **Q:地域分布能代表用户真实所在地吗?** A:只能代表"访问出口 IP 的属地"。NAT、企业专线、代理会让多个用户显示同一属地,或显示为异地。结论需标注统计口径。 **Q:免费档位够做全量分析吗?** A:取决于流量。建议对回访用户缓存属地、只对新增/过期调用,配合采样,通常够用;大流量请评估升档。 **Q:`city_code` 为空怎么办?** A:内网/部分出口可能不返回城市编码,此时退回用 `region` 省级聚合,缺失样本单独计数,不丢整体结论。 **Q:想画成地图 choropleth 用什么键?** A:优先 `city_code`(国标城市编码),与地图底图行政编码对齐最稳;跨市聚合则用 `region`。 ## 相关能力 / 下一步阅读 - [获取外网IP:返回字段全解(IP / 经纬度 / 归属地 / 运营商)](https://www.showapi.com/guides/getip-fields-632) - [获取外网IP:登录安全与异常地域风控场景集成指南](https://www.showapi.com/guides/getip-login-audit-632) - [获取外网IP:用经纬度在地图上标出访问者位置](https://www.showapi.com/guides/getip-map-visual-632) - **本系列共 8 篇**:查看[获取外网IP 指南总目录](https://www.showapi.com/guides/getip-guides-632)