1、ip-api,部分数据不准确,但不限请求次数,且可批量json请求,返回数据可选:json、xml、csv,推荐
请求接口 | 请求方式 | 响应 |
---|---|---|
http://ip-api.com/json/24.48.0.1 | HTTP GET | 如下 |
{
"query": "24.48.0.1",
"status": "success",
"country": "Canada",
"countryCode": "CA",
"region": "QC",
"regionName": "Quebec",
"city": "Saint-Leonard",
"zip": "H1R",
"lat": 45.5833,
"lon": -73.6,
"timezone": "America/Toronto",
"isp": "Le Groupe Videotron Ltee",
"org": "Videotron Ltee",
"as": "AS5769 Videotron Telecom Ltee"
}
此时返回的是英文格式,可以加个参数,使其返回为中文:
请求接口 | 请求方式 | 响应 |
---|---|---|
http://ip-api.com/json/117.188.180.63?lang=zh-CN | HTTP GET | 如下 |
{
"query": "117.188.180.63",
"status": "success",
"country": "中国",
"countryCode": "CN",
"region": "GD",
"regionName": "广东",
"city": "广州",
"zip": "",
"lat": 23.1292,
"lon": 113.264,
"timezone": "Asia/Shanghai",
"isp": "China Mobile communications corporation",
"org": "China Mobile",
"as": "AS9808 China Mobile"
}
2、IPIP
https://www.ipip.net/product/client.html
提供数据库和api两种请求方式
API请求格式:
限制:限速每天1000次,限速为单 IP 每秒最多 5 次请求
请求接口 | 请求方式 | 响应 |
---|---|---|
http://freeapi.ipip.net/118.28.8.8 | HTTP GET | 如下 |
[
"中国",
"广西",
"桂林",
"",
"移动"
]
数据库请求格式:
先安装依赖模块
#python版本>3.3
pip install ipip-ipdb
#python版本为2.x,或者<3.3版本
pip install ipaddress
import ipdb
#链接库
db = ipdb.BaseStation("/path/to/base_station.ipdb")
#库表中的所有字段
print(db.fields())
#根据IP请求具体信息,返回字典
print(db.find_map("117.136.83.55", "CN"))
返回数据信息:
{'country_name': '中国', 'region_name': '福建', 'city_name': '福州'}
3、138网站
http://user.ip138.com/ip/
首次注册后赠送1000次请求,API接口请求格式如下,必须要有token值
#!/usr/bin/python
# -*- coding: utf-8 -*-
import httplib2
from urllib.parse import urlencode #python3
#from urllib import urlencode #python2
params = urlencode({'ip':'9.8.8.8','datatype':'jsonp','callback':'find'})
url = 'http://api.ip138.com/query/?'+params
headers = {"token":"8594766483a2d65d76804906dd1a1c6a"}#token为示例
http = httplib2.Http()
response, content = http.request(url,'GET',headers=headers)
print(content.decode("utf-8"))
响应格式:
{
"ret": "ok", // ret 值为 ok 时 返回 data 数据 为err时返回msg数据
"ip": "117.25.13.123", // ip
"data": [
"中国", // 国家
"福建", // 省会或直辖市
"福州", // 地区或城市
"电信", // 运营商
"361000", // 邮政编码(暂不提供)
"0592" // 地区区号(暂不提供)
]
}
还有另一种方法,通过爬虫筛选页面内容获取IP信息
http://www.ip138.com/ips138.asp?ip=124.127.205.82&action=2
通过拼接上面的连接,获取到页面想要的内容,试过没有限制
4、聚合数据
https://www.juhe.cn/docs/api/id/1
注册后每天免费获取次数为500次,请求参数中必须带入key值
请求接口 | 请求方式 | 响应 |
---|---|---|
http://apis.juhe.cn/ip/ipNew?ip=112.112.11.11&key= | HTTP GET | 如下 |
{
"resultcode": "200",
"reason": "查询成功",
"result": {
"Country": "中国",
"Province": "江苏省",
"City": "无锡市",
"Isp": "电信"
},
"error_code": 0
}