[性能测试]免费IP归属地查询接口汇总
Song •
2247 次浏览 •
0个评论 •
2019年07月22日
目前做一个项目,需要判断是国内还是国外IP,具体要求为接口稳定,速度快,免费,不异常
。所以我整理了优质的接口供大家筛选。
一、淘宝API接口
http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]
在ip
参数中添加你要查询的ip
,返回数据为json
格式。包括国家地区运营商等数据。
{"code":0,"data":{"ip":"221.218.209.125","country":"中国","area":"","region":"北京","city":"北京","county":"XX","isp":"联通","country_id":"CN","area_id":"","region_id":"110000","city_id":"110100","county_id":"xx","isp_id":"100026"}}
测评结果:
查询到: 110 未查询到: 0 报错: 890 执行时间 314.29S
二、ip-api接口
可以调用http://ip-api.com/json/
接口查询域名,默认为当前请求的IP
。
# 国际化英文显示
http://ip-api.com/json/
# 修改语言编码
http://ip-api.com/json/?lang=zh-CN
# 修改IP信息
http://ip-api.com/json/115.191.200.34?lang=zh-CN
返回数据为json
格式。包括国家地区运营商等数据。
{"as":"AS6106 University of California, Riverside","city":"里弗赛德","country":"美国","countryCode":"US","isp":"University of California, Riverside","lat":33.9473,"lon":-117.4008,"org":"University of California, Riverside","query":"169.235.24.133","region":"CA","regionName":"加利福尼亚州","status":"success","timezone":"America/Los_Angeles","zip":"92521"}
测评结果:
三、搜狐IP地址查询
http://pv.sohu.com/cityjson
# 设置编码
http://pv.sohu.com/cityjson?ie=utf-8
当前只能查到区域信息,数据划分不是很明确:
var returnCitySN = {"cip": "221.218.209.125", "cid": "110108", "cname": "北京市海淀区"};
四、太平洋IP地址查询
太平洋IP地址库API接口为:
http://whois.pconline.com.cn/ipJson.jsp?ip=xxx.xxx.xxx.xxx&json=true
查询到数据如下:
{"ip":"221.218.209.125","pro":"北京市","proCode":"110000","city":"北京市","cityCode":"110000","region":"海淀区","regionCode":"110108","addr":"北京市海淀区 联通ADSL","regionNames":"","err":""}
太平洋IP查询的更多接入方式查看http://whois.pconline.com.cn/
测试结果:
查询到: 1000 未查询到: 0 报错: 0 执行时间 68.51S
测试结果
国内使用,
- TOP1 太平洋IP为最优选择,国内准确率高,同时可以判断出国家
- TOP2 淘宝API可用于国内查询,国外经常报错,速度不是太快
- TOP3 ip-api接口,精确度高,但是速度不稳定,如果你对查询精度要求高,可以使用这个接口。
- TOP4 搜狐IP没法测试
测试代码:
import requests
import random
import json
import time
i = 0
has = 0
nohas = 0
error = 0
start = time.time()
while i < 1000:
i += 1
ip = "115."+str(random.randint(1,199))+"."+str(random.randint(1,199))+"."+str(random.randint(1,199))
try:
response = requests.get(url="http://ip.taobao.com/service/getIpInfo.php",params={"ip":ip})
texts = response.text
infos = json.loads(texts)
print(infos)
country = infos["data"]["country"]
if country:
has += 1
else:
nohas += 1
except:
error += 1
end = time.time()
execution_time = end-start
print("查询到:",has,"未查询到:",nohas,"报错:",error,"执行时间",execution_time)
用户评论
当前暂无评价,快来发表您的观点吧...
更多相关好文
当前暂无更多相关好文推荐...
-
laravel中distinct()的使用方法与去重 2017-09-11
-
Laravel将view缓存为静态html,laravel页面静态缓存 2021-10-09
-
[ laravel爬虫实战--基础篇 ] guzzle描述与安装 2017-11-01
-
[ 配置教程 ] 在ubuntu16.04中部署LNMP环境(php7+maridb且开启maridb远程以及nginx多域名访问 )并配置laravel环境 2017-07-18
-
花生壳绑定ubuntu服务器? 2024-08-23
热门文章
-
花生壳绑定ubuntu服务器? 2024-08-23
-
Laravel模型更新全表如何实现? 2024-03-11
-
php图片转为二进制数据的方法 2023-10-23
-
Jquery如何监听动态创建元素的点击事件? 2023-09-08
-
所以SheetJS实现table导出数据为Excel 2023-09-05
提交评论