跨境物流查件纠纷
发往德国的 DHL 包裹显示已签收,买家坚称没收到。客服要求提供 IP 归属地作为辅助证据。把买家提供的签收时间点 IP 记录输入本工具,查到该 IP 实际归属城市与买家所在城市不同,且运营商为当地数据中心而非家庭宽带,帮助判断包裹可能被代收点签收。
ipapi.co,境内通常仅精确到省份;本机 IP 通过公网 API 获取。
域名先经 DoH(国内 doh.pub / alidns → 国外 cloudflare / google)解析 A 记录再查。私网 / 保留地址本地判定,不外发查询。排查网络故障时,最怕的是“IP 归属地”和“实际位置”对不上——比如某 CDN 节点 IP 显示北京,实际路由却在杭州。输入任意 IP 或域名,这个工具直接返回国家、省市和运营商名称,数据来自公开 IP 库,不存储查询记录。后端实时查库,适合运维排查路由、外贸站判断访客来源时快速比对。
发往德国的 DHL 包裹显示已签收,买家坚称没收到。客服要求提供 IP 归属地作为辅助证据。把买家提供的签收时间点 IP 记录输入本工具,查到该 IP 实际归属城市与买家所在城市不同,且运营商为当地数据中心而非家庭宽带,帮助判断包裹可能被代收点签收。
凌晨 3 点 WordPress 后台出现一条管理员登录记录,IP 为 103.235.46.x。用本工具查得该 IP 归属地为香港某云服务商,而管理员本人常住上海且当晚无海外访问记录。结合工具返回的运营商信息,确认是撞库攻击,立即封禁该 IP 段并修改密码。
App 内基于 IP 的天气插件把一位新加坡用户定位到马来西亚新山。用户投诉后,用本工具查该用户 IP,返回运营商为 StarHub(新加坡本地运营商),但 IP 库的地理位置标注有误。将工具结果截图发给 IP 库维护方修正,同时临时在前端增加手动选择城市兜底。
一个订单的收货地址是北京朝阳区,但支付 IP 归属地显示为福建龙岩,且运营商为住宅宽带。用本工具交叉验证:支付 IP 与收货 IP 不同,且支付 IP 近 1 小时内在该工具上被查询过 3 次(均为不同收货地址)。判定为代付欺诈,触发人工审核。
运维同事反馈华东用户访问延迟高,怀疑 CDN 节点未按地域调度。用本工具随机抽取 10 个华东用户 IP,逐一查询归属地,发现其中 3 个 IP 被 CDN 调度到了华南节点。工具返回的运营商字段显示这些 IP 均属于同一家二级运营商,其路由策略导致跨区域调度。
| 维度 | 本工具 | 竞品 A(ipip.net) | 传统方法(命令行/手动查表) |
|---|---|---|---|
| 查询方式 | 输入 IP 或域名,一键查询 | 输入 IP,需手动切换域名查询 | 手动 ping 域名后查 IP,再对照公开库 |
| 数据覆盖 | 国家 + 省市 + 运营商 | 国家 + 省市 + 运营商(商业库更细) | 仅国家 / 部分省市,运营商需另查 |
| 速度 | 实时返回(毫秒级) | 实时返回(毫秒级) | 依赖网络延迟和手动步骤,分钟级 |
| 隐私 | 查询记录不存储 | 部分需注册 / 记录查询历史 | 本地操作无上传 |
| 离线可用 | 需联网 | 需联网 | 完全离线(需本地数据库) |
| 收费 | 免费 | 免费版有次数限制 | 免费(需自行维护数据库) |
| 输入 | 输出 | 说明 |
|---|---|---|
| 8.8.8.8 | 美国 / 加利福尼亚州 / 山景城 / Google LLC | 常规:全球最常用的公共 DNS 服务器,验证海外 IP 解析的准确度与运营商识别 |
| 114.114.114.114 | 中国 / 江苏省 / 南京市 / 中国电信 | 常规:国内常用公共 DNS,验证国内 IP 的省市级别精度与运营商归属 |
| 127.0.0.1 | 保留地址 / 本机回环地址 / 无运营商信息 | 边界:回环地址(Loopback),验证工具对保留地址段的处理——不应报错,应明确提示地址性质 |
| 0.0.0.0 | 保留地址 / 未指定地址 / 无运营商信息 | 边界:未指定地址,验证工具对全零地址的识别,常见于 DHCP 或网络配置场景 |
| 10.0.0.1 | 保留地址 / 私有网络(A 类) / 无运营商信息 | 边界:私有地址(RFC 1918),验证工具能否正确标记私有 IP 而非强行查库 |
| www.baidu.com | 解析结果:180.101.49.11 → 中国 / 北京市 / 北京百度网讯科技有限公司 | 易错:用户输入域名而非 IP,验证工具是否支持 DNS 前置解析,并展示解析后的 IP 结果 |
| 192.168.1.1 | 保留地址 / 私有网络(C 类) / 无运营商信息 | 易错:常见家用路由器地址,用户常误以为能查到运营商,实际为私有 IP,需明确说明 |
| 256.256.256.256 | 无效 IP 地址:各段数值超出 0-255 范围 | 易错:非法 IP 格式,验证工具对输入校验的严格程度——应明确报错而非返回空/乱码 |
1.把域名当IP地址查,得到错误归属
输入 baidu.com 查IP归属先用 nslookup 或 ping 获取 baidu.com 的IP(如 110.242.68.66),再用该IP查归属域名本身无地理位置属性,工具只解析IP地址。域名归属是域名注册商所在地,与服务器物理位置无关。
2.查私有IP(内网地址)以为有公网归属
输入 192.168.1.1 查归属输入公网IP(如 8.8.8.8)查归属RFC 1918 定义的私有IP(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)是局域网地址,不分配地理位置,工具返回空或默认值。
3.输入IPv6地址但工具只支持IPv4
输入 240e:390:1234::1 查归属确认工具支持IPv6后再输入,否则用IPv4地址部分公开IP库只收录IPv4数据,IPv6地址无对应记录。使用前需查看工具说明是否标注支持IPv6。
4.误以为运营商信息精确到二级运营商
输入 1.2.3.4 期望返回「长城宽带」接受返回「中国电信」等一级运营商公开IP库的ASN数据通常只到一级运营商(中国电信/联通/移动),不包含长城宽带、鹏博士等二级运营商。
5.用代理/VPN后的IP查真实位置
开启VPN后查本机IP,认为结果代表物理位置关闭VPN/代理后再查本机IP,或直接查目标IP(非本机)VPN出口IP归属地为服务器所在地,与用户实际位置不同。本机IP查询结果反映的是网络出口位置,非物理位置。
6.把IP库的「城市」当精确行政区划
认为IP归属城市精确到街道或区只将城市信息作为参考,不用于精确导航或地址验证公开IP库(如GeoIP)的城市精度通常为地级市级别,误差可达数公里,部分小城市可能被归入相邻大城市。
7.输入带端口或路径的IP地址
输入 8.8.8.8:53 或 8.8.8.8/path输入 8.8.8.8IP地址查询工具只接受纯IP地址(点分十进制),端口号和路径是网络协议层内容,不属于IP地址格式。
8.频繁查同一个IP认为结果会变化
每隔10秒刷新查同一个IP,期待运营商或城市变化确认IP归属不变后停止重复查询IP归属信息由IP段分配决定,除非IP重新分配或库更新,否则短期内结果不变。频繁查询浪费资源且无意义。
IP 归属地 = lookup(IP, 公开 IP 库)
IPIPv4 或 IPv6 地址公开 IP 库如 GeoLite2 等离线数据库输入 IP 8.8.8.8,查询公开 IP 库(如 GeoLite2-City)中对应记录,返回国家 US、州 California、城市 Mountain View、运营商 Google LLC。
5 种主流语言实现,复制即用:
import requests
# 使用 ip-api.com 免费公开 API(无 key,支持 HTTP)
ip = '8.8.8.8' # 可替换为任意 IP 或域名
resp = requests.get(f'http://ip-api.com/json/{ip}', timeout=5)
data = resp.json()
if data['status'] == 'success':
print(f"IP: {data['query']}")
print(f"国家: {data['country']} ({data['countryCode']})")
print(f"省市: {data['regionName']} {data['city']}")
print(f"运营商: {data['isp']}")
else:
print('查询失败:', data.get('message', ''))// Node.js 18+ 原生 fetch,无需安装依赖
const ip = '8.8.8.8';
const url = `http://ip-api.com/json/${ip}`;
fetch(url)
.then(res => res.json())
.then(data => {
if (data.status === 'success') {
console.log(`IP: ${data.query}`);
console.log(`国家: ${data.country} (${data.countryCode})`);
console.log(`省市: ${data.regionName} ${data.city}`);
console.log(`运营商: ${data.isp}`);
} else {
console.log('查询失败:', data.message);
}
})
.catch(err => console.error('网络错误:', err));package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"time"
)
type IPInfo struct {
Query string `json:"query"`
Country string `json:"country"`
CountryCode string `json:"countryCode"`
RegionName string `json:"regionName"`
City string `json:"city"`
ISP string `json:"isp"`
Status string `json:"status"`
Message string `json:"message,omitempty"`
}
func main() {
ip := "8.8.8.8"
url := fmt.Sprintf("http://ip-api.com/json/%s", ip)
client := http.Client{Timeout: 5 * time.Second}
resp, err := client.Get(url)
if err != nil {
fmt.Println("请求失败:", err)
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var info IPInfo
json.Unmarshal(body, &info)
if info.Status == "success" {
fmt.Printf("IP: %s\n国家: %s (%s)\n省市: %s %s\n运营商: %s\n",
info.Query, info.Country, info.CountryCode, info.RegionName, info.City, info.ISP)
} else {
fmt.Println("查询失败:", info.Message)
}
}#!/bin/bash
# 依赖 curl,通常预装
IP="8.8.8.8"
RESP=$(curl -s --max-time 5 "http://ip-api.com/json/$IP")
STATUS=$(echo "$RESP" | jq -r '.status' 2>/dev/null)
if [ "$STATUS" = "success" ]; then
echo "IP: $(echo "$RESP" | jq -r '.query')"
echo "国家: $(echo "$RESP" | jq -r '.country') ($(echo "$RESP" | jq -r '.countryCode'))"
echo "省市: $(echo "$RESP" | jq -r '.regionName') $(echo "$RESP" | jq -r '.city')"
echo "运营商: $(echo "$RESP" | jq -r '.isp')"
else
echo "查询失败: $(echo "$RESP" | jq -r '.message' 2>/dev/null || echo '未知错误')"
fi<?php
$ip = '8.8.8.8';
$url = "http://ip-api.com/json/{$ip}";
$resp = @file_get_contents($url, false, stream_context_create(['http' => ['timeout' => 5]]));
if ($resp === false) {
echo "网络请求失败\n";
exit;
}
$data = json_decode($resp, true);
if ($data['status'] === 'success') {
echo "IP: {$data['query']}\n";
echo "国家: {$data['country']} ({$data['countryCode']})\n";
echo "省市: {$data['regionName']} {$data['city']}\n";
echo "运营商: {$data['isp']}\n";
} else {
echo "查询失败: " . ($data['message'] ?? '未知错误') . "\n";
}两个都可能准,但查到的对象不同。本工具查的是你当前网络出口 IP(即你访问本工具时服务器看到的 IP),百度或其它网站查的也是类似原理,但如果你开了 VPN、代理、或者运营商用的是 CGNAT(大内网),每次查询或不同网站的显示可能不一样。建议先关闭代理,刷新页面再查一次;如果还是不同,通常是运营商出口 IP 池轮换,两个都是真实的公网 IP。
取决于域名解析情况。如果域名用了 CDN(如 Cloudflare、阿里云 CDN),查到的通常是 CDN 节点的 IP,而非源站真实 IP。本工具对域名做的是标准 A 记录解析,返回的就是当前 DNS 解析结果。如果想查源站 IP,需要绕过 CDN(如直接查域名历史解析记录或子域名枚举),本工具不提供该功能。
IP 归属运营商数据来自公开 IP 库,更新频率通常为 1-3 个月,而运营商之间的 IP 段转让、新增、合并时有发生,导致库落后于实际。另外,部分二级运营商(如长城宽带、鹏博士)租用一级运营商线路时,IP 段仍归属原运营商。建议以宽带账单或运营商 App 显示的为准;如果需要最新数据,可以尝试换一个 IP 库(如 ipip.net 付费版)。
不是坏了,是 IP 定位精度有限。IP 地理定位基于 IP 段注册地址和 BGP 路由信息,通常只能精确到城市级别(部分仅到省份),对于跨省运营商(如教育网、大型企业专线)或移动热点,定位偏差几百公里是正常现象。本工具用的是纯地理位置库(非基站/GPS),无法做到高精度。如果需要精确位置,请使用 GPS 或 Wi-Fi 定位。
不能。IP 地址只能定位到运营商机房或城市级别,无法获取家庭住址、门牌号等个人隐私信息。本工具使用的公开 IP 库仅包含国家、省份、城市和运营商,不涉及任何用户隐私数据。任何声称能通过 IP 查家庭地址的网站或服务,要么是诈骗,要么是使用了非法数据。
“保留地址”指该 IP 属于私有地址段(如 10.x.x.x、192.168.x.x、172.16-31.x.x)或特殊用途段(如 127.x.x.x 回环地址),这些 IP 在公网上不可路由,只用于内部网络或本地测试。本工具检测到这类 IP 时会直接提示“保留地址/局域网”,不会继续查地理位置和运营商,因为这类信息无意义。如果确认该 IP 应该是公网 IP,可以检查是否输入有误。
本工具不做主动限速或封禁,只要在合理使用范围内(比如每小时几百次查询),都可以正常使用。但请注意,如果使用脚本或程序高频连续请求(如每秒数十次),可能会被服务器防火墙自动临时限制,这是所有公开 Web 服务的通用保护机制。建议正常手工使用,无需担心。
基本对不上。快递地址是用户填写的精确门牌号,IP 归属地是运营商分配 IP 时注册的行政区划,二者没有直接关联。例如,一个北京用户用上海运营商的手机热点上网,IP 归属地会显示上海,但快递地址仍是北京。所以不要用 IP 归属地来判断快递地址是否正确,两者是不同维度的信息。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。