import socket
import requests
import urllib3.util.connection as urllib3_connection
def get_json(url, family=None):
original_family = urllib3_connection.allowed_gai_family
session = requests.Session()
session.trust_env = False
if family is not None:
urllib3_connection.allowed_gai_family = lambda: family
try:
response = session.get(url, timeout=10)
response.raise_for_status()
return response.json()
finally:
session.close()
urllib3_connection.allowed_gai_family = original_family
def check_network():
"""IPv4/IPv6 の対応状況を検出"""
# IPv4検出
print("? IPv4診断:")
try:
data = get_json('https://v4.17nas.com?format=json', socket.AF_INET)
if 'error' in data:
print(f"❌ {data['error']['en']}")
else:
print(f"✅ IPv4アドレス: {data['ip']}")
print(f" 国: {data['country']['en']} ({data['country']['code']})")
print(f" 場所: {data['location']['en']}")
except Exception as e:
print(f"⚠️ 検出に失敗しました: {e}")
# IPv6検出
print("\n? IPv6診断:")
try:
data = get_json('https://v6.17nas.com?format=json', socket.AF_INET6)
if 'error' in data:
print(f"❌ {data['error']['en']}")
else:
print(f"✅ IPv6アドレス: {data['ip']}")
print(f" 国: {data['country']['en']}")
except Exception as e:
print(f"⚠️ 検出に失敗しました: {e}")
# アクセス優先度
print("\n⚡ アクセス優先度:")
try:
data = get_json('https://ip.17nas.com?format=json')
print(f"プロトコル: {data['protocol']}")
print(f"優先度: {data['priority']['en']}")
except Exception as e:
print(f"⚠️ 検出に失敗しました: {e}")
if __name__ == '__main__':
check_network()