2024-01-25 09:38:08 +08:00
|
|
|
|
# analyzeutl 是分析器工具集合
|
|
|
|
|
|
import awdb
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 过滤所有空值
|
|
|
|
|
|
def filterNull(s):
|
|
|
|
|
|
if s == "":
|
|
|
|
|
|
return "UnKnown"
|
|
|
|
|
|
return s
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def IP46(IP: str):
|
|
|
|
|
|
if ':' in IP:
|
|
|
|
|
|
return "v6"
|
|
|
|
|
|
if '.' in IP:
|
|
|
|
|
|
return "v4"
|
|
|
|
|
|
return "Unknown"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
path_ip4app = "./data/IP_scene_all_cn.awdb"
|
|
|
|
|
|
path_ip6 = "./data/IP_city_single_BD09_WGS84_ipv6.awdb"
|
2024-05-27 10:39:10 +08:00
|
|
|
|
path_ip6_en = "./data/IP_city_single_BD09_WGS84_ipv6_en.awdb"
|
2024-01-25 09:38:08 +08:00
|
|
|
|
path_ip4qvxian = "./data/IP_basic_single_WGS84.awdb"
|
2024-05-27 10:39:10 +08:00
|
|
|
|
path_ip4qvxian_en = "./data/IP_basic_single_WGS84_en.awdb"
|
2024-01-25 09:38:08 +08:00
|
|
|
|
|
|
|
|
|
|
# 实例化数据读取器
|
|
|
|
|
|
def makereader(arg=0):
|
|
|
|
|
|
# 默认加载所有离线数据
|
|
|
|
|
|
dloader_ip4app = awdb.open_database(path_ip4app)
|
|
|
|
|
|
dloader_ip6 = awdb.open_database(path_ip6)
|
2024-05-27 10:39:10 +08:00
|
|
|
|
dloader_ip6en = awdb.open_database(path_ip6_en)
|
2024-01-25 09:38:08 +08:00
|
|
|
|
dloader_ip4qx = awdb.open_database(path_ip4qvxian)
|
2024-05-27 10:39:10 +08:00
|
|
|
|
dloader_ip4qxen = awdb.open_database(path_ip4qvxian)
|
|
|
|
|
|
return dloader_ip4app, dloader_ip4qx, dloader_ip6,dloader_ip4qxen,dloader_ip6en
|
2024-01-25 09:38:08 +08:00
|
|
|
|
|
|
|
|
|
|
|
2024-05-27 10:39:10 +08:00
|
|
|
|
reader_ip4app, reader_ip4qx, reader_ip6,reader_ip4qxen,reader_ip6en = makereader()
|
2024-01-25 09:38:08 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 返回IP离线库中与ip相关的记录,记录中不包含应用场景
|
2024-05-27 10:39:10 +08:00
|
|
|
|
def getrecord(ip,lang="ch"):
|
2024-01-25 09:38:08 +08:00
|
|
|
|
if (IP46(ip) == "v4"):
|
2024-05-27 10:39:10 +08:00
|
|
|
|
return IP4_info(ip,lang)
|
2024-01-25 09:38:08 +08:00
|
|
|
|
elif (IP46(ip) == "v6"):
|
2024-05-27 10:39:10 +08:00
|
|
|
|
return IP6_info(ip,lang)
|
2024-01-25 09:38:08 +08:00
|
|
|
|
else:
|
|
|
|
|
|
print("地址存在问题")
|
|
|
|
|
|
print(ip)
|
|
|
|
|
|
return 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 返回IPv4记录
|
2024-05-27 10:39:10 +08:00
|
|
|
|
def IP4_info(ip,lang="ch"):
|
|
|
|
|
|
if lang=="ch":
|
|
|
|
|
|
(record, prefix_len) = reader_ip4qx.get_with_prefix_len(ip)
|
|
|
|
|
|
else:
|
|
|
|
|
|
(record, prefix_len) = reader_ip4qxen.get_with_prefix_len(ip)
|
2024-01-25 09:38:08 +08:00
|
|
|
|
return record
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 返回IPv6记录
|
2024-05-27 10:39:10 +08:00
|
|
|
|
def IP6_info(ip,lang="ch"):
|
|
|
|
|
|
if lang=="ch":
|
|
|
|
|
|
(record, prefix_len) = reader_ip6.get_with_prefix_len(ip)
|
|
|
|
|
|
else:
|
|
|
|
|
|
(record, prefix_len) = reader_ip6en.get_with_prefix_len(ip)
|
2024-01-25 09:38:08 +08:00
|
|
|
|
return record
|