WhereAmI/scratch.py
2026-06-15 00:49:26 +08:00

173 lines
4.4 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Scratch 测试脚本 - 预留用于代理测试
此文件用于快速测试和实验新功能。
可以通过 GUI 的"获取其他代理(预留)"按钮启动此脚本。
使用方法:
1. 在此文件中编写测试代码
2. 运行: python scratch.py
3. 观察测试结果
4. 根据需要调整代码
注意:
- 此文件不会被版本控制追踪
- 可以随时修改和重写
- 适合快速原型开发和调试
"""
import sys
import os
from loguru import logger
# 添加项目根目录到路径
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from core import ProxyManager, DataSource, HealthChecker
from core.models import ProxyInfo, ProxyProtocol, ProxyStatus
def test_proxy_connection():
"""测试代理连接"""
logger.info("=" * 60)
logger.info("开始代理连接测试")
logger.info("=" * 60)
# 示例:测试单个代理
proxy = ProxyInfo(
ip_address="127.0.0.1",
port=1080,
username="no need",
password="no need",
protocol=ProxyProtocol.SOCKS5,
country="CN"
)
logger.info(f"测试代理: {proxy.get_address()}")
# TODO: 在这里添加您的测试代码
# 例如:
# - 测试代理连通性
# - 测试代理速度
# - 测试代理匿名性
# - 批量测试多个代理
logger.info("测试完成")
def test_data_source():
"""测试数据源"""
logger.info("=" * 60)
logger.info("开始数据源测试")
logger.info("=" * 60)
config = {
'proxy_sources': {
'auto_fetch': {
'enabled': False,
'url': '',
'output_file': 'proxy.json'
},
'local_file': {
'enabled': True,
'path': 'local.json'
}
}
}
data_source = DataSource(config)
# 加载本地代理
proxies = data_source.load_from_file('local.json')
logger.info(f"加载了 {len(proxies)} 个代理")
for i, proxy in enumerate(proxies, 1):
logger.info(f"代理{i}: {proxy.get_address()} ({proxy.protocol.value})")
logger.info("数据源测试完成")
def test_health_check():
"""测试健康检测"""
logger.info("=" * 60)
logger.info("开始健康检测测试")
logger.info("=" * 60)
config = {
'health_check': {
'timeout': 5,
'connectivity_test_url': 'https://www.google.com/',
'connectivity_timeout': 10
}
}
checker = HealthChecker(config)
# 创建测试代理
proxy = ProxyInfo(
ip_address="127.0.0.1",
port=1080,
protocol=ProxyProtocol.SOCKS5
)
logger.info(f"检测代理: {proxy.get_address()}")
status = checker.check_proxy(proxy)
logger.info(f"检测结果: {status}")
logger.info(f"延迟: {proxy.latency_ms:.0f}ms")
logger.info("健康检测测试完成")
def main():
"""主函数"""
logger.info("Scratch 测试脚本启动")
logger.info("=" * 60)
# 选择要运行的测试
tests = {
'1': ('代理连接测试', test_proxy_connection),
'2': ('数据源测试', test_data_source),
'3': ('健康检测测试', test_health_check),
}
logger.info("可用测试:")
for key, (name, _) in tests.items():
logger.info(f" {key}. {name}")
choice = input("\n请选择测试 (1/2/3),或直接回车运行所有测试: ").strip()
if choice in tests:
# 运行选定的测试
test_name, test_func = tests[choice]
logger.info(f"\n运行测试: {test_name}")
try:
test_func()
except Exception as e:
logger.error(f"测试失败: {e}")
import traceback
traceback.print_exc()
else:
# 运行所有测试
logger.info("\n运行所有测试")
for test_name, test_func in tests.values():
logger.info(f"\n{'='*60}")
logger.info(f"运行: {test_name}")
logger.info(f"{'='*60}")
try:
test_func()
except Exception as e:
logger.error(f"测试失败: {e}")
import traceback
traceback.print_exc()
logger.info("\n" + "=" * 60)
logger.info("所有测试完成")
logger.info("=" * 60)
if __name__ == "__main__":
main()