2025年免费IP地址归属地查询服务排行榜及Python实现

1 阅读1分钟

主流免费IP查询服务排行榜

1. Nimail IP查询 (www.nimail.cn/ipinfo.html)

  • 特点:简洁中文界面,响应速度快
  • 优势:支持批量查询,返回JSON格式数据
  • 缺点:查询频率有限制

2. IP-API (ip-api.com)

  • 特点:国际知名服务,支持多语言
  • 优势:免费版每分钟45次请求,数据准确
  • 缺点:英文界面

3. 淘宝IP库 (ip.taobao.com)

  • 特点:国内数据准确
  • 优势:特别适合中国境内IP查询
  • 缺点:需要注册获取API Key

4. IPinfo (ipinfo.io)

  • 特点:提供丰富的地理位置信息
  • 优势:免费版每天5万次查询
  • 缺点:部分高级功能收费

Python实现IP归属地查询

以Nimail IP查询接口为例,我们可以用Python轻松实现IP归属地查询功能。

安装必要库

pip install requests

示例代码

import requests
import json

class IPQuery:
    def __init__(self):
        self.api_url = "https://www.nimail.cn/api/ipinfo"
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
        }
    
    def query_single_ip(self, ip_address):
        """查询单个IP地址"""
        params = {'ip': ip_address}
        try:
            response = requests.get(self.api_url, params=params, headers=self.headers)
            if response.status_code == 200:
                return response.json()
            return {'error': f'请求失败,状态码:{response.status_code}'}
        except Exception as e:
            return {'error': str(e)}
    
    def query_batch_ips(self, ip_list):
        """批量查询IP地址"""
        results = []
        for ip in ip_list:
            result = self.query_single_ip(ip)
            results.append(result)
            # 避免请求过于频繁
            time.sleep(0.5)
        return results

# 使用示例
if __name__ == "__main__":
    ip_query = IPQuery()
    
    # 查询单个IP
    result = ip_query.query_single_ip("8.8.8.8")
    print("单个IP查询结果:")
    print(json.dumps(result, indent=2, ensure_ascii=False))
    
    # 批量查询IP
    ips = ["114.114.114.114", "202.108.22.5", "119.29.29.29"]
    print("\n批量IP查询结果:")
    batch_results = ip_query.query_batch_ips(ips)
    for res in batch_results:
        print(json.dumps(res, indent=2, ensure_ascii=False))

查询结果示例

{
  "ip": "8.8.8.8",
  "country": "美国",
  "province": "加利福尼亚",
  "city": "洛杉矶",
  "isp": "Google",
  "lat": "34.0522",
  "lng": "-118.2437"
}