1.优化ip2region地址查询

2.增加ISP字段
3.移除ip2location地址查询
This commit is contained in:
Jing Ling
2020-08-23 17:13:13 +08:00
parent 119eef93d7
commit d2c0d467ea
6 changed files with 25 additions and 42 deletions
+7 -7
View File
@@ -78,8 +78,8 @@ class Database(object):
f'cidr text,' f'cidr text,'
f'asn text,' f'asn text,'
f'org text,' f'org text,'
f'ip2region text,' f'addr text,'
f'ip2location text,' f'isp text,'
f'resolver text,' f'resolver text,'
f'module text,' f'module text,'
f'source text,' f'source text,'
@@ -103,13 +103,13 @@ class Database(object):
f'insert into "{table_name}" ' f'insert into "{table_name}" '
f'(id, alive, resolve, request, new, url, subdomain, port, level,' f'(id, alive, resolve, request, new, url, subdomain, port, level,'
f'cname, content, public, cdn, status, reason, title, banner, header,' f'cname, content, public, cdn, status, reason, title, banner, header,'
f'history, response, times, ttl, cidr, asn, org, ip2region,' f'history, response, times, ttl, cidr, asn, org, addr, isp, resolver,'
f'ip2location, resolver, module, source, elapse, find) ' f'module, source, elapse, find) '
f'values (:id, :alive, :resolve, :request, :new, :url,' f'values (:id, :alive, :resolve, :request, :new, :url,'
f':subdomain, :port, :level, :cname, :content, :public, :cdn,' f':subdomain, :port, :level, :cname, :content, :public, :cdn,'
f':status, :reason, :title, :banner, :header, :history, :response,' f':status, :reason, :title, :banner, :header, :history, :response,'
f':times, :ttl, :cidr, :asn, :org, :ip2region, :ip2location,' f':times, :ttl, :cidr, :asn, :org, :addr, :isp, :resolver, :module,'
f':resolver, :module, :source, :elapse, :find)', results) f':source, :elapse, :find)', results)
except Exception as e: except Exception as e:
logger.log('ERROR', e) logger.log('ERROR', e)
@@ -231,7 +231,7 @@ class Database(object):
table_name = table_name.replace('.', '_') table_name = table_name.replace('.', '_')
query = f'select id, new, alive, request, resolve, url, subdomain, level,' \ query = f'select id, new, alive, request, resolve, url, subdomain, level,' \
f'cname, content, public, cdn, port, status, reason, title, banner,' \ f'cname, content, public, cdn, port, status, reason, title, banner,' \
f'cidr, asn, org, ip2region, ip2location, source from "{table_name}"' f'cidr, asn, org, addr, isp, source from "{table_name}"'
if alive and limit: if alive and limit:
if limit in ['resolve', 'request']: if limit in ['resolve', 'request']:
where = f' where {limit} = 1' where = f' where {limit} = 1'
-13
View File
@@ -1,13 +0,0 @@
import zipfile
from IP2Location import IP2Location
from config.setting import data_storage_dir
class IpGeoInfo(IP2Location):
def __init__(self):
zip_path = data_storage_dir.joinpath("IP2LOCATION-LITE-DB3.BIN.ZIP")
bin_path = data_storage_dir.joinpath("IP2LOCATION-LITE-DB3.BIN")
if not bin_path.exists():
zf = zipfile.ZipFile(zip_path)
zf.extract('IP2LOCATION-LITE-DB3.BIN', data_storage_dir)
IP2Location.__init__(self, bin_path)
+4 -4
View File
@@ -284,8 +284,8 @@ class Module(object):
'cidr': None, 'cidr': None,
'asn': None, 'asn': None,
'org': None, 'org': None,
'ip2region': None, 'addr': None,
'ip2location': None, 'isp': None,
'resolver': None, 'resolver': None,
'module': self.module, 'module': self.module,
'source': self.source, 'source': self.source,
@@ -335,8 +335,8 @@ class Module(object):
'cidr': info.get('cidr'), 'cidr': info.get('cidr'),
'asn': info.get('asn'), 'asn': info.get('asn'),
'org': info.get('org'), 'org': info.get('org'),
'ip2region': info.get('ip2region'), 'addr': info.get('addr'),
'ip2location': info.get('ip2location'), 'isp': info.get('isp'),
'resolver': info.get('resolver'), 'resolver': info.get('resolver'),
'module': self.module, 'module': self.module,
'source': self.source, 'source': self.source,
+8 -12
View File
@@ -5,12 +5,10 @@ from config.log import logger
from config import settings from config import settings
from common import utils from common import utils
from common.ipasn import IPAsnInfo from common.ipasn import IPAsnInfo
from common.ipgeo import IpGeoInfo
from common.ipreg import IpRegData from common.ipreg import IpRegData
ip_asn = IPAsnInfo() ip_asn = IPAsnInfo()
ip_geo = IpGeoInfo()
ip_reg = IpRegData() ip_reg = IpRegData()
@@ -85,8 +83,8 @@ def gen_infos(data, qname, info, infos):
cidrs = list() cidrs = list()
asns = list() asns = list()
orgs = list() orgs = list()
locs = list() addrs = list()
regs = list() isps = list()
answers = data.get('answers') answers = data.get('answers')
for answer in answers: for answer in answers:
if answer.get('type') == 'A': if answer.get('type') == 'A':
@@ -102,12 +100,10 @@ def gen_infos(data, qname, info, infos):
cidrs.append(asn_info.get('cidr')) cidrs.append(asn_info.get('cidr'))
asns.append(asn_info.get('asn')) asns.append(asn_info.get('asn'))
orgs.append(asn_info.get('org')) orgs.append(asn_info.get('org'))
loc = f'{ip_geo.get_country_long(ip)} ' \ addr = ip_reg.query(ip).get('addr')
f'{ip_geo.get_region(ip)} ' \ addrs.append(addr)
f'{ip_geo.get_city(ip)}' isp = ip_reg.query(ip).get('isp')
locs.append(loc) isps.append(isp)
reg = ip_reg.query(ip).get('addr')
regs.append(reg)
info['resolve'] = 1 info['resolve'] = 1
info['reason'] = 'OK' info['reason'] = 'OK'
info['cname'] = ','.join(cname) info['cname'] = ','.join(cname)
@@ -117,8 +113,8 @@ def gen_infos(data, qname, info, infos):
info['cidr'] = ','.join(cidrs) info['cidr'] = ','.join(cidrs)
info['asn'] = ','.join(asns) info['asn'] = ','.join(asns)
info['org'] = ','.join(orgs) info['org'] = ','.join(orgs)
info['ip2location'] = ','.join(locs) info['addr'] = ','.join(addrs)
info['ip2region'] = ','.join(regs) info['isp'] = ','.join(isps)
infos[qname] = info infos[qname] = info
if not flag: if not flag:
info['alive'] = 0 info['alive'] = 0
Binary file not shown.
+5 -5
View File
@@ -84,19 +84,19 @@ DNS解析返回的TTL值
### cidr ### cidr
IP2LOCATION-ASN库查询出的CIDR ip2location库查询出的CIDR
### asn ### asn
IP2LOCATION-ASN库查询出的ASN ip2location库查询出的ASN
### ip2region ### addr
ip2region库查询出的物理地址 ip2region库查询出的物理地址
### ip2location ### isp
ip2location库查询出的物理地址 ip2region库查询出的网络服务提供商
### resolver ### resolver