From a31e6dee1b3fe7b84c7b8c8828e3fb5afe3149ce Mon Sep 17 00:00:00 2001 From: miyouzi Date: Sun, 18 Oct 2020 20:03:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AF=B9=20www.whatsmydns.ne?= =?UTF-8?q?t=20=E7=9A=84=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GlobalDNS.py | 29 ++++++++--------------------- akamTester.py | 9 ++++++--- 2 files changed, 14 insertions(+), 24 deletions(-) diff --git a/GlobalDNS.py b/GlobalDNS.py index eecea81..3783b7e 100644 --- a/GlobalDNS.py +++ b/GlobalDNS.py @@ -5,7 +5,7 @@ # @File : GlobalDNS.py # @Software: PyCharm -import requests, dns.resolver +import requests, dns.resolver, json from bs4 import BeautifulSoup import re, time, socket @@ -34,10 +34,10 @@ def __init_header(self): header = { "Host": host, "User-Agent": ua, - # "referer": ref, + "referer": ref, "Accept": accept, "Accept-Language": lang, - # "Accept-Encoding": accept_encoding, + "Accept-Encoding": accept_encoding, "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1", "Pragma": cache_control, @@ -62,18 +62,12 @@ def __request(self, url): def __get_src(self): bf4 = self.__request('https://www.whatsmydns.net/#A/' + self.__domain) - # bf4 = self.__request('https://www.whatsmydns.net/') self.__src = bf4 - def __get_token(self): - token = self.__src.find('input', id='_token') - self.__token = token.get('value') - def __get_dns_id(self): a = self.__src.find_all('tr') for id in a: self.__dns_id.add(id.get('data-id')) - # print(self.__dns_id) def __extend_query(self): # 本地解析 @@ -102,20 +96,15 @@ def __extend_query(self): def __global_query(self): for dns_id in self.__dns_id: - url = 'https://www.whatsmydns.net/api/check?server='+dns_id\ - +'&type=A&query='+self.__domain\ - +'&_token='+self.__token - # print(url) + url = 'https://www.whatsmydns.net/api/details?server='+dns_id\ + +'&type=A&query='+self.__domain try: - src = self.__request(url) - # print('src= ',src) - ips = str(src.contents[0]) - ip = re.findall(r'\d+\.\d+\.\d+\.\d+', ips) - self.__ip_list = self.__ip_list | set(ip) + details = self.__request(url).json() + ip = details["data"][0]["response"] + self.__ip_list = self.__ip_list | set(ip) # set 并集 except IndexError: pass # 该 DNS 失效 - # print(self.__ip_list) def get_ip_list(self): @@ -128,9 +117,7 @@ def renew(self): print('正在对 ' + self.__domain + ' 进行全球解析……') self.__session.cookies.clear() self.__get_src() - self.__get_token() self.__get_dns_id() self.__global_query() self.__extend_query() print(self.__domain + ' 的全球解析已完成') - diff --git a/akamTester.py b/akamTester.py index 5e65be0..58766f2 100644 --- a/akamTester.py +++ b/akamTester.py @@ -13,7 +13,7 @@ working_dir = os.path.dirname(os.path.realpath(__file__)) # working_dir = os.path.dirname(sys.executable) # 使用 pyinstaller 编译时,打开此项 ip_list_path = os.path.join(working_dir, 'ip_list.txt') -version = 4.0 +version = 4.1 def ping_test(ip): @@ -90,8 +90,11 @@ def ping_test(ip): color_print(ip['ip'] + '\t平均延迟: ' + str(ip['delay']) + ' ms', status=2) else: ip_info.sort(key=lambda x:x['delay']) - color_print('本次测试未能找到延迟低于100ms的IP! 以下为延迟最低的 3 个节点', status=1) - for i in range(0,3): + num = len(ip_info) # 要显示的节点数 + if num > 3: # 如果解析的节点数超过 3 个, 那么显示 3 个就行 + num = 3 + color_print('本次测试未能找到延迟低于100ms的IP! 以下为延迟最低的 ' + str(num) + ' 个节点', status=1) + for i in range(0,num): color_print(ip_info[i]['ip'] + '\t平均延迟: ' + str(ip_info[i]['delay']) + ' ms') print()