python实现besttrace 归属地功能

举报
yd_299763254 发表于 2026/10/15 08:50:02 2026/10/15
【摘要】 本地ip库速度比较快,不过只能本机使用,最好自己写个接口来调用.这里使用的是纯真ip库,下载ip库后,需要安装纯正ip库的模块pip install qqwry-py3#!/usr/bin/python#coding:utf-8import sysimport osimport reimport subprocessimport platformfrom qqwry import QQwry...

本地ip库速度比较快,不过只能本机使用,最好自己写个接口来调用.
这里使用的是纯真ip库,下载ip库后,需要安装纯正ip库的模块
pip install qqwry-py3

#!/usr/bin/python
#coding:utf-8

import sys
import os
import re
import subprocess
import platform
from qqwry import QQwry

q = QQwry()
dbfile = “/yourpath/qqwry.dat”
header={
‘User-Agent’: ‘Dalvik/1.6.0 (Linux; U; Android 4.4.4; HM NOTE 1S MIUI/V6.6.1.0.KHKCNCF)’,
}

def lookup(ip):
q.load_file(dbfile)
ipinfo = q.lookup(ip)
return ipinfo

def trpy(iphost):
system_name = platform.dist()[0]
if system_name == ‘redhat’:
trace_cmd = ‘/bin/traceroute’
elif system_name == ‘Ubuntu’:
trace_cmd = ‘/usr/sbin/traceroute’
else:
trace_cmd = ‘/bin/traceroute’
try:
p = subprocess.Popen([trace_cmd,iphost],stdout=subprocess.PIPE)
while True:
line = p.stdout.readline()
if not line:
break
line = line.decode().replace(‘\n’, ‘’).replace(‘\r’, ‘’)
ips = re.findall(r"(((?:[0-9]{1,3}.){3}[0-9]{1,3}))", line)
if ips:
try:
ip = ips[0]
print(line + ", " + ’ '.join(lookup(ip)))
except IndexError as e:
print()
else:
print(line)
except (KeyboardInterrupt,SystemExit):
sys.exit()

if name == ‘main’:
if len(sys.argv) < 2:
print(“Usage: {} <hostname|ip>”.format(sys.argv[0]))
sys.exit()
else:
iphost = sys.argv[1]
trpy(iphost)

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。