JavaScript IP 位置查询指南

从浏览器或 Node.js 获取一个 IP 地址的位置。

在 JavaScript 中查询 IP 地址

该请求接受一个 IPv4 或 IPv6 地址,并要求返回 JSON。请将示例地址替换为需要检查的地址。

单个 IP 的位置查询请求
const ip = '8.8.8.8'; // Replace with an IPv4 or IPv6 address.
const response = await fetch(
  'https://api.ipquery.io/' + encodeURIComponent(ip) + '?format=json',
  { signal: AbortSignal.timeout(8000) }
);
if (!response.ok) throw new Error('IPQuery returned HTTP ' + response.status);
const data = await response.json();
if (data.ip !== ip || !data.location || !data.isp) {
  throw new Error('Unexpected IPQuery response');
}
console.log(data.location.country, data.location.city, data.isp.asn);

请在支持 fetch 和 AbortSignal.timeout 的现代浏览器或 Node.js 中运行。浏览器发出的地址查询请求用于识别您提供的地址;自身 IP 端点用于识别浏览器连接的地址。

读取位置和网络字段

location.country 和 location.country_code 表示大致所在国家。location.city 可能为空或不准确。isp.asn 标识网络,该网络可能与使用此地址的个人或公司不同。

如需获取发起请求的连接地址,请调用 https://api.ipquery.io/?format=json. 服务器发出的请求返回服务器用于连接的 IP;浏览器发出的请求返回其连接对外可见的地址。

所有响应字段

在 Dashy 中使用 IPQuery

Dashy 的 Public IP 小组件无需 API 密钥即可使用 IPQuery。请将以下条目添加到某个 Dashy 分区的 widgets 列表中:

Dashy Public IP 小组件
- type: public-ip
  options:
    provider: ipquery

关闭 Dashy 的代理设置时,请求由浏览器发出,小组件显示该连接的公网 IP 和近似位置。在小组件顶层设置 useProxy: true 或启用 appConfig.widgetsAlwaysUseProxy 后,请求会经由 Dashy 服务器发送,小组件改为显示服务器的公网 IP。在小组件顶层设置 useProxy: false 不会覆盖整个仪表板的设置。

该小组件使用 IPQuery 的自身 IP 端点。如需检查其他地址,请使用上方的单个 IP JavaScript 查询请求。

Dashy Public IP 小组件选项

准确性与安全性

IP 地理位置是对网络位置的估计,并非设备位置。VPN、代理、移动网络和运营商网关可能导致地址被定位到远离用户的地方。请将缺失值视为未知,不要用猜测补齐。

如果应用读取 X-Forwarded-For,仅在该标头由您控制的代理提供时才可信任。客户端提供的标头可能被伪造。发起查询请求前请验证地址,并将超时和 HTTP 错误与成功结果分别处理。

API 参考

完整列表访问。

如需价格或完整列表访问权限,请发送邮件至 contact@ipquery.io.

选定列表
选定记录
此列表中的记录