批量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) | 100 | 否 | 15次/分钟,非商业用途 |
| 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个地址,然后粘贴列表。在从已知区块构建白名单或黑名单时,这很方便。