技术博客
全球IP地址查询接入点详解:IP → 归属地定位(20-1)

全球IP地址查询接入点详解:IP → 归属地定位(20-1)

作者: 万维易源
2026-08-27
全球IP地址查询IP查询接入点
# 全球IP地址查询接入点详解:IP → 归属地定位(20-1) > 元信息:接口 全球IP地址查询(apiCode=20)· 接入点 20/1 · 免费 · POST/GET · JSON · 适用人群 开发者 · 阅读时间 5 分钟 ## TL;DR 快速概览 - 接入点 `20/1` 是"全球IP地址查询"主入口:给一个 `ip`,返回国家/省/市/区县/运营商/经纬度。 - 唯一必填业务参数:`ip`(String,如 `203.0.113.220`);Header `content-type` 选填。 - 接口地址:`https://route.showapi.com/20-1?appKey={your_appKey}`。 ## Why:什么时候用 20/1 而不是 20/2 拿到的是**裸 IP**(日志里的客户端 IP、接口调用方地址、风控引擎取出的访客 IP),用 `20/1` 直接查。如果你手上是**域名**(如 `www.baidu.com`)想顺带知道它部署在哪,用 [`20/2` 域名查询](https://www.showapi.com/guides/ip-geo-domain-query-20)。 ## What:20/1 接入点速览 | 项 | 内容 | |----|------| | 接入点 | `20/1` 全球IP地址查询 | | 接口地址 | `https://route.showapi.com/20-1?appKey={your_appKey}` | | 必填参数 | `ip`(String,要查询的 IP) | | 选填参数 | Header `content-type`(POST 表单时填 `application/x-www-form-urlencoded`) | | 返回 | `showapi_res_body` 内归属地字段(见[返回字段全解](https://www.showapi.com/guides/ip-geo-response-fields-20)) | ## How:调用 20/1 **cURL** ```bash curl -X POST "https://route.showapi.com/20-1?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ -d "ip=203.0.113.220" ``` **Python** ```python import requests def query_ip(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: return None, data.get("showapi_res_error") body = data["showapi_res_body"] if body.get("ret_code") != "0": return None, f"业务失败 ret_code={body.get('ret_code')}" return body, None body, err = query_ip("203.0.113.220") if err: print("失败:", err) else: print(body.get("country"), body.get("region"), body.get("city"), body.get("isp")) ``` **Node.js** ```javascript async function queryIp(ip, appkey = "YOUR_APPKEY") { const resp = await fetch( `https://route.showapi.com/20-1?appKey=${appkey}&ip=${ip}` ); const data = await resp.json(); if (data.showapi_res_code !== 0) return { err: data.showapi_res_error }; const body = data.showapi_res_body; if (body.ret_code !== "0") return { err: `业务失败 ret_code=${body.ret_code}` }; return { body }; } ``` ## 返回示例与解析 ```json { "showapi_res_code": 0, "showapi_res_error": "", "showapi_res_body": { "region": "广东", "county": "", "isp": "电信", "continents": "亚洲", "en_name": "China", "city_code": "441900", "lnt": "113.760234", "lat": "23.048884", "en_name_short": "CN", "city": "东莞", "country": "中国" } } ``` ## 进阶 / 边界 - **入参要做基本校验**:调用前先判断 `ip` 格式(IPv4/IPv6)再发请求,避免把明显非法的串打满免费档位。 - **海外 IP 同样可用**:返回 `country` 为对应国家、`continents` 标洲、`en_name` 为英文国名,无需单独分支。 - **免费档位限制**:高频调用注意档位(见[免费档位与积分兑换](https://www.showapi.com/guides/ip-geo-free-tier-20));同一 IP 短时重复查可做本地缓存。 ## FAQ **Q1:IPv6 能查吗?** A:参数 `ip` 接受 IP 地址字符串,具体是否覆盖 IPv6 以接口实际返回为准;建议先用目标地址试一次,按 `ret_code` 判断结果。 **Q2:ip 参数必填吗?** A:是。20/1 的 `ip` 为必填业务参数,不传会返回业务失败,务必每次带上。 **Q3:经纬度为什么是字符串?** A:返回里 `lnt`/`lat` 为字符串,用于地图前需 `float()` 转换(见[坐标标点指南](https://www.showapi.com/guides/ip-geo-coordinate-map-20))。 **Q4:和 20/2 域名查询返回字段一样吗?** A:基本一致(都返回 country/region/city/isp/lnt/lat 等);`area`(片区) 在 20/2 示例中未出现。详见[域名查询接入点详解](https://www.showapi.com/guides/ip-geo-domain-query-20)。 ## 相关能力 / 下一步阅读 - [域名查询接入点详解:域名 → IP → 归属地(20-2)](https://www.showapi.com/guides/ip-geo-domain-query-20) - [全球IP地址查询:返回字段全解](https://www.showapi.com/guides/ip-geo-response-fields-20) - [全球IP地址查询:错误处理与 ret_code 排查](https://www.showapi.com/guides/ip-geo-error-handling-20) - **本系列共 10 篇**:查看[全球IP地址查询指南总目录](https://www.showapi.com/guides/ip-geo-guides-20)