IPWHOIS.io 教程:IP 地理定位 API 指南

IPWHOIS.io 教程:如何使用 IP 地理定位 API

IPWHOIS.io 是一个轻量级的 IP 地理定位 API,可返回任何 IPv4 或 IPv6 地址的国家、城市、ISP、ASN、时区、货币和安全相关数据。它在开发者中很受欢迎,因为免费套餐无需 API 密钥即可使用,JSON 响应易于解析,文档简短,几分钟内即可集成。

本教程将介绍核心端点、响应字段、查询参数、Python 和 JavaScript 代码示例、速率限制以及验证所获数据的实用方法。您还将学习如何在需要确认 IP 是否属于 VPN、代理或数据中心时,使用基于浏览器的隐私工具交叉检查 IPWHOIS.io 的结果。

什么是 IPWHOIS.io?

IPWHOIS.io 教程:IP 地理定位 API 指南 - 什么是 IPWHOIS.io?

IPWHOIS.io 教程:IP 地理定位 API 指南 - 什么是 IPWHOIS.io?.

IPWHOIS.io 教程:IP 地理定位 API 指南 - 什么是 IPWHOIS.io?。

IPWHOIS.io 是一项托管的 IP 情报服务。您发送包含 IP 地址的 HTTP 请求,API 将返回有关该地址的结构化数据,包括:

  • 大洲、国家、地区和城市
  • 纬度和经度
  • ISP 和组织名称
  • ASN(自治系统编号)
  • 时区和货币详细信息
  • 代理、VPN、TOR 和托管提供商的安全标志

一个关键卖点是无需注册的免费套餐:非商业项目每月最多 10,000 次请求。付费计划提高了请求上限,并增加了商业使用权限。

API 如何工作

IPWHOIS.io 教程:IP 地理定位 API 指南 - API 如何工作。

IPWHOIS.io 公开了一个简单的 REST 端点。基本 URL 模式为:

https://ipwhois.app/json/{ip_address}

您可以将 json 替换为 xml 或 csv 以更改响应格式。如果省略 IP 地址,API 将使用发出请求的机器的公共 IP。

例如,要查询 IP 52.149.246.39,您需要请求:

https://ipwhois.app/json/52.149.246.39

您可以直接在浏览器中打开该 URL,或使用 cURL 调用:

curl https://ipwhois.app/json/52.149.246.39

理解 JSON 响应

典型的 JSON 响应如下所示:

{
  "ip": "52.149.246.39",
  "success": true,
  "type": "IPv4",
  "continent": "North America",
  "continent_code": "NA",
  "country": "United States",
  "country_code": "US",
  "region": "Virginia",
  "city": "Ashburn",
  "latitude": 39.0437567,
  "longitude": -77.4874416,
  "asn": "AS8075",
  "org": "Microsoft Corporation",
  "isp": "Microsoft Corporation",
  "timezone": "America/New_York",
  "timezone_name": "Eastern Standard Time",
  "currency": "US Dollar",
  "currency_code": "USD",
  "currency_symbol": "$",
  "completed_requests": 15
}

需要处理的关键字段:

  • success — 布尔值,指示查询是否成功
  • type — IPv4 或 IPv6
  • country_code — 两位字母的 ISO 国家代码,可用于路由逻辑
  • city 和 region — 尽力而为的地理解析
  • asn 和 org — 网络所有权详细信息
  • isp — 与 IP 关联的互联网服务提供商
  • timezone — IANA 时区标识符
  • currency_code — 检测到的国家的 ISO 货币代码

当 success 为 false 时,响应将包含一条错误消息,说明出错原因,例如无效的 IP 格式或保留地址。

使用 Objects 参数限制字段

IPWHOIS.io 教程:IP 地理定位 API 指南 - 使用 Objects 参数限制字段

IPWHOIS.io 教程:IP 地理定位 API 指南 - 使用 Objects 参数限制字段.

默认情况下,IPWHOIS.io 返回所有可用字段。如果您只需要几个值,请使用 objects 查询参数来保持响应小而快:

https://ipwhois.app/json/52.149.246.39?objects=country,city,timezone,currency

这将仅返回请求的字段:

{
  "country": "United States",
  "city": "Ashburn",
  "timezone": "America/New_York",
  "currency": "US Dollar"
}

这对于移动客户端或高容量服务器端调用特别有用,因为每一千字节都很重要。

使用 Lang 参数本地化响应

IPWHOIS.io 支持对选定字段进行本地化输出。添加带有两位语言代码的 lang 参数:

https://ipwhois.app/json/52.149.246.39?objects=country,continent&lang=fr

响应:

{
  "continent": "Amérique du Nord",
  "country": "États-Unis"
}

并非每个字段都被本地化,但地理名称通常会被本地化。当您为多语言用户提供服务并希望以他们偏好的语言显示位置名称时,这很方便。

使用 JSONP 进行仅浏览器请求

如果您在浏览器环境中工作,而跨域请求受到限制,IPWHOIS.io 支持 JSONP。附加一个 callback 参数:

https://ipwhois.app/json/52.149.246.39?objects=country,city&callback=myIPInfo

API 将 JSON 包装在您的回调函数中:

myIPInfo({
  "country": "United States",
  "city": "Ashburn"
});

然后,您可以在页面中定义 myIPInfo 来处理数据。

Python 示例:构建简单的 IP 查询工具

Python 是 IPWHOIS.io 集成最常用的语言之一。requests 模块使其变得简单:

import requests

ip_address = "8.8.8.8"
url = f"https://ipwhois.app/json/{ip_address}"

response = requests.get(url)
data = response.json()

if data.get("success"):
    print(f"IP: {data['ip']}")
    print(f"Country: {data['country']}")
    print(f"City: {data['city']}")
    print(f"ISP: {data['isp']}")
    print(f"ASN: {data['asn']}")
else:
    print("Lookup failed:", data.get("message"))

此模式适用于命令行脚本、Flask 或 Django 后端以及自动化任务。您可以扩展它以循环遍历 IP 列表、将结果写入 CSV 文件或在检测到安全标志时触发警报。

添加错误处理

生产代码应处理网络故障和非 JSON 响应:

import requests

def lookup_ip(ip):
    try:
        response = requests.get(
            f"https://ipwhois.app/json/{ip}",
            timeout=10
        )
        response.raise_for_status()
        return response.json()
    except requests.exceptions.RequestException as e:
        return {"success": False, "message": str(e)}

JavaScript 示例:在 Node.js 中获取 IP 数据

对于 Node.js 应用程序,内置的 fetch API 无需额外依赖即可使用:

async function lookupIP(ip) {
  const url = `https://ipwhois.app/json/${ip}`;
  const response = await fetch(url);
  const data = await response.json();

  if (data.success) {
    console.log(`Country: ${data.country}`);
    console.log(`ISP: ${data.isp}`);
    console.log(`ASN: ${data.asn}`);
  } else {
    console.error('Lookup failed:', data.message);
  }
}

lookupIP('1.1.1.1');

对于浏览器端 JavaScript,请使用上述 JSONP 方法或通过您自己的后端路由请求以避免 CORS 限制。

免费套餐限制和定价

IPWHOIS.io 提供具有以下特点的免费套餐:

  • 每月最多 10,000 次请求
  • 无需 API 密钥或注册
  • 适用于非商业或小型项目

如果您的应用程序每月超过 10,000 次请求或用于商业用途,则需要付费计划。请查看官方定价页面以获取当前费率,因为限制和功能会随时间变化。

如果您正在评估多个 IP 情报提供商,比较请求配额、数据新鲜度、安全标志覆盖范围和 SLA 保证是值得的。像 HackerTarget 定价分解 这样的指南可以帮助您了解商业扫描器和 API 计划在行业中的典型结构。

安全标志:检测 VPN、代理和托管 IP

IPWHOIS.io 对欺诈预防和访问控制最有价值的功能之一是安全标志集。API 可以指示 IP 是否与以下内容关联:

  • VPN 服务
  • 公共代理
  • TOR 出口节点
  • 数据中心或托管提供商

这些标志可帮助您决定是否信任访问者、阻止自动化流量或应用额外的验证步骤。例如,来自被标记为代理的托管提供商 IP 的登录尝试比来自主要 ISP 的住宅 IP 是更强的欺诈信号。

使用浏览器工具交叉检查安全标志

基于 API 的地理定位和安全标志很有用,但它们只是验证的一层。如果您需要确认自己的连接是否通过 DNS 或 WebRTC 泄漏真实 IP,或者您的浏览器指纹是否看起来真实,基于浏览器的扫描器提供了第二视角。

BrowserScan 提供了一套免费的基于 Web 的隐私诊断,包括 DNS 和 WebRTC 泄漏测试、带代理检测的 IP 地址查询以及浏览器指纹分析。将 IPWHOIS.io 集成到后端后,您可以使用 BrowserScan 来验证您的 VPN 或反检测设置是否没有暴露您的 API 逻辑试图保护的数据。

IPWHOIS.io 的实际用例

1. 本地化内容和货币

使用 country_code 和 currency_code 字段来显示本地化的定价、语言或运输选项,而无需询问用户的位置。

2. 阻止或标记高风险流量

将安全标志与您的身份验证流程相结合。如果 IP 被标记为 VPN 或代理,您可以要求额外验证或限制对敏感端点的访问。

3. 丰富日志和分析

将地理定位和 ISP 数据附加到应用程序日志、安全事件或分析管道中。这使您更容易发现异常访问模式,例如来自意外国家的登录。

4. 构建内部 IP 工具

创建一个小的内部仪表板,让支持或安全团队粘贴 IP 并立即查看所有权、位置和风险标志。上面的 Python 脚本是一个坚实的起点。

IPWHOIS.io 与其他 IP 情报方法对比

功能 IPWHOIS.io 基于浏览器的扫描器
主要用例 服务器端 IP 丰富 客户端隐私和泄漏验证
需要 API 集成 是 否,在浏览器中运行
安全标志 VPN、代理、TOR、托管 代理检测、DNS/WebRTC 泄漏状态
返回的数据 包含地理定位、ISP、ASN 的 JSON 指纹真实性、泄漏结果
最适合 后端逻辑、欺诈预防 最终用户隐私检查、VPN 验证

这些方法是互补的。IPWHOIS.io 为您提供用于服务器端决策的程序化数据。像 BrowserScan 的 IP 查询和泄漏测试 这样的基于浏览器的工具显示您的浏览器实际向网站暴露了什么,这对于验证 VPN 或隐私设置是否正常工作至关重要。

常见陷阱及如何避免

假设城市级准确性

IP 地理定位是近似的。城市级数据可能偏差数十或数百公里,尤其是移动网络。将 city 和 latitude/longitude 视为信号,而不是精确坐标。

忽略成功标志

在访问其他字段之前始终检查 success。失败的查询可能仍返回 JSON 对象,但预期字段将缺失。

不处理速率限制

免费套餐上限为每月 10,000 次请求。如果超过,请求可能会失败或被限制。对相同 IP 的重复查询实施缓存以保持在限制内。

信任单一数据源

没有 IP 情报数据库是完美的。IPWHOIS.io 使用多个来源和神经网络来更新其数据库,但您仍应使用其他信号(如浏览器指纹数据或历史行为)交叉验证关键决策。

验证您自己的 IP 和隐私设置

当您使用 IP 地理定位 API 时,很容易忘记您自己的连接也有一个网站可以看到的 IP 地址。在部署依赖 IPWHOIS.io 的功能之前,请验证您的开发环境没有泄漏数据:

  1. 对您自己的公共 IP 运行 IPWHOIS.io 查询,查看 API 报告了什么。
  2. 打开像 BrowserScan 这样的基于浏览器的扫描器来检查 DNS 或 WebRTC 泄漏。
  3. 比较结果。如果您的 VPN 处于活动状态,但 API 仍然看到您的 ISP 的 IP,则说明配置有误。

如果您正在构建注重隐私的应用程序或测试代理和 VPN 检测逻辑,这种两层验证尤其重要。

相关阅读

  • IP-Lookup.net 登录:您需要账户吗? - IP-Lookup.net 需要登录吗?了解如何在没有账户的情况下使用免费 IP 查询工具、您能获得哪些数据以及如何安全地验证您的真实 IP。
  • 持续安全监控:实用指南 - 了解什么是持续安全监控、它如何工作、关键组件、优势以及如何为您的组织构建有效的 CSM 计划。

来源和进一步阅读

常见问题解答

IPWHOIS.io 真的免费吗?

是的,对于每月少于 10,000 次请求的非商业项目。免费套餐无需 API 密钥或注册。商业用途或更高容量需要付费计划。

IPWHOIS.io 支持 IPv6 吗?

支持。API 接受 IPv4 和 IPv6 地址,响应中的 type 字段告诉您查询的是哪种格式。

有哪些响应格式可用?

JSON、XML 和 CSV。JSON 是默认且最常用的格式。您也可以使用 JSONP 进行基于浏览器的请求。

地理定位数据的准确性如何?

国家级的准确性通常是可靠的。城市级的准确性因 ISP 和地区而异。该服务使用多个来源更新其数据库,但没有任何 IP 地理定位提供商能保证城市或街道级别的精确性。

我可以将 IPWHOIS.io 用于商业项目吗?

可以,但您需要付费计划。请查看官方定价页面以了解商业条款和请求限制。

如何知道 IP 是否属于 VPN 或代理?

IPWHOIS.io 在可用时会在响应中返回安全标志。如需额外验证,您可以使用像 BrowserScan 这样的基于浏览器的工具进行交叉检查,该工具包括代理检测和泄漏测试。

结论

IPWHOIS.io 是最容易上手的 IP 地理定位 API 之一:免费套餐无需密钥、干净的 JSON 响应、灵活的输出格式和有用的安全标志。无论您是构建 Python CLI 工具、丰富后端日志,还是为 Web 应用添加位置感知功能,该 API 都能让您快速从零到工作集成。

请记住,API 数据只是 IP 情报图景的一方面。对于最终用户隐私验证、DNS 和 WebRTC 泄漏检查以及浏览器指纹分析,请将您的服务器端查询与像 BrowserScan 这样的基于浏览器的扫描器配对。它们共同为您提供更完整的视图,了解 IP 地址代表什么以及您自己的连接正在暴露什么。

有关 IP 工具和安全扫描工作流程的进一步阅读,请参阅此 HackerTarget 的扫描器和 IP 实用程序 概述。