Use 1.1.1.1 api instead of dirty hack to get ip

This commit is contained in:
Julian Liu 2020-12-17 02:42:41 +08:00 committed by GitHub
parent 3e1fcb13f3
commit 58c69e2c5f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,5 +1,3 @@
import socket
import requests.packages.urllib3.util.connection as urllib3_cn
import requests, json, sys, os
import time
@ -12,40 +10,19 @@ if(version < 3.5):
with open(PATH + "config.json") as config_file:
config = json.loads(config_file.read())
def allowed_gai_family6():
family = socket.AF_INET
if urllib3_cn.HAS_IPV6:
family = socket.AF_INET6 # force ipv6 only if it is available
return family
def allowed_gai_family4():
family = socket.AF_INET
return family
def getIPs():
a = ""
aaaa = ""
try:
urllib3_cn.allowed_gai_family = allowed_gai_family4
a = requests.get("https://www.cloudflare.com/cdn-cgi/trace").text.split("\n")
a = requests.get("https://1.1.1.1/cdn-cgi/trace").text.split("\n")
a.pop()
ajson = json.loads("{}")
for value in a:
value = value.split("=")
ajson[value[0]] = value[1]
a = ajson['ip']
except Exception as e:
print(e)
a = dict(s.split("=") for s in a)["ip"]
except Exception:
print("Warning: IPv4 not detected.")
try:
urllib3_cn.allowed_gai_family = allowed_gai_family6
aaaa = requests.get("https://www.cloudflare.com/cdn-cgi/trace").text.split("\n")
aaaa = requests.get("https://[2606:4700:4700::1111]/cdn-cgi/trace").text.split("\n")
aaaa.pop()
aaaajson = json.loads("{}")
for value in aaaa:
value = value.split("=")
aaaajson[value[0]] = value[1]
aaaa = aaaajson['ip']
aaaa = dict(s.split("=") for s in aaaa)["ip"]
except Exception:
print("Warning: IPv6 not detected.")
ips = []