use cloudflare trace & force it to be ipv4/ipv6

This commit is contained in:
root 2020-12-16 18:01:40 +08:00
parent 18ad6c6bc4
commit 344b056a6d

View File

@ -1,3 +1,5 @@
import socket
import requests.packages.urllib3.util.connection as urllib3_cn
import requests, json, sys, os import requests, json, sys, os
import time import time
@ -10,15 +12,40 @@ if(version < 3.5):
with open(PATH + "config.json") as config_file: with open(PATH + "config.json") as config_file:
config = json.loads(config_file.read()) 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(): def getIPs():
a = "" a = ""
aaaa = "" aaaa = ""
try: try:
a = requests.get("https://dns.timknowsbest.com/api/ipv4").text urllib3_cn.allowed_gai_family = allowed_gai_family4
except Exception: a = requests.get("https://www.cloudflare.com/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)
print("Warning: IPv4 not detected.") print("Warning: IPv4 not detected.")
try: try:
aaaa = requests.get("https://api6.ipify.org?format=json").json().get("ip") urllib3_cn.allowed_gai_family = allowed_gai_family6
aaaa = requests.get("https://www.cloudflare.com/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']
except Exception: except Exception:
print("Warning: IPv6 not detected.") print("Warning: IPv6 not detected.")
ips = [] ips = []