主流免费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"
}