JavaScript IP 位置查询指南
从浏览器或 Node.js 获取一个 IP 地址的位置。
在 JavaScript 中查询 IP 地址
该请求接受一个 IPv4 或 IPv6 地址,并要求返回 JSON。请将示例地址替换为需要检查的地址。
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 列表中:
- 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 参考