Files
shualiangv1/check_ip.py
huangzhenpc 1d4f6f8c33 正式2
2025-07-18 09:51:18 +08:00

146 lines
4.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
IP地址检查工具
用于检查当前使用的IP地址和代理设置
"""
import requests
import json
import os
def load_proxy_config():
"""加载代理配置"""
config_file = 'config.json'
if os.path.exists(config_file):
try:
with open(config_file, 'r', encoding='utf-8') as f:
config = json.load(f)
return config.get('proxy')
except:
return None
return None
def get_ip_info(use_proxy=True):
"""获取IP信息"""
session = requests.Session()
# 设置代理
proxy_config = load_proxy_config() if use_proxy else None
if proxy_config:
proxy_url = f"http://{proxy_config['username']}:{proxy_config['password']}@{proxy_config['host']}:{proxy_config['port']}"
session.proxies = {
'http': proxy_url,
'https': proxy_url
}
print(f"🌐 使用代理: {proxy_config['host']}:{proxy_config['port']}")
else:
print("🌐 不使用代理")
# IP查询服务
services = [
{
'name': 'httpbin.org',
'url': 'https://httpbin.org/ip',
'parse': lambda r: r.json().get('origin', 'N/A')
},
{
'name': 'ipify.org',
'url': 'https://api.ipify.org?format=json',
'parse': lambda r: r.json().get('ip', 'N/A')
},
{
'name': 'ipinfo.io',
'url': 'https://ipinfo.io/json',
'parse': lambda r: f"{r.json().get('ip', 'N/A')} ({r.json().get('city', 'N/A')}, {r.json().get('country', 'N/A')})"
},
{
'name': 'ifconfig.me',
'url': 'https://ifconfig.me/ip',
'parse': lambda r: r.text.strip()
}
]
results = []
for service in services:
try:
print(f"正在查询 {service['name']}...")
response = session.get(service['url'], timeout=10)
if response.status_code == 200:
ip_info = service['parse'](response)
results.append({
'service': service['name'],
'ip_info': ip_info,
'status': 'success'
})
print(f"{service['name']}: {ip_info}")
else:
results.append({
'service': service['name'],
'ip_info': f"HTTP {response.status_code}",
'status': 'error'
})
print(f"{service['name']}: HTTP {response.status_code}")
except Exception as e:
results.append({
'service': service['name'],
'ip_info': str(e),
'status': 'error'
})
print(f"{service['name']}: {e}")
return results
def main():
print("=" * 50)
print("🌍 IP地址检查工具")
print("=" * 50)
print()
# 检查是否有代理配置
proxy_config = load_proxy_config()
if proxy_config:
print("发现代理配置正在检查代理IP...")
print()
proxy_results = get_ip_info(use_proxy=True)
print()
print("-" * 30)
print("为了对比检查本地IP...")
print()
local_results = get_ip_info(use_proxy=False)
print()
print("=" * 50)
print("📊 结果对比")
print("=" * 50)
# 提取主要IP地址进行对比
proxy_ips = [r['ip_info'].split()[0] for r in proxy_results if r['status'] == 'success']
local_ips = [r['ip_info'].split()[0] for r in local_results if r['status'] == 'success']
if proxy_ips and local_ips:
if proxy_ips[0] != local_ips[0]:
print("✅ 代理工作正常IP地址已更改")
print(f"代理IP: {proxy_ips[0]}")
print(f"本地IP: {local_ips[0]}")
else:
print("⚠️ 代理可能未生效IP地址相同")
print(f"当前IP: {proxy_ips[0]}")
else:
print("❌ 无法获取足够的IP信息进行对比")
else:
print("未发现代理配置检查本地IP...")
print()
get_ip_info(use_proxy=False)
print()
print("✨ 检查完成!")
if __name__ == "__main__":
main()