def test_city_ipv6(): db4 = ipdb.City("c:/tiantexin/download/mydata4vipday4_cn.ipdb") db = ipdb.City("c:/work/ipdb/mydata6vipday2.ipdb") df = pd.read_csv("C:\\Users\\GAOCHUNHUI\\Documents\\WeChat Files\\daxime\\FileStorage\\File\\2019-10\\ipiptest\\ip_data.csv") for i, row in df.iterrows(): if ipaddress.ip_address(row['request_ip']).version == 4: db4.find(row['request_ip'], "CN") else: print(db.find(row['request_ip'], "CN"), row['request_ip']) try: print(db.find("2000:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", "CN")) except Exception as e: print(e)
def get_city(ip): db = ipdb.City(db_dir) # 是否支持ipv4,ipv6 # print(db.is_ipv4(), db.is_ipv6()) # 查看构建时间 # print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(db.build_time()))) # print(db.languages()) # print(db.fields()) # print(db.build_time()) # print(db.find(ip, "CN")) # print(db.find_map(ip, "CN")) # print(db.find_info(ip, 'CN').country_name) # print(db.find_info(ip, "CN").city_name) data_list = db.find(ip, "CN") country = data_list[0] if data_list[2] == '': region = data_list[1] city = None isp = None else: region = data_list[1] city = data_list[2] isp = None data_dict = { 'country': country, 'region': region, 'city': city, 'isp': isp } return data_dict
def test_free(): db = ipdb.City("ipipfree.ipdb") print(db.is_ipv4(), db.is_ipv6()) print(db.languages()) print(db.fields()) print(db.build_time()) print(db.find("123.124.16.83", "CN")) print("ipdb reload", db.reload("ipipfree.ipdb")) print(db.find("123.124.16.83", "CN")) try: print(db.find("2000:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", "CN")) except Exception as e: print(e)
def create_app(debug=False, **kwargs): log.gen_log.info("debug:{}".format(debug)) log.gen_log.info("kwargs:{}".format(kwargs)) log.gen_log.info("port:{}".format(kwargs['port'])) log.gen_log.info("name:{}".format(kwargs['name'])) template_path = os.path.join(kwargs['proj_dir'], 'templates') if not os.path.exists(template_path): raise Exception("template_path {} not exists".format(template_path)) static_path = os.path.join(kwargs['proj_dir'], 'static') if not os.path.exists(static_path): raise Exception("static_path {} not exists" .format(static_path)) import redis redis_client = redis.from_url(kwargs['redis_url'], client_name=kwargs['name']) workspace_root = os.path.dirname(kwargs['proj_dir']) doc_root = os.path.join(workspace_root, 'docs/_build/html') db_ip = ipdb.City(os.path.join(kwargs['proj_dir'], 'lib/lib_ip/ipipfree.ipdb')) app = web.Application( handlers=url_pattern, template_path=template_path, static_path=static_path, redis_client=redis_client, db_ip=db_ip, doc_root=doc_root, ) return app
def ipipCheckGeo(ips): mylog = set_logger() iplis = [] # ipip查询仅接受unicode编码 if (type(ips) is unicode): iplis.append(ips) elif (type(ips) is str): iplis.append(ips) elif (type(ips) is list): iplis = ips else: mylog.error("[global function] Input type Error in ipipCheckGeo().") return 0 fpath = get_ipipGeo_path() realpath = os.path.split( __file__)[0] + os.path.sep + ".." + os.path.sep + fpath #print realpath dbs = ipdb.City(realpath) redic = {} for ip in iplis: if (type(ip) is not unicode): ip2 = ip.decode() else: ip2 = ip try: # encode,ipip查询仅接受unicode编码 tmp = dbs.find(ip2, "CN") # newtmp=[] # for ii in tmp: # newtmp.append(ii.encode("utf-8")) redic[ip] = tmp except Exception, e: mylog.error( "[global function] Check IP by ipdb errors:{0}".format(e))
def test_city_district(): db = ipdb.City("c:/work/ipdb/test.ipdb") print(db.fields()) city = db.find_info(u"111.199.81.160", "CN") qx = city.get_district() if qx != None: print(qx.city_name, qx.district_name)
def test_city_ipv6_test(): db = ipdb.City("c:/work/ipdb/mydata6vipday2.ipdb") print(db.find("2001:44c8:4644:1191:3c41:724d:e391:51b0", "CN")) print(db.find_map("2a04:3543:1000:2310:ecb3:3eff:fef0:20e1", "CN")) print(db.find_info("2a04:3543:1000:2310:ecb3:3eff:fef0:20e1", "CN").country_name)
def simple_query(ip: str) -> str: # TODO: non-Chinese IP may need to query maxmind. if ':' in ip: # IPv6 pass else: db = ipdb.City(os.path.join(DB_PATH, "ipv4_ipip.ipdb")) return ' '.join(db.find(ip, "CN"))
def test_city_ipv4(): db = ipdb.City("c:/tiantexin/download/mydata4vipday4_cn.ipdb") print(db.is_ipv4(), db.is_ipv6()) print(db.languages()) print(db.fields()) print(db.build_time()) print(db.find("1.1.1.1", "CN")) print(db.find_map("8.8.8.8", "CN")) print(db.find_info("118.28.1.1", "CN").country_name)
def get_ip_city(ip): global ipip_db if ipip_db is None: ipip_db_path = os.path.join(os.path.dirname(__file__), 'ipipfree.ipdb') ipip_db = ipdb.City(ipip_db_path) info = list(set(ipip_db.find(ip, 'CN'))) if '' in info: info.remove('') return ' '.join(info)
def _ip_query(self, ip): import ipdb db = ipdb.City("/www/server/panel/data/data.ipdb") if sys.version_info[0] == 2: ip_info = db.find_info(unicode(ip), "CN") else: ip_info = db.find_info(ip, "CN") if ip_info.country_name == '中国': return ip_info.region_name return None
def test_city(self): print("\n\ntest city start\n\n") city = ipdb.City("c:/work/ipdb/city.ipv4.ipdb") print("ipdb.build.time:", city.build_time()) for A in range(224): ip_address = u"%d.28.1.1" % A print(ip_address, city.find(ip_address, "CN")) print(ip_address, city.find_map(ip_address, "CN")) print(ip_address, city.find_info(ip_address, "CN")) print("\n\ntest city start\n\n")
def test_city_ipv6(): db = ipdb.City("c:/work/ipdb/city.ipv6.ipdb") print(db.is_ipv4(), db.is_ipv6()) print(db.languages()) print(db.fields()) print(db.build_time()) print(db.find("2001:250:200::", "CN")) try: print(db.find("2000:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", "CN")) except Exception as e: print(e)
def test_city_ipv6(): db = ipdb.City("./mydata4vipweek2.ipdb") print(db.is_ipv4(), db.is_ipv6()) print(db.languages()) print(db.fields()) print(db.build_time()) print(db.find("2001:250:200::", "CN")) try: print(db.find("2000:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", "CN")) except Exception as e: print(e)
def get_ip_city_by_ipip(ip): global ipip_db if ipip_db is None: ipip_db_path = os.path.join(os.path.dirname(__file__), 'ipipfree.ipdb') ipip_db = ipdb.City(ipip_db_path) try: info = ipip_db.find_info(ip, 'CN') except ValueError: return None if not info: raise None return {'city': info.city_name, 'country': info.country_name}
def get_ip_city(ip): global ipip_db if not ip or not isinstance(ip, str): return _("Invalid ip") if ':' in ip: return 'IPv6' if ipip_db is None: ipip_db_path = os.path.join(os.path.dirname(__file__), 'ipipfree.ipdb') ipip_db = ipdb.City(ipip_db_path) info = list(set(ipip_db.find(ip, 'CN'))) if '' in info: info.remove('') return ' '.join(info)
def get_country_name(_ip): """ 获取 国家名称 https://www.ipip.net/product/client.html :param _ip: :return: """ if tools.is_number(_ip): _ip = long2ip(int(_ip)) db = ipdb.City(tools.ROOT_PATH + "/P/ipdb/ipipfree.ipdb") info = db.find_map(_ip, "CN") info['country_code'] = get_country_code(_ip) return info
def test_city_ipv4(): db = ipdb.City("./mydata4vipweek2.ipdb") print(db.is_ipv4(), db.is_ipv6()) print(db.languages()) print(db.fields()) print(db.build_time()) print(db.find("1.1.1.1", "CN")) print(db.find_map("8.8.8.8", "CN")) print(db.find_info("8.8.8.8", "CN").country_name) print(db.find_info("8.8.8.8", "CN").region_name) print(db.find_info("8.8.8.8", "CN").city_name) print(db.find_info("8.8.8.8", "CN").owner_name) print(db.find_info("8.8.8.8", "CN").isp_domain)
def test_free(): db = ipdb.City("c:/work/ipdb/mydata4vipweek2.ipdb") print(db.is_ipv4(), db.is_ipv6()) print(db.languages()) print(db.fields()) print(db.build_time()) print(db.find("1.1.1.1", "CN")) print("ipdb reload", db.reload("c:/work/ipdb/city.free.ipdb")) print(db.find("118.28.1.1", "CN")) try: print(db.find("2000:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", "CN")) except Exception as e: print(e)
def test_city_ipv4(): db = ipdb.City("ipipfree.ipdb") print(db.is_ipv4(), db.is_ipv6()) print(db.languages()) print(db.fields()) print(db.build_time()) print(db.find("1.1.1.1", "CN")) print(db.find_map("8.8.8.8", "CN")) print(db.find_info("118.28.1.1", "CN").country_name)
import os import sys sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../../') import ipdb from pathlib import Path from client.webinfo.wafw00f.main import main1 as WafMain ipdata = Path(__file__).parent.joinpath('ipdata.ipdb') if not ipdata.is_file(): print('[-]web信息收集-ipdata.ipdb IP数据库不存在') exit(0) else: IPDB = ipdb.City(ipdata.resolve()) def SelectIP(ip): '''查询IP归属地''' try: result = IPDB.find_map(ip, 'CN') except Exception as e: print(f'{ip}查询归属地失败:{e}') return '' else: if result['region_name'] == result['city_name']: ipinfo = result['country_name'] + result['region_name'] + result[ 'isp_domain'] else: ipinfo = result['country_name'] + result['region_name'] + result[ 'city_name'] + result['isp_domain']
######################################################################################## IPDB 格式官方解析代码 https://www.ipip.net/support/code.html https://github.com/ipipdotnet/ipdb-python qqwry.ipdb 纯真数据库 IPIP.net 格式版,精简并匹配为国家、省、市、运营商。 https://github.com/metowolf/qqwry.ipdb IP 地址库 数据基于纯真数据库分类,更新日期 20201105. https://github.com/metowolf/iplist wget https://registry.npmjs.org/qqwry.ipdb/-/qqwry.ipdb-2020.11.5.tgz ######################################################################################### import ipdb # db = ipdb.City("/path/to/city.ipv4.ipdb") db = ipdb.City("qqwry.ipdb") # db.reload("/path/to/city.ipv4.ipdb") # update ipdb database file reload data print(db.is_ipv4(), db.is_ipv6()) print(db.languages()) # support language print(db.fields()) # support fields print(db.build_time()) # build database time print(db.find("1.1.1.1", "CN")) # query ip return array # print(db.find(u"1.1.1.1", "CN")) # Python 2.7 print(db.find_map("8.8.8.8", "CN")) # query ip return dict print(db.find_info("118.28.1.1", "CN").country_name)
'109.86.0.0/15', '182.23.211.0/24', '58.211.2.0/24', '119.36.164.0/24', '116.55.250.0/24', '101.227.163.0/24', '13.228.69.0/24', '120.221.136.0/24', '119.188.132.0/24', '115.127.235.0/24', '42.236.6.0/24', '125.88.190.0/24', '61.54.47.0/24', '103.27.12.0/22', '116.193.80.0/21', '101.79.159.0/24', '123.155.158.0/24', '111.47.226.0/24', '131.0.72.0/22', '192.230.64.0/18' ] ASNS = [ '10576', '10762', '11748', '131099', '132601', '133496', '134409', '135295', '136764', '137187', '13777', '13890', '14103', '14520', '17132', '199251', '200013', '200325', '200856', '201263', '202294', '203075', '203139', '204248', '204286', '204545', '206227', '206734', '206848', '206986', '207158', '208559', '209403', '21030', '21257', '23327', '23393', '23637', '23794', '24997', '26492', '268843', '28709', '29264', '30282', '30637', '328126', '36408', '38107', '397192', '40366', '43303', '44907', '46071', '46177', '47542', '49287', '49689', '51286', '55082', '55254', '56636', '57363', '58127', '59730', '59776', '60068', '60626', '60922', '61107', '61159', '62026', '62229', '63062', '64232', '8868', '9053', '55770', '49846', '49249', '48163', '45700', '43639', '39836', '393560', '393234', '36183', '35994', '35993', '35204', '34850', '34164', '33905', '32787', '31377', '31110', '31109', '31108', '31107', '30675', '24319', '23903', '23455', '23454', '22207', '21399', '21357', '21342', '20940', '20189', '18717', '18680', '17334', '16702', '16625', '12222', '209101', '201585', '135429', '395747', '394536', '209242', '203898', '202623', '14789', '133877', '13335', '132892', '21859', '6185', '47823' ] ip_db = ipdb.City(Path(__file__).parent.joinpath('lib/ipdata.ipdb')) geo_reader = geoip2.database.Reader( Path(__file__).parent.joinpath('lib/GeoLite2-ASN.mmdb').resolve())
def dns_process(d_a, conf_data, i): import logging logger = logging.getLogger("DNS") logger.setLevel(level=logging.INFO) handler = logging.FileHandler("%s/SELENIUM-%d-log.txt" % (conf_data["log"], i), encoding='utf-8') handler.setLevel(logging.INFO) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) # console set console = logging.StreamHandler() console.setLevel(logging.INFO) logger.addHandler(handler) # logger.addHandler(console) start = datetime.datetime.now() for key, value in d_a.items(): norm_url = get_url_normalize_single(value[1]) value.append(norm_url) domain = urlparse(norm_url).hostname myaddr = [] if isIP(domain): value.append("") value.append(domain) myaddr.append(domain) # logger.info("[%s\t%s\t%s]" % (value[0], domain, domain)) else: value.append(domain) try: A = socket.gethostbyname(domain) myaddr.append(A) # logger.info("[%s\t%s\t%s]" % (value[0], domain, myaddr[0])) except socket.error: myaddr.append("") # logger.info("[%s\t%s\t解析失败]" % (value[0], domain)) time.sleep(0.1) if myaddr[0].strip() == "": value.append("NULL") value.append("NULL") value.append("NULL") msgstr = "#,#".join(map(str, value)) logger.info("[%s]" % msgstr) else: value.append(myaddr[0]) dbpath = conf_data["conf"] + "/ipipfree.ipdb" db = ipdb.City(dbpath) city_str = db.find(myaddr[0], "CN") jing_nei = "中国,香港,澳门,台湾" if city_str[0] in jing_nei: if city_str[1] in jing_nei: value.append("境外") else: value.append("境内") else: value.append("境外") value.append(city_str[0] + "·" + city_str[1]) end = datetime.datetime.now() # logger.info("%d" % (end-start).seconds) return d_a
def __init__(self, ipdb_file): self.db = ipdb.City(ipdb_file)
from __future__ import unicode_literals import ipdb, sys db = ipdb.City("ipipfree.ipdb") # db.reload("/path/to/city.ipv4.ipdb") # update ipdb database file reload data print db.is_ipv4(), db.is_ipv6() print db.languages() # support language print db.fields() # support fields print db.build_time() # build database time #print db.find("1.1.1.1", "CN") # query ip return array # print(db.find(u"1.1.1.1", "CN")) # Python 2.7 #print db.find_map("123.124.16.83", "CN") # query ip return dict print db.find_info("123.124.16.83", "CN").region_name print db.find_info("123.124.16.83", "CN").city_name