HackMyIP

批量IP查询API

向 /api/bulk 提交最多50个IP — 免费批量地理位置和ISP,无需密钥、无需注册

需要一次性获取一批IP的地理位置和ISP数据?HackMyIP的批量端点单次POST最多接受50个IP,并为每个IP返回一条结果——免费、无需密钥、无需注册。它比50次顺序调用更快,也更省速率配额。如果你更想在浏览器里粘贴列表,还有交互式 批量查询工具。完整参考见 API文档

POST /api/bulk

发送包含 "ips" 数组的JSON正文(最多50个):

curl -X POST -H "Content-Type: application/json" \
  -d '{"ips":["8.8.8.8","1.1.1.1","208.67.222.222"]}' \
  https://hackmyip.com/api/bulk

响应——每个IP一行,包含国家、城市、ISP、组织和坐标:

{
  "success": true,
  "data": {
    "total": 3,
    "results": [
      { "ip": "8.8.8.8", "country": "US", "city": "...",
        "isp": "Google LLC", "org": "...", "lat": 0, "lon": 0 },
      { "ip": "1.1.1.1", "country": "...", "city": "...",
        "isp": "...", "org": "...", "lat": 0, "lon": 0 }
    ]
  }
}

无效或无法解析的条目会以 { "ip": "...", "error": "invalid format" } 返回,因此单个坏IP不会让整批失败。

代码示例

JavaScript (fetch)

const res = await fetch('https://hackmyip.com/api/bulk', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ ips: ['8.8.8.8', '1.1.1.1', '9.9.9.9'] })
});
const { data } = await res.json();
data.results.forEach(r => console.log(r.ip, r.country, r.isp));

Python (requests)

import requests

ips = ['8.8.8.8', '1.1.1.1', '208.67.222.222']
r = requests.post('https://hackmyip.com/api/bulk', json={'ips': ips})
for row in r.json()['data']['results']:
    print(row['ip'], row.get('country'), row.get('isp'))

查询超过50个IP

批量端点每次请求上限为50个IP。对于更大的列表,可将其分成每批50个,或当你需要更丰富的单IP字段(如数字ASN)时循环调用单IP的 /api/lookup 端点。请保持在每分钟60次请求以内:

import requests, time

ips = [ ... ]  # any number of IPs
for ip in ips:
    r = requests.get('https://hackmyip.com/api/lookup', params={'ip': ip})
    d = r.json()['data']
    print(ip, d['network']['asn'], d['network']['isp'])
    time.sleep(1)  # stay under 60 requests/minute

免费批量IP API对比

各免费IP API的批量限制差异很大——有的无需密钥,有的批量上限很小,有的把批量功能放在付费层。下表数据于2026年7月依据各服务商自己的文档核对;服务商经常调整限制,请在构建前到其官网确认。

服务 每次请求IP数 需要密钥 备注
HackMyIP (/api/bulk)50无需注册,60次/分钟
ip-api.com (batch)10015次/分钟,非商业用途
ipapi.co (bulk)25 (免费)否(25个内)付费计划每次可查更多
ipinfo.io (/batch)1000是(令牌)批量需要令牌
ipgeolocation.io仅付费批量为付费订阅功能

要查看各免费IP API返回内容(不仅是批量)的完整对比,请见 最佳免费IP地理定位API汇总

为什么批量优于逐个查询

批量端点的存在是为了摊薄速率限制。每次单IP调用都会为一个结果花掉你速率配额的一个单位;而一次批量请求可以把多个IP装进同一次请求。ip-api.com 的文档直接说明了这一点——其批量为每次POST 100个IP、每分钟15次请求(每分钟最多1,500个IP),而单IP端点为每分钟45次请求。无论哪种方式,速率限制都是上限;批量只是把远更多的IP装进这个上限之下。

批量IP地理定位有多准确?

批量只改变吞吐量,而非准确度——无论你查1个还是50个,每个IP都针对同一个地理定位数据库解析。而这类数据本质上是近似的。IP地理定位的主要来源之一 MaxMind 明确表示,其数据“绝不足以精确到识别或定位特定的家庭、个人或街道地址”。请把批量结果视为用于日志分析、滥用甄别、构建白名单/黑名单的国家与城市级估计——而不是家庭住址。

需要检查整个IP范围?用 CIDR计算器 将CIDR块展开为单个地址(或用 IP范围转CIDR 转换范围),然后粘贴列表。要获取IP背后的数字ASN和组织,可循环调用 ASN查询

常见问题

有免费的批量IP查询API吗?

有。HackMyIP的 POST /api/bulk 每次请求接受最多50个IP的JSON数组,并为每个IP返回地理位置和ISP——无需密钥、无需注册。超过50个IP时,可分多批发送或循环调用单IP的 /api/lookup 端点。

批量IP WHOIS 怎么办?

HackMyIP不提供批量WHOIS端点。要查询网络归属,可对每个IP使用单IP的 /api/lookup(返回ASN、ISP和组织)或 /api/asn?q={ip}。/api/whois 端点用于域名RDAP,而非IP WHOIS。请在你的列表上循环调用这些端点,并遵守每分钟60次请求的限制。

我一次可以查询多少个IP?

每次 POST /api/bulk 请求最多50个IP。该端点将数组上限设为50并并行查询,因此一次批量比50次顺序调用快得多。更大的列表请分多批发送。

批量IP查询需要API密钥吗?

在这里不需要——HackMyIP 的 /api/bulk 端点无需密钥、无需注册。免费服务之间各有不同:ip-api.com 的批量请求无需密钥(非商业用途,其文档记录为每分钟15次请求),而 ipinfo.io 等服务需要令牌,有些还把批量功能放在付费层。使用前请务必查看具体服务的限制。

批量IP地理定位和单个查询一样准确吗?

一样准确。批量和单个查询读取的是同一个地理定位数据库,因此每个IP的准确度完全相同——批量只改变每次请求处理的数量,而不改变数据质量。请记住,IP地理定位是近似的:MaxMind 明确表示其数据的精度绝不足以识别特定家庭或街道地址,因此应预期国家和城市级别的估计。

我可以批量查询一个IP范围或CIDR块吗?

批量端点接受的是单个IP,而不是直接的CIDR表示法。请先用CIDR计算器将 192.0.2.0/24 这样的范围展开为其256个地址,然后粘贴列表。在从已知区块构建白名单或黑名单时,这很方便。

批量查询工具 完整API文档 单IP查询