入门10分钟

IP地理位置定位API教程

学习如何使用IP查询API获取用户地理位置信息,适用于用户分析、本地化内容展示、区域限制等场景。

IP定位地理信息用户分析JavaScript

前提条件

  • 了解 IP 地址的基本概念
  • JavaScript 基础知识

什么是IP定位?

IP定位是通过用户的IP地址获取其地理位置信息的技术。每个连接到互联网的设备都有一个唯一的IP地址,通过查询这个IP对应的地理信息,可以推断出用户的大致位置。

IP定位常用于: 1. **用户分析**:了解用户分布 2. **本地化服务**:提供用户所在地区的内容 3. **区域限制**:根据用户地区限制内容访问 4. **安全风控**:识别异常登录和可疑活动

📖完整教程

1

第一步:了解IP定位API

IP定位API通过查询IP地址数据库,返回该IP对应的地理位置信息,包括国家、城市、 ISP 等。

bash
# IPInfo API - 免费,无需密钥
https://ipinfo.io/json

# 带指定IP查询
https://ipinfo.io/8.8.8.8/json

# 返回示例
{
  "ip": "8.8.8.8",
  "city": "Mountain View",
  "region": "California",
  "country": "US",
  "loc": "37.4056,-122.0775",
  "org": "AS15169 Google LLC",
  "timezone": "America/Los_Angeles"
}

💡 提示

  • 不带参数调用返回访问者自己的IP信息
  • 带 /IP 地址调用查询指定IP
  • 返回的 loc 字段包含纬度、经度
2

第二步:获取用户IP地址

使用 JavaScript 获取访问者的IP地址。

javascript
// 方法1:使用第三方服务获取本机IP
async function getMyIP() {
  try {
    const response = await fetch('https://ipinfo.io/json');
    const data = await response.json();
    console.log('你的IP地址是:', data.ip);
    console.log('所在城市:', data.city);
    console.log('所属国家:', data.country);
    return data;
  } catch (error) {
    console.error('获取IP失败:', error);
  }
}

// 方法2:使用通用API
async function getMyIPAlt() {
  const response = await fetch('https://api.ipify.org?format=json');
  const data = await response.json();
  console.log('IP:', data.ip);
  return data.ip;
}

// 调用
getMyIP();
getMyIPAlt();

💡 提示

  • 浏览器中无法直接获取客户端IP,需要通过第三方服务
  • 移动网络的IP定位精度较低
  • VPN/代理会显示虚假的IP位置
3

第三步:查询指定IP的地理位置

查询任意IP地址的地理位置信息。

javascript
// 查询指定IP的地理位置
async function getIPLocation(ip) {
  const response = await fetch(`https://ipinfo.io/${ip}/json`);
  const data = await response.json();
  
  return {
    ip: data.ip,
    city: data.city,
    region: data.region,
    country: data.country,
    coordinates: data.loc, // 格式: "纬度,经度"
    isp: data.org,
    timezone: data.timezone
  };
}

// 查询示例IP
getIPLocation('8.8.8.8').then(info => {
  console.log('IP信息:', info);
  /*
  输出:
  {
    ip: '8.8.8.8',
    city: 'Mountain View',
    region: 'California', 
    country: 'US',
    coordinates: '37.4056,-122.0775',
    isp: 'AS15169 Google LLC',
    timezone: 'America/Los_Angeles'
  }
  */
});
python
import requests

def get_ip_location(ip):
    url = f"https://ipinfo.io/{ip}/json"
    response = requests.get(url)
    data = response.json()
    
    return {
        "ip": data.get("ip"),
        "city": data.get("city"),
        "region": data.get("region"),
        "country": data.get("country"),
        "coordinates": data.get("loc"),
        "isp": data.get("org"),
        "timezone": data.get("timezone")
    }

# 查询指定IP
info = get_ip_location("8.8.8.8")
print(f"IP: {info['ip']}")
print(f"位置: {info['city']}, {info['region']}, {info['country']}")
print(f"坐标: {info['coordinates']}")

💡 提示

  • 查询自己的IP时,可以直接访问 https://ipinfo.io/json
  • 返回的 loc 字段是 "纬度,经度" 格式
  • org 字段包含 ISP 和自治系统号信息

🔧常见问题与解决方案

请求超时

解决方案:IP定位服务可能有访问限制,添加重试机制或使用备用API。

VPN用户定位不准确

解决方案:VPN会暴露VPN服务器的IP而非真实位置,这是正常现象。

企业网络显示错误位置

解决方案:企业出口IP通常是数据中心位置,而非员工实际位置。

🔗相关 API

准备好开始了吗?

浏览我们的 API 市场,发现更多免费接口

浏览全部 API