IP-API使用教程#
软件介绍#
IP-API是一款免费的IP地址信息查询服务,提供详细的地理位置、ISP、ASN、时区等信息。它无需API密钥即可使用,支持HTTP和HTTPS协议,是快速查询IP信息的理想选择。
主要功能#
- IP地址地理位置查询
- ISP和ASN信息获取
- 时区信息查询
- 货币信息查询
- 移动网络检测
- 代理/VPN检测(付费版)
- 批量查询(付费版)
- JSON/XML/CSV格式输出
适用场景#
- 快速IP信息查询
- 网络安全分析
- 地理位置分析
- 流量分析
- 系统管理
入门级使用#
基本IP查询#
查询单个IP地址#
# 基本查询(JSON格式)
curl http://ip-api.com/json/8.8.8.8
# 输出示例
{
"query": "8.8.8.8",
"status": "success",
"country": "United States",
"countryCode": "US",
"region": "CA",
"regionName": "California",
"city": "Mountain View",
"zip": "94043",
"lat": 37.4223,
"lon": -122.085,
"timezone": "America/Los_Angeles",
"isp": "Google LLC",
"org": "Google Public DNS",
"as": "AS15169 Google LLC"
}查询当前IP#
# 查询本机IP信息
curl http://ip-api.com/json/
# 输出当前IP的详细信息使用HTTPS查询#
# 使用HTTPS协议查询
curl https://ip-api.com/json/8.8.8.8基本信息字段说明#
- query: 查询的IP地址
- status: 查询状态(success/fail)
- country: 国家名称
- countryCode: 国家代码
- region: 州/省代码
- regionName: 州/省名称
- city: 城市
- zip: 邮政编码
- lat: 纬度
- lon: 经度
- timezone: 时区
- isp: ISP名称
- org: 组织名称
- as: AS号和名称
初级使用#
指定返回字段#
只返回特定字段#
# 只返回地理位置信息
curl "http://ip-api.com/json/8.8.8.8?fields=status,country,regionName,city"
# 只返回ISP信息
curl "http://ip-api.com/json/8.8.8.8?fields=isp,org,as"
# 只返回坐标信息
curl "http://ip-api.com/json/8.8.8.8?fields=lat,lon,timezone"返回所有字段#
# 返回所有可用字段
curl "http://ip-api.com/json/8.8.8.8?fields=status,message,country,countryCode,region,regionName,city,zip,lat,lon,timezone,isp,org,as,reverse,mobile,proxy,hosting,query"不同输出格式#
JSON格式(默认)#
# JSON格式输出
curl http://ip-api.com/json/8.8.8.8XML格式#
# XML格式输出
curl http://ip-api.com/xml/8.8.8.8
# 输出示例
<?xml version="1.0" encoding="UTF-8"?>
<query>
<status>success</status>
<country>United States</country>
<countryCode>US</countryCode>
<region>CA</region>
<regionName>California</regionName>
<city>Mountain View</city>
<zip>94043</zip>
<lat>37.4223</lat>
<lon>-122.085</lon>
<timezone>America/Los_Angeles</timezone>
<isp>Google LLC</isp>
<org>Google Public DNS</org>
<as>AS15169 Google LLC</as>
<query>8.8.8.8</query>
</query>CSV格式#
# CSV格式输出
curl http://ip-api.com/csv/8.8.8.8
# 输出示例
success,United States,US,CA,California,Mountain View,94043,37.4223,-122.085,America/Los_Angeles,Google LLC,Google Public DNS,AS15169 Google LLC,8.8.8.8纯文本格式#
# 纯文本格式输出
curl http://ip-api.com/line/8.8.8.8
# 输出示例
8.8.8.8
United States
California
Mountain View
37.4223,-122.085中级使用#
批量查询#
使用脚本批量查询#
#!/bin/bash
# 批量IP查询脚本
IP_FILE="ip_list.txt"
OUTPUT_FILE="ip_info.json"
echo "[" > "$OUTPUT_FILE"
first=true
while read ip; do
if [ "$first" = true ]; then
first=false
else
echo "," >> "$OUTPUT_FILE"
fi
curl -s "http://ip-api.com/json/$ip" >> "$OUTPUT_FILE"
done < "$IP_FILE"
echo "]" >> "$OUTPUT_FILE"
echo "批量查询完成,结果已保存到 $OUTPUT_FILE"使用Python批量查询#
#!/usr/bin/env python3
import requests
import json
ip_list = ['8.8.8.8', '1.1.1.1', '208.67.222.222']
results = []
for ip in ip_list:
response = requests.get(f'http://ip-api.com/json/{ip}')
data = response.json()
results.append(data)
# 保存结果
with open('ip_info.json', 'w') as f:
json.dump(results, f, indent=2)
print("批量查询完成")错误处理#
检查查询状态#
#!/bin/bash
# 带错误处理的IP查询脚本
IP=$1
RESULT=$(curl -s "http://ip-api.com/json/$IP")
STATUS=$(echo "$RESULT" | jq -r '.status')
if [ "$STATUS" = "success" ]; then
echo "查询成功:"
echo "$RESULT" | jq '.'
else
MESSAGE=$(echo "$RESULT" | jq -r '.message')
echo "查询失败: $MESSAGE"
fi处理无效IP#
#!/bin/bash
# 处理无效IP地址
IP=$1
RESULT=$(curl -s "http://ip-api.com/json/$IP")
STATUS=$(echo "$RESULT" | jq -r '.status')
if [ "$STATUS" = "fail" ]; then
echo "无效的IP地址或查询失败"
exit 1
fi
echo "IP: $IP"
echo "国家: $(echo "$RESULT" | jq -r '.country')"
echo "城市: $(echo "$RESULT" | jq -r '.city')"
echo "ISP: $(echo "$RESULT" | jq -r '.isp')"性能优化#
并发查询#
#!/bin/bash
# 并发查询多个IP
IP_LIST=("8.8.8.8" "1.1.1.1" "208.67.222.222" "9.9.9.9" "64.6.64.6")
for ip in "${IP_LIST[@]}"; do
{
result=$(curl -s "http://ip-api.com/json/$ip")
echo "$ip: $(echo "$result" | jq -r '.country')"
} &
done
wait
echo "所有查询完成"使用缓存#
#!/bin/bash
# 使用缓存减少重复查询
CACHE_DIR="ip_cache"
mkdir -p "$CACHE_DIR"
query_ip() {
local ip=$1
local cache_file="$CACHE_DIR/${ip}.json"
if [ -f "$cache_file" ]; then
cat "$cache_file"
else
local result=$(curl -s "http://ip-api.com/json/$ip")
echo "$result" > "$cache_file"
echo "$result"
fi
}
# 使用缓存查询
query_ip "8.8.8.8" | jq '.'中上级使用#
高级字段查询#
查询反向DNS#
# 查询反向DNS信息
curl "http://ip-api.com/json/8.8.8.8?fields=status,reverse"
# 输出示例
{
"status": "success",
"reverse": "dns.google"
}查询移动网络信息#
# 查询是否为移动网络
curl "http://ip-api.com/json/8.8.8.8?fields=status,mobile"
# 输出示例
{
"status": "success",
"mobile": false
}查询代理/托管信息(付费版)#
# 查询代理信息(需要付费API密钥)
curl "http://ip-api.com/json/8.8.8.8?fields=status,proxy,hosting&key=your_api_key"
# 输出示例
{
"status": "success",
"proxy": false,
"hosting": false
}数据处理#
提取特定信息#
#!/bin/bash
# 提取IP的特定信息
IP=$1
RESULT=$(curl -s "http://ip-api.com/json/$IP")
COUNTRY=$(echo "$RESULT" | jq -r '.country')
CITY=$(echo "$RESULT" | jq -r '.city')
ISP=$(echo "$RESULT" | jq -r '.isp')
LAT=$(echo "$RESULT" | jq -r '.lat')
LON=$(echo "$RESULT" | jq -r '.lon')
echo "IP地址: $IP"
echo "国家: $COUNTRY"
echo "城市: $CITY"
echo "ISP: $ISP"
echo "坐标: $LAT, $LON"格式化输出#
#!/bin/bash
# 格式化输出IP信息
IP=$1
RESULT=$(curl -s "http://ip-api.com/json/$IP")
echo "================================"
echo "IP地址信息"
echo "================================"
echo "IP地址: $(echo "$RESULT" | jq -r '.query')"
echo "国家: $(echo "$RESULT" | jq -r '.country')"
echo "地区: $(echo "$RESULT" | jq -r '.regionName')"
echo "城市: $(echo "$RESULT" | jq -r '.city')"
echo "邮编: $(echo "$RESULT" | jq -r '.zip')"
echo "坐标: $(echo "$RESULT" | jq -r '.lat'), $(echo "$RESULT" | jq -r '.lon')"
echo "时区: $(echo "$RESULT" | jq -r '.timezone')"
echo "ISP: $(echo "$RESULT" | jq -r '.isp')"
echo "组织: $(echo "$RESULT" | jq -r '.org')"
echo "ASN: $(echo "$RESULT" | jq -r '.as')"
echo "================================"集成到其他工具#
与Nmap集成#
#!/bin/bash
# 结合Nmap和IP-API
TARGET=$1
# 使用Nmap扫描主机
nmap -sn "$TARGET" | grep "Nmap scan report" | awk '{print $5}' > hosts.txt
# 查询每个主机的IP信息
while read ip; do
echo "=== $ip ==="
curl -s "http://ip-api.com/json/$ip" | jq -r '.country, .city, .isp'
echo ""
done < hosts.txt与日志分析集成#
#!/bin/bash
# 分析日志文件中的IP
LOG_FILE="/var/log/nginx/access.log"
OUTPUT_FILE="log_ip_analysis.txt"
echo "=== 日志IP分析 ===" > "$OUTPUT_FILE"
# 提取唯一IP
awk '{print $1}' "$LOG_FILE" | sort -u > unique_ips.txt
# 查询每个IP的信息
while read ip; do
result=$(curl -s "http://ip-api.com/json/$ip")
country=$(echo "$result" | jq -r '.country')
city=$(echo "$result" | jq -r '.city')
echo "$ip - $country, $city" >> "$OUTPUT_FILE"
done < unique_ips.txt
echo "分析完成,结果已保存到 $OUTPUT_FILE"高级使用#
地理位置分析#
按国家统计#
#!/bin/bash
# 按国家统计IP分布
IP_FILE="ip_list.txt"
OUTPUT_FILE="country_stats.txt"
# 统计每个国家的IP数量
declare -A country_count
while read ip; do
result=$(curl -s "http://ip-api.com/json/$ip")
country=$(echo "$result" | jq -r '.country')
country_count["$country"]=$((${country_count["$country"]} + 1))
done < "$IP_FILE"
# 输出统计结果
echo "=== 国家分布统计 ===" > "$OUTPUT_FILE"
for country in "${!country_count[@]}"; do
echo "$country: ${country_count[$country]}" >> "$OUTPUT_FILE"
done | sort -t: -k2 -rn >> "$OUTPUT_FILE"
echo "统计完成,结果已保存到 $OUTPUT_FILE"生成地图数据#
#!/bin/bash
# 生成地图可视化数据
IP_FILE="ip_list.txt"
OUTPUT_FILE="map_data.json"
echo "[" > "$OUTPUT_FILE"
first=true
while read ip; do
result=$(curl -s "http://ip-api.com/json/$ip")
lat=$(echo "$result" | jq -r '.lat')
lon=$(echo "$result" | jq -r '.lon')
country=$(echo "$result" | jq -r '.country')
if [ "$first" = true ]; then
first=false
else
echo "," >> "$OUTPUT_FILE"
fi
echo "{\"ip\":\"$ip\",\"lat\":$lat,\"lon\":$lon,\"country\":\"$country\"}" >> "$OUTPUT_FILE"
done < "$IP_FILE"
echo "]" >> "$OUTPUT_FILE"
echo "地图数据已生成"ISP分析#
按ISP统计#
#!/bin/bash
# 按ISP统计IP分布
IP_FILE="ip_list.txt"
OUTPUT_FILE="isp_stats.txt"
# 统计每个ISP的IP数量
declare -A isp_count
while read ip; do
result=$(curl -s "http://ip-api.com/json/$ip")
isp=$(echo "$result" | jq -r '.isp')
isp_count["$isp"]=$((${isp_count["$isp"]} + 1))
done < "$IP_FILE"
# 输出统计结果
echo "=== ISP分布统计 ===" > "$OUTPUT_FILE"
for isp in "${!isp_count[@]}"; do
echo "$isp: ${isp_count[$isp]}" >> "$OUTPUT_FILE"
done | sort -t: -k2 -rn >> "$OUTPUT_FILE"
echo "统计完成,结果已保存到 $OUTPUT_FILE"ASN分析#
#!/bin/bash
# ASN分析脚本
IP_FILE="ip_list.txt"
OUTPUT_FILE="asn_analysis.txt"
echo "=== ASN分析 ===" > "$OUTPUT_FILE"
# 提取唯一ASN
declare -A asn_list
while read ip; do
result=$(curl -s "http://ip-api.com/json/$ip")
as=$(echo "$result" | jq -r '.as')
asn_list["$as"]=1
done < "$IP_FILE"
# 输出ASN列表
echo "发现的ASN:" >> "$OUTPUT_FILE"
for asn in "${!asn_list[@]}"; do
echo "$asn" >> "$OUTPUT_FILE"
done | sort >> "$OUTPUT_FILE"
echo "ASN分析完成,结果已保存到 $OUTPUT_FILE"大师级使用#
自动化监控#
实时IP监控#
#!/bin/bash
# 实时IP监控脚本
LOG_FILE="/var/log/nginx/access.log"
MONITOR_FILE="monitored_ips.txt"
OUTPUT_FILE="monitor_log.txt"
# 监控日志文件的新连接
tail -f "$LOG_FILE" | while read line; do
ip=$(echo "$line" | awk '{print $1}')
# 检查是否已监控
if ! grep -q "$ip" "$MONITOR_FILE" 2>/dev/null; then
echo "$(date): 新IP检测 - $ip" >> "$OUTPUT_FILE"
# 查询IP信息
result=$(curl -s "http://ip-api.com/json/$ip")
country=$(echo "$result" | jq -r '.country')
city=$(echo "$result" | jq -r '.city')
isp=$(echo "$result" | jq -r '.isp')
echo " 国家: $country, 城市: $city, ISP: $isp" >> "$OUTPUT_FILE"
# 添加到监控列表
echo "$ip" >> "$MONITOR_FILE"
fi
done定期IP检查#
#!/bin/bash
# 定期IP检查脚本
IP_FILE="check_ips.txt"
OUTPUT_FILE="check_results.txt"
INTERVAL=3600 # 每小时检查一次
while true; do
echo "$(date): 开始检查" >> "$OUTPUT_FILE"
while read ip; do
result=$(curl -s "http://ip-api.com/json/$ip")
status=$(echo "$result" | jq -r '.status')
if [ "$status" = "success" ]; then
country=$(echo "$result" | jq -r '.country')
echo "$ip: $country" >> "$OUTPUT_FILE"
else
echo "$ip: 查询失败" >> "$OUTPUT_FILE"
fi
done < "$IP_FILE"
echo "$(date): 检查完成" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
sleep "$INTERVAL"
done数据库集成#
存储到SQLite#
#!/bin/bash
# 将IP信息存储到SQLite数据库
DB_FILE="ip_info.db"
IP_FILE="ip_list.txt"
# 创建数据库表
sqlite3 "$DB_FILE" "CREATE TABLE IF NOT EXISTS ip_info (
id INTEGER PRIMARY KEY AUTOINCREMENT,
ip TEXT UNIQUE,
country TEXT,
region TEXT,
city TEXT,
zip TEXT,
lat REAL,
lon REAL,
timezone TEXT,
isp TEXT,
org TEXT,
as_info TEXT,
query_time DATETIME DEFAULT CURRENT_TIMESTAMP
);"
# 查询并存储IP信息
while read ip; do
result=$(curl -s "http://ip-api.com/json/$ip")
status=$(echo "$result" | jq -r '.status')
if [ "$status" = "success" ]; then
country=$(echo "$result" | jq -r '.country')
region=$(echo "$result" | jq -r '.regionName')
city=$(echo "$result" | jq -r '.city')
zip=$(echo "$result" | jq -r '.zip')
lat=$(echo "$result" | jq -r '.lat')
lon=$(echo "$result" | jq -r '.lon')
timezone=$(echo "$result" | jq -r '.timezone')
isp=$(echo "$result" | jq -r '.isp')
org=$(echo "$result" | jq -r '.org')
as_info=$(echo "$result" | jq -r '.as')
sqlite3 "$DB_FILE" "INSERT OR REPLACE INTO ip_info
(ip, country, region, city, zip, lat, lon, timezone, isp, org, as_info)
VALUES ('$ip', '$country', '$region', '$city', '$zip', $lat, $lon, '$timezone', '$isp', '$org', '$as_info');"
fi
done < "$IP_FILE"
echo "IP信息已存储到数据库 $DB_FILE"查询数据库#
#!/bin/bash
# 查询SQLite数据库
DB_FILE="ip_info.db"
# 查询所有IP信息
echo "=== 所有IP信息 ==="
sqlite3 "$DB_FILE" "SELECT ip, country, city, isp FROM ip_info;"
# 按国家统计
echo ""
echo "=== 按国家统计 ==="
sqlite3 "$DB_FILE" "SELECT country, COUNT(*) as count FROM ip_info GROUP BY country ORDER BY count DESC;"
# 查询特定国家的IP
echo ""
echo "=== 美国IP ==="
sqlite3 "$DB_FILE" "SELECT * FROM ip_info WHERE country='United States';"实战案例#
案例1: 网站访问者分析#
场景描述#
分析网站访问日志,了解访问者的地理分布和ISP信息。
实施步骤#
#!/bin/bash
# 网站访问者分析脚本
ACCESS_LOG="/var/log/nginx/access.log"
OUTPUT_DIR="visitor_analysis"
mkdir -p "$OUTPUT_DIR"
# 提取唯一IP
awk '{print $1}' "$ACCESS_LOG" | sort -u > "$OUTPUT_DIR/unique_ips.txt"
# 按国家统计
echo "=== 按国家统计 ===" > "$OUTPUT_DIR/by_country.txt"
declare -A country_count
while read ip; do
result=$(curl -s "http://ip-api.com/json/$ip")
country=$(echo "$result" | jq -r '.country')
country_count["$country"]=$((${country_count["$country"]} + 1))
done < "$OUTPUT_DIR/unique_ips.txt"
for country in "${!country_count[@]}"; do
echo "$country: ${country_count[$country]}" >> "$OUTPUT_DIR/by_country.txt"
done | sort -t: -k2 -rn >> "$OUTPUT_DIR/by_country.txt"
# 按城市统计
echo "=== 按城市统计 ===" > "$OUTPUT_DIR/by_city.txt"
declare -A city_count
while read ip; do
result=$(curl -s "http://ip-api.com/json/$ip")
city=$(echo "$result" | jq -r '.city')
city_count["$city"]=$((${city_count["$city"]} + 1))
done < "$OUTPUT_DIR/unique_ips.txt"
for city in "${!city_count[@]}"; do
echo "$city: ${city_count[$city]}" >> "$OUTPUT_DIR/by_city.txt"
done | sort -t: -k2 -rn | head -20 >> "$OUTPUT_DIR/by_city.txt"
# 按ISP统计
echo "=== 按ISP统计 ===" > "$OUTPUT_DIR/by_isp.txt"
declare -A isp_count
while read ip; do
result=$(curl -s "http://ip-api.com/json/$ip")
isp=$(echo "$result" | jq -r '.isp')
isp_count["$isp"]=$((${isp_count["$isp"]} + 1))
done < "$OUTPUT_DIR/unique_ips.txt"
for isp in "${!isp_count[@]}"; do
echo "$isp: ${isp_count[$isp]}" >> "$OUTPUT_DIR/by_isp.txt"
done | sort -t: -k2 -rn | head -20 >> "$OUTPUT_DIR/by_isp.txt"
echo "访问者分析完成,结果保存在 $OUTPUT_DIR 目录"案例2: 异常流量检测#
场景描述#
检测异常流量来源,识别来自特定地区或ISP的可疑访问。
实施步骤#
#!/bin/bash
# 异常流量检测脚本
ACCESS_LOG="/var/log/nginx/access.log"
THRESHOLD=100
OUTPUT_FILE="anomaly_detection.txt"
echo "=== 异常流量检测报告 ===" > "$OUTPUT_FILE"
echo "检测时间: $(date)" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
# 统计高频IP
echo "=== 高频访问IP ===" >> "$OUTPUT_FILE"
awk '{print $1}' "$ACCESS_LOG" | sort | uniq -c | sort -rn | head -20 >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
# 分析高频IP的地理位置
echo "=== 高频IP地理分析 ===" >> "$OUTPUT_FILE"
awk '{print $1}' "$ACCESS_LOG" | sort | uniq -c | sort -rn | head -20 | awk '{print $2}' > high_freq_ips.txt
while read ip; do
result=$(curl -s "http://ip-api.com/json/$ip")
country=$(echo "$result" | jq -r '.country')
city=$(echo "$result" | jq -r '.city')
isp=$(echo "$result" | jq -r '.isp')
count=$(grep -c "$ip" "$ACCESS_LOG")
echo "IP: $ip" >> "$OUTPUT_FILE"
echo "访问次数: $count" >> "$OUTPUT_FILE"
echo "位置: $country, $city" >> "$OUTPUT_FILE"
echo "ISP: $isp" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
done < high_freq_ips.txt
# 检测来自特定国家的异常访问
echo "=== 特定国家访问统计 ===" >> "$OUTPUT_FILE"
declare -A country_count
while read ip; do
result=$(curl -s "http://ip-api.com/json/$ip")
country=$(echo "$result" | jq -r '.country')
country_count["$country"]=$((${country_count["$country"]} + 1))
done < high_freq_ips.txt
for country in "${!country_count[@]}"; do
echo "$country: ${country_count[$country]}" >> "$OUTPUT_FILE"
done | sort -t: -k2 -rn >> "$OUTPUT_FILE"
echo "异常流量检测完成,报告已保存到 $OUTPUT_FILE"案例3: IP白名单管理#
场景描述#
基于地理位置和ISP信息,自动生成和管理IP白名单。
实施步骤#
#!/bin/bash
# IP白名单管理脚本
WHITELIST_FILE="whitelist.txt"
IP_FILE="ip_list.txt"
OUTPUT_FILE="whitelist_report.txt"
# 定义允许的国家和ISP
ALLOWED_COUNTRIES=("United States" "Canada" "United Kingdom" "Germany")
ALLOWED_ISPS=("Google LLC" "Microsoft Corporation" "Amazon.com")
echo "=== IP白名单检查报告 ===" > "$OUTPUT_FILE"
echo "检查时间: $(date)" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
# 检查每个IP
while read ip; do
result=$(curl -s "http://ip-api.com/json/$ip")
country=$(echo "$result" | jq -r '.country')
isp=$(echo "$result" | jq -r '.isp')
# 检查是否在白名单中
allowed=false
for allowed_country in "${ALLOWED_COUNTRIES[@]}"; do
if [ "$country" = "$allowed_country" ]; then
allowed=true
break
fi
done
for allowed_isp in "${ALLOWED_ISPS[@]}"; do
if [ "$isp" = "$allowed_isp" ]; then
allowed=true
break
fi
done
if [ "$allowed" = true ]; then
echo "$ip" >> "$WHITELIST_FILE"
echo "IP: $ip - 允许 (国家: $country, ISP: $isp)" >> "$OUTPUT_FILE"
else
echo "IP: $ip - 拒绝 (国家: $country, ISP: $isp)" >> "$OUTPUT_FILE"
fi
done < "$IP_FILE"
echo "" >> "$OUTPUT_FILE"
echo "白名单已更新,允许的IP已保存到 $WHITELIST_FILE"总结#
IP-API是一款简单易用的IP地址信息查询服务,无需API密钥即可使用,适合快速查询和批量处理。
核心优势#
- 免费使用: 无需API密钥,免费查询
- 简单易用: RESTful API,支持多种输出格式
- 响应快速: 查询响应速度快
- 多格式支持: 支持JSON、XML、CSV、纯文本格式
- 字段灵活: 可指定返回特定字段
应用场景#
- 快速IP信息查询
- 网站访问者分析
- 异常流量检测
- 地理位置分析
- 日志分析
- IP白名单管理
最佳实践#
- 请求限制: 免费版有请求频率限制,合理控制查询频率
- 错误处理: 始终检查查询状态,处理错误情况
- 缓存机制: 使用缓存减少重复查询
- 批量处理: 使用脚本或程序进行批量查询
- 数据验证: 对查询结果进行验证,确保准确性
限制说明#
- 免费版:每分钟45次请求,不支持HTTPS
- 付费版:更高的请求限制,支持HTTPS和高级字段
- 不支持代理/VPN检测(付费版支持)
通过掌握IP-API的使用方法,可以快速获取IP地址的详细信息,为网络安全分析和系统管理提供有力支持。