MicrosoftHostsPicker
一个现代化的异步 Python 工具,可自动查找并选择 Microsoft 服务的最快 IP 地址。
一个现代化的异步 Python 工具,可自动查找并选择 Microsoft 服务的最快 IP 地址。
🚀 特性
- 异步ping测试 - 并发延迟测试,更快获得结果
- 智能IP选择 - 找到最优IP时智能提前终止
- 模块化配置 - 易于自定义的服务定义
- 美观的控制台输出 - 丰富多彩的进度指示器和结果展示
- 现代Python - 使用 asyncio、类型提示和数据类构建
🎯 为什么需要这个工具?
在某些地区,Microsoft 服务可能因为 DNS 解析到次优 IP 地址而表现不佳。此工具通过以下方式解决这个问题:
- 并发测试数百个 IP 地址
- 识别每个服务的最低延迟端点
- 生成优化的 hosts 文件条目
- 支持包括 Xbox Live、Office CDN、Microsoft Store 等在内的 10+ 种 Microsoft 服务
📋 支持的服务
- Microsoft Account - account.microsoft.com
- Xbox Live CDN - 游戏内容分发和多人游戏服务
- Xbox Cloud Sync - 游戏存档同步
- Office CDN - Office 应用程序下载和更新
- Microsoft Store - 应用商店图片和页面
- Microsoft Games Download - 游戏安装和更新
- Windows Update - 系统更新和补丁
- Microsoft Login - 身份验证服务(静态IP)
🛠️ 安装
前置要求
- Python 3.12+
- 可进行 ping 测试的网络连接
方法一:使用 uv(推荐)
# 如果尚未安装 uv,先安装它
pip install uv
# 克隆仓库
git clone https://github.com/WayneXuCN/MicrosoftHostsPicker.git
cd MicrosoftHostsPicker
# 安装依赖
uv sync
方法二:使用 pip
# 克隆仓库
git clone https://github.com/WayneXuCN/MicrosoftHostsPicker.git
cd MicrosoftHostsPicker
# 安装依赖
pip install ping3==4.0.4
🚀 使用方法
基本用法
python MicrosoftHostsPicker.py
高级配置
您可以通过修改 config.py 来自定义行为:
DEFAULT_CONFIG = {
'ping_attempts': 2, # 每个IP的ping次数
'ping_timeout': 0.5, # ping超时时间(秒)
'ping_max_workers': 100, # 并发ping限制
'good_enough_threshold': 50.0, # 延迟小于50ms时停止测试
}
📁 项目结构
MicrosoftHostsPicker/
├── MicrosoftHostsPicker.py # 主应用程序
├── config.py # 服务配置
├── pyproject.toml # 项目元数据和依赖
├── uv.lock # 可重现构建的锁定文件
├── data/ # IP地址数据库
│ ├── Microsoft_Account.txt
│ ├── Xbox_Live_CDN_1.txt
│ └── ...
└── hosts # 生成的hosts文件(运行后)
🔧 工作原理
- 配置加载 - 从
config.py读取服务定义 - 异步测试 - 并发ping数据文件中的IP地址
- 智能优化 - 对大型IP集使用提前终止
- 结果生成 - 创建优化的hosts文件条目
- 用户指导 - 提供清晰的实施说明
📖 使用提示
- 选择性应用:仅替换系统hosts文件中有问题的IP地址
- 先备份:修改前始终备份现有的hosts文件
- 服务特定:某些服务使用全球CDN,可能不需要手动配置
- 定期更新:定期重新运行工具,因为最优IP可能会变化
🔍 理解输出
工具提供丰富的控制台输出:
- ✅ 绿色勾号:找到最优IP
- ❌ 红色叉号:未找到可用IP
- ⚠️ 警告:测试失败
- 📊 进度条:显示大型IP集的测试进度
🛡️ 系统Hosts文件位置
- Windows:
C:\Windows\System32\drivers\etc\hosts - macOS/Linux:
/etc/hosts
修改系统hosts文件时,请记住以管理员/sudo权限运行。
🙏 致谢
本项目基于 ButaiKirin/MicrosoftHostsPicker 开发。感谢原作者的基础工作。
🤝 贡献
欢迎贡献!请随时提交问题、功能请求或拉取请求。
📄 许可证
此项目根据 LICENSE 文件中指定的条款进行许可。