有的时候,我们有IP到地理位置、组织名、AS号、域名反向解析的需求,这些IP属性信息对于网络测量统计很有帮助。
如下是本人在日常科研中遇到的免费、可用api.
1. ip-api:
方法:
url: http://ip-api.com/batch
方法:POST
Header:
Content-Type:application/json
Host: ip-api.com
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.2.0
Post Data:
格式,自己依葫芦画瓢
[{"query":"37.120.210.178","lang":"zh"},{"query":"5.181.235.14","lang":"zh"},{"query":"91.207.174.26","lang":"zh"},{"query":"37.120.154.37","lang":"zh"},{"query":"5.181.235.142","lang":"zh"}]
响应:
[
{
"status": "success",
"country": "Japan",
"countryCode": "JP",
"region": "13",
"regionName": "Tokyo",
"city": "Higashishinagawa",
"zip": "140-0002",
"lat": 35.6191,
"lon": 139.751,
"timezone": "Asia/Tokyo",
"isp": "M247",
"org": "M247 Ltd",
"as": "AS9009 M247",
"query": "37.120.210.178"
},
{
"status": "success",
"country": "Japan",
"countryCode": "JP",
"region": "13",
"regionName": "Tokyo",
"city": "Higashishinagawa",
"zip": "140-0002",
"lat": 35.6191,
"lon": 139.751,
"timezone": "Asia/Tokyo",
"isp": "M247",
"org": "M247 LTD",
"as": "AS9009 M247",
"query": "5.181.235.14"
},
{
"status": "success",
"country": "Japan",
"countryCode": "JP",
"region": "23",
"regionName": "Aichi",
"city": "Nagoya",
"zip": "461-0019",
"lat": 35.1815,
"lon": 136.906,
"timezone": "Asia/Tokyo",
"isp": "M247",
"org": "M247 Ltd",
"as": "AS9009 M247",
"query": "91.207.174.26"
},
{
"status": "success",
"country": "Japan",
"countryCode": "JP",
"region": "13",
"regionName": "Tokyo",
"city": "Higashishinagawa",
"zip": "140-0002",
"lat": 35.6191,
"lon": 139.751,
"timezone": "Asia/Tokyo",
"isp": "M247",
"org": "M247 Ltd",
"as": "AS9009 M247",
"query": "37.120.154.37"
},
{
"status": "success",
"country": "Japan",
"countryCode": "JP",
"region": "13",
"regionName": "Tokyo",
"city": "Higashishinagawa",
"zip": "140-0002",
"lat": 35.6191,
"lon": 139.751,
"timezone": "Asia/Tokyo",
"isp": "M247",
"org": "M247 LTD",
"as": "AS9009 M247",
"query": "5.181.235.142"
}
]
响应有AS号,有时区,经纬度,还有组织名,ISP名。
2. ipinfo官网的接口
https://ipinfo.io/ 给的IP属性信息可以说是相当的详细了。
接口文档:https://github.com/ipinfo/python
这个接口需要使用用户名和token,每个token每个月有5w次免费查询。可喜的是,我们可以使用一些免费邮箱(比如protonmail.com)注册大量的用户来薅羊毛,50个用户就有250w次免费查询了,这个量还是可以的。
例子:
这可以说是相当的详细了,里面有IP所属公司的名字、域名、AS号、经纬度、国家、城市、所在网段等等,这个是最权威的IP属性了。
{'abuse': {'address': 'US, CA, Mountain View, 1600 Amphitheatre Parkway, 94043',
'country': 'US',
'email': 'network-abuse@google.com',
'name': 'Abuse',
'network': '216.239.32.0/19',
'phone': '+1-650-253-0000'},
'asn': {'asn': 'AS15169',
'domain': 'google.com',
'name': 'Google LLC',
'route': '216.239.36.0/24',
'type': 'business'},
'city': 'Mountain View',
'company': {'domain': 'google.com', 'name': 'Google LLC', 'type': 'business'},
'country': 'US',
'country_name': 'United States',
'hosting': {'host': 'google',
'id': 'GOOGLE',
'name': 'Google LLC',
'network': '216.239.32.0/19'},
'hostname': 'any-in-2415.1e100.net',
'ip': '216.239.36.21',
'latitude': '37.3861',
'loc': '37.3861,-122.0840',
'longitude': '-122.0840',
'postal': '94035',
'region': 'California',
'timezone': 'America/Los_Angeles'}
分享一个可用的token:
token | info |
---|---|
009f38eca7a93e | protonmail.com |
3.ipgeo接口
URL:https://ipgeo.ipvanish.com/v2?apikey=2be8ad421fbf11e4925c87fe8e914288&ip=114.114.114.114
方法:GET
把后面的ip参数改了就可以了,这个返回结果不是很详细。
结果示例:
{“ip”:“114.114.114.114”,“location”:{“latitude”:34.7725,“longitude”:113.7266,“country_code”:“CN”,“country”:“China”,“city”:"",“region”:"",“region_code”:""}}
4.ipAPI
使用方法:
GET https://api.ipapi.com/api/{ip_address}?access_key=28b0031cdfe24f14ba13fd1cb9e4b4bc
把ip地址改成自己想查询的就可以了。
比如说:
GET https://api.ipapi.com/api/39.79.50.20?access_key=28b0031cdfe24f14ba13fd1cb9e4b4bc
响应:
{
"ip": "39.79.50.20",
"type": "ipv4",
"continent_code": "AS",
"continent_name": "Asia",
"country_code": "CN",
"country_name": "China",
"region_code": "SD",
"region_name": "Shandong",
"city": "Hekou Qu",
"zip": "257200",
"latitude": 37.885101318359375,
"longitude": 118.52572631835938,
"location": {
"geoname_id": null,
"capital": "Beijing",
"languages": [
{
"code": "zh",
"name": "Chinese",
"native": "中文"
}
],
"country_flag": "https://assets.ipapi.com/flags/cn.svg",
"country_flag_emoji": "🇨🇳",
"country_flag_emoji_unicode": "U+1F1E8 U+1F1F3",
"calling_code": "86",
"is_eu": false
},
"time_zone": {
"id": "Asia/Shanghai",
"current_time": "2020-04-26T14:41:55+08:00",
"gmt_offset": 28800,
"code": "CST",
"is_daylight_saving": false
},
"currency": {
"code": "CNY",
"name": "Chinese Yuan",
"plural": "Chinese yuan",
"symbol": "CN¥",
"symbol_native": "CN¥"
},
"connection": {
"asn": 4837,
"isp": "China Unicom china169 Backbone"
}
}
这玩意的地理位置精度特别高,同时也会提供AS域,isp的有关信息。