正在加载...
2190 字
11 分钟
OVH 服务器自动抢购工具
2025-11-17

OVH 可乐 - OVH 服务器自动抢购工具#

🎯 纯 Go 语言编写的 OVH 独立服务器自动监控和抢购工具,支持多账户、多机房、多配置并发监控。

✨ 主要特性#

  • 🚀 纯净抢购 - 无 Web 界面,纯命令行运行,资源占用极低
  • 👥 多账户支持 - 同时监控多个 OVH 账户,互不干扰
  • 🌍 多地区监控 - 支持监控多个数据中心(RBX、GRA、SBG 等)
  • ⚙️ 灵活配置 - 支持自定义硬件配置选项(带宽、内存、存储)
  • 🔥 热重载 - 修改配置文件后自动生效,无需重启
  • 💨 高并发抢单 - 发现有货时使用多个并发快速下单
  • 🔍 智能监控 - 并发检查 + 随机延迟,避免 API 限流
  • 📱 Telegram 通知 - 支持 Telegram Bot 实时通知
  • 🛡️ 线程安全 - 使用 RWMutex 保证多账户并发安全

📦 快速开始#

1. 下载#

Terminal window
# 克隆项目
git clone https://github.com/gokele/OVH
cd OVH
# 运行
./ovh-sniper
gokele
/
OVH
Waiting for api.github.com...
00K
0K
0K
Waiting...

2. 配置文件#

编辑 config.json,填入你的 OVH API 凭据。

⚙️ 配置说明#

监控配置 (monitor)#

参数说明默认值推荐值
check_interval每隔几秒检查一次库存53-10 秒
check_concurrency每个账户同时检查几个目标(避免请求过多)33-5
order_concurrency发现有货后同时下几个订单105-20
random_delay_min随机延迟最小值,避免被限流(毫秒)10050-200ms
random_delay_max随机延迟最大值(毫秒)500300-1000ms

示例配置:

{
"monitor": {
"check_interval": 5,
"check_concurrency": 3,
"order_concurrency": 10,
"random_delay_min": 100,
"random_delay_max": 500
}
}

Telegram 通知配置#

{
"telegram": {
"enabled": false,
"bot_token": "",
"chat_id": ""
}
}

如何获取 Telegram 配置:

  1. 创建 Bot:与 @BotFather 对话,发送 /newbot 创建机器人
  2. 获取 Token:BotFather 会给你一个 bot_token
  3. 获取 Chat ID
    • 与你的 Bot 发送任意消息
    • 访问:https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
    • 在返回的 JSON 中找到 chat.id

账户配置 (accounts)#

API 端点说明:

端点地区API 地址
ovh-eu欧洲https://eu.api.ovh.com/createToken/
ovh-ca加拿大https://ca.api.ovh.com/createToken/
ovh-us美国https://us.api.ovh.com/createToken/

如何获取 API 凭据:

  1. 访问对应地区的 API Token 创建页面
  2. 设置权限:
    • GET /dedicated/server/*
    • POST /order/*
    • PUT /order/*
  3. 点击创建,保存 Application KeyApplication SecretConsumer Key

示例配置:

{
"accounts": [
{
"name": "主账户",
"endpoint": "ovh-eu",
"app_key": "YOUR_APP_KEY",
"app_secret": "YOUR_APP_SECRET",
"consumer_key": "YOUR_CONSUMER_KEY",
"ovh_subsidiary": "IE",
"enabled": true,
"targets": [...]
}
]
}

OVH Subsidiary 说明#

ovh_subsidiary 字段决定账户的地区和税率,不同地区的价格和服务条款可能不同。

常用代码:

代码国家/地区说明
IE爱尔兰欧洲默认地区
FR法国法国本土
DE德国德国本土
ES西班牙西班牙本土
GB英国英国本土
IT意大利意大利本土
NL荷兰荷兰本土
PL波兰波兰本土
PT葡萄牙葡萄牙本土
CA加拿大加拿大地区
US美国美国地区

注意事项:

  • 如果不设置,默认使用 IE(爱尔兰)
  • ovh_subsidiary 必须与你的账户地区匹配
  • 不同地区的价格、税率、服务条款可能不同

监控目标配置 (targets)#

参数详解:

参数说明示例
name目标名称,用于日志识别"KS-LE-B NVMe 高配"
plan_code产品代码,在 OVH 官网查看"26skleb01-v1"
datacenters机房列表
• 空数组 [] = 监控所有机房
• 指定机房 ["rbx", "gra"] = 只监控这些机房
["rbx", "gra", "sbg"]
auto_ordertrue = 有货自动下单
false = 只监控通知
true
quantity有货时抢购几台12
options硬件升级选项,空数组表示默认配置见下方

常用机房代码:

代码机房名称位置
rbxRoubaix法国鲁贝
graGravelines法国格拉夫林
sbgStrasbourg法国斯特拉斯堡
bhsBeauharnois加拿大博阿尔努瓦

硬件配置选项示例:

{
"options": [
"bandwidth-500-26skle",
"ram-32g-ecc-2400-26skleb01-v1",
"softraid-2x450nvme-26skleb01-v1"
]
}

如何查找配置选项代码:

  1. 访问 OVH API 文档:https://eu.api.ovh.com/console/
  2. 使用接口:GET /order/cart/{cartId}/eco/options?planCode={planCode}
  3. 查看返回的可用选项列表

完整示例:

{
"targets": [
{
"name": "KS-LE-B 默认配置",
"plan_code": "26skleb01-v1",
"datacenters": ["rbx", "gra"],
"auto_order": true,
"quantity": 1,
"options": []
},
{
"name": "KS-LE-B NVMe 高配",
"plan_code": "26skleb01-v1",
"datacenters": [],
"auto_order": true,
"quantity": 2,
"options": [
"bandwidth-500-26skle",
"ram-32g-ecc-2400-26skleb01-v1",
"softraid-2x450nvme-26skleb01-v1"
]
},
{
"name": "只监控不下单",
"plan_code": "26skleb01-v1",
"datacenters": ["rbx"],
"auto_order": false,
"quantity": 1,
"options": []
}
]
}

📋 完整配置示例#

{
"monitor": {
"check_interval": 5,
"check_concurrency": 3,
"order_concurrency": 10,
"random_delay_min": 100,
"random_delay_max": 500
},
"telegram": {
"enabled": true,
"bot_token": "123456789:ABCdefGHIjklMNOpqrsTUVwxyz",
"chat_id": "123456789"
},
"accounts": [
{
"name": "主账户",
"endpoint": "ovh-eu",
"app_key": "your_app_key",
"app_secret": "your_app_secret",
"consumer_key": "your_consumer_key",
"ovh_subsidiary": "IE",
"enabled": true,
"targets": [
{
"name": "KS-LE-B 默认配置",
"plan_code": "26skleb01-v1",
"datacenters": ["rbx", "gra"],
"auto_order": true,
"quantity": 1,
"options": []
}
]
},
{
"name": "备用账户",
"endpoint": "ovh-eu",
"app_key": "another_app_key",
"app_secret": "another_app_secret",
"consumer_key": "another_consumer_key",
"ovh_subsidiary": "FR",
"enabled": false,
"targets": [
{
"name": "备用目标",
"plan_code": "26skleb01-v1",
"datacenters": ["gra"],
"auto_order": true,
"quantity": 1,
"options": []
}
]
}
]
}

🚀 运行逻辑#

监控架构#

多账户并发监控:
├── 账户1 (独立协程)
│ ├── 并发检查目标1 ──┐
│ ├── 并发检查目标2 │ 最多 3 个并发 (check_concurrency)
│ ├── 并发检查目标3 │ 每次检查前随机延迟 100-500ms
│ └── 并发检查目标4 ──┘
│ └── 发现有货 ──> 开启 10 个并发抢单 (order_concurrency)
├── 账户2 (独立协程)
│ ├── 并发检查目标1 ──┐
│ └── 并发检查目标2 │ 独立运行,互不干扰
│ └── 发现有货 ──> 开启 10 个并发抢单
└── 账户3 (独立协程)
└── ...

工作流程#

  1. 初始化

    • 加载配置文件 config.json
    • 为每个启用的账户创建 OVH API 客户端
    • 为每个账户启动独立的监控协程
  2. 监控阶段

    • 每个账户独立运行,互不干扰
    • 使用并发检查该账户的所有目标
    • 每次检查前随机延迟,避免 API 限流
    • 检测到库存状态变化时触发通知
  3. 下单阶段

    • 检测到 unavailableavailable 时触发
    • 如果 auto_order: true,立即开启高并发抢单
    • 使用信号量控制并发数,避免请求过多
    • 实时记录成功/失败数量
  4. 热重载

    • 监控 config.json 文件变化
    • 检测到修改后自动重新加载配置
    • 清空旧的监控状态
    • 重新初始化所有客户端

📊 日志说明#

运行时的日志输出示例:

🎯 OVH 可乐 - 抢购程序 (支持热重载)
========================================
2025/11/17 16:32:00 ✅ 从 config.json 加载了 1 个账户
========================================
👥 账户数量: 1 个
📊 监控目标: 2 个
⏱️ 检查间隔: 5 秒
🔍 检查并发: 3
💨 下单并发: 10
⏲️ 随机延迟: 100-500 毫秒
📱 Telegram 通知: 未启用
📋 监控目标列表:
账户: 主账户 (ovh-eu)
1. 24rise012 | 机房: 所有机房 | 配置: [softraid-2x512nvme] | 自动下单: ✅ | 数量: 2
2. 26skleb01-v1 | 机房: 所有机房 | 配置: 默认配置 | 自动下单: ✅ | 数量: 10
========================================
2025/11/17 16:32:00 📋 已启用 config.json 热重载
2025/11/17 16:32:00 🔥 配置热重载已启用,修改 config.json 后自动生效
2025/11/17 16:32:00 🚀 监控已启动
2025/11/17 16:32:00 🔍 开始监控账户: 主账户
2025/11/17 16:32:00 🔍 [主账户] 正在检查 24rise012 的可用性...
2025/11/17 16:32:00 🔍 [主账户] 正在检查 26skleb01-v1 的可用性...
2025/11/17 16:32:02 🎉 [主账户] 24rise012@bhs 有货了!(配置: ram-128g-ecc-2933+softraid-2x512nvme, 状态: 72H)
2025/11/17 16:32:02 🎉 [主账户] 24rise012@waw 有货了!(配置: ram-128g-ecc-2933+softraid-2x512nvme, 状态: 1H-low)
2025/11/17 16:32:02 🛒 [主账户] 24rise012@bhs 开始下单 1 台 (配置: ram-128g-ecc-2933 + softraid-2x512nvme)
2025/11/17 16:32:02 🛒 [主账户] 24rise012@waw 开始下单 1 台 (配置: ram-128g-ecc-2933 + softraid-2x512nvme)
2025/11/17 16:32:05 🔍 [主账户] 正在检查 26skleb01-v1 的可用性...
2025/11/17 16:32:10 ✅ 订单创建成功!订单号: 238869343, 价格: 88.99 €
2025/11/17 16:32:10 🔍 [主账户] 正在检查 26skleb01-v1 的可用性...
2025/11/17 16:32:10 ✅ 订单创建成功!订单号: 238869344, 价格: 88.99 €
2025/11/17 16:32:10 🎊 [主账户] 24rise012 下单完成 - 机房: [bhs, waw] | 成功: 2 台 | 失败: 0 台 | 耗时: 8.44 秒 [进度: 2/2]
2025/11/17 16:32:15 🔍 [主账户] 正在检查 26skleb01-v1 的可用性...
^C
⚠️ 收到退出信号,正在停止...
2025/11/17 16:32:18 ⏹️ 账户 主账户 监控已停止
👋 再见!

🛡️ 安全建议#

  1. 保护配置文件

    • config.json 包含 API 凭据,请勿泄露
    • 已添加到 .gitignore,不会被提交到 Git
  2. API 权限控制

    • 建议只给必要的 API 权限
    • 定期更换 API 密钥
  3. 并发控制

    • 不要设置过高的并发数,避免触发 OVH API 限流
    • 推荐:check_concurrency: 3, order_concurrency: 10
  4. 随机延迟

    • 必须启用随机延迟,避免被识别为机器人
    • 推荐:100-500ms

🔧 常见问题#

Q1: 如何查看可用的产品代码?#

访问 OVH 官网的 Kimsufi/SoYouStart 页面,在产品详情页 URL 中可以找到 plan_code

Q2: 如何查找硬件配置选项代码?#

使用 OVH API Console:

GET /order/cart/{cartId}/eco/options?planCode={planCode}

Q3: 热重载不生效?#

检查文件监控是否启动成功,如果看到 ⚠️ 启动配置监控失败,需要手动重启程序。

Q4: 提示 API 限流怎么办?#

  • 降低 check_concurrencyorder_concurrency
  • 增加 check_interval
  • 增大随机延迟范围

📄 许可证#

MIT License

🤝 贡献#

欢迎提交 Issue 和 Pull Request!

🙏 致谢#

基于原项目 OVH-BUY 的核心逻辑重写。


注意: 本工具仅供学习和个人使用,请遵守 OVH 服务条款,合理使用 API。

OVH 服务器自动抢购工具
https://www.juxw.com/go-ovh/
作者
可乐
发布于
2025-11-17
许可协议
CC BY-NC-SA 4.0