如何使用 NoxHash API 以编程方式监控您的矿机
开发者视角的 NoxHash 矿机 API 监控教程:鉴权、轮询模式、离线告警、Webhook,以及可直接改用的 Python 示例脚本。
通过编程方式监控您的 NoxHash 矿机,意味着使用 API key 将实时 hashrate、状态和收益拉取到您自己的工具中——一个 Python 脚本、一张 Google Sheet、一个 Grafana 仪表板,或一条 SMS 告警管道。本指南介绍构建可靠监控系统的通用模式,包括 polling、webhook,以及对 rate limit 的礼貌使用。
为什么要用 API 而不是仪表板监控您的矿机
NoxHash 网页仪表板是为人类设计的:您登录,瞥一眼 hashrate 和 BTC 余额,然后登出。这对一两台矿机是有效的。一旦您运营多个租约——或者您希望在凌晨 3 点出问题时收到告警——您就需要一台机器为您守候。
API 监控程序位于仪表板之外,按计划拉取相同的数据。它可以把收益记录到电子表格,把指标推送到 Grafana,或在矿机掉线的那一刻给您发短信。逻辑由您掌控,所以您可以精确决定何时收到通知、什么算是"问题"。
离线检测
如果租用矿机的状态从 running 翻转为 stopped,可在几分钟内收到 SMS 或邮件——而不是第二天早上偶然登录时才发现。
自动化报表
将每日收益追加一行到 Google Sheet 或本地数据库。建立独立于仪表板保留期的完整历史,随时可用于报税或记账。
自定义仪表板
将指标输送到 Grafana、Prometheus 或自建的 React 页面。把 NoxHash hashrate 与 BTC 价格数据结合,得到真正的盈利视图。
步骤 1 — 在 NoxHash 账户中创建 API Key
每次 API 调用都需要一个已认证的身份。NoxHash 从您的账户设置中签发个人 API key,您可以设置过期日期,让泄露的 key 自动失效。
打开 Profile → API Keys
登录后点击头像,进入个人资料的 API Keys 区域。如果还没开,请先启用 2FA——您肯定不想让 key 管理页面只靠一个密码保护。
生成带过期日期的新 key
给 key 起一个描述性的名字("home-grafana"、"sheets-logger"),并设置过期时间——90 天是合理的默认值。短寿命 key 可以在 key 意外进入 Git 提交或聊天记录时限制损失。
复制并安全保存 key
完整的 key 只会显示一次。粘贴到密码管理器或环境变量存储中——永远不要硬编码到源文件里。在服务器上,将其保存在被 Git 忽略的 .env 文件中。
查阅当前 API 文档
endpoint 路径、header 和 rate limit 规则都可能演进。编码之前,请在 NoxHash 官方文档中确认确切的 base URL、认证 header 以及列出矿机的路由。下面的示例使用合理但通用的名称——把它们当作形状参考,而不是契约。
步骤 2 — 一个最简 Python 监控脚本(伪代码)
这是一个小巧、易读的 Python 脚本,它会认证、获取矿机列表,并标记离线超过 30 分钟的矿机。它刻意保持简单——除 requests 外没有任何依赖——所以您今天就可以把它丢进 cron job,明天再加固。
import os, time, requests
from datetime import datetime, timedelta, timezone
API_BASE = "https://api.noxhash.com/v1" # confirm in current docs
API_KEY = os.environ["NOXHASH_API_KEY"] # never hard-code
OFFLINE_THRESHOLD = timedelta(minutes=30)
headers = {
"Authorization": f"Bearer {API_KEY}",
"Accept": "application/json",
}
def fetch_miners():
r = requests.get(f"{API_BASE}/miners", headers=headers, timeout=10)
r.raise_for_status()
return r.json().get("data", [])
def check_offline(miners):
now = datetime.now(timezone.utc)
alerts = []
for m in miners:
if m["status"] != "running":
last_seen = datetime.fromisoformat(m["last_seen_at"])
if now - last_seen > OFFLINE_THRESHOLD:
alerts.append(m)
return alerts
def send_sms(miner):
# plug in Twilio / Vonage / a webhook to your phone
print(f"ALERT: {miner['name']} offline since {miner['last_seen_at']}")
if __name__ == "__main__":
while True:
try:
for miner in check_offline(fetch_miners()):
send_sms(miner)
except requests.HTTPError as e:
print(f"API error: {e}")
time.sleep(300) # poll every 5 minutes — be kind to the API
更喜欢 JavaScript?同样的形态在 Node.js 脚本中用 fetch 即可实现,通过 cron runner 或 serverless scheduler 调度。逻辑完全相同:认证、列出矿机、按 status 和 timestamp 筛选、通知。
const API_BASE = "https://api.noxhash.com/v1";
const API_KEY = process.env.NOXHASH_API_KEY;
const OFFLINE_MS = 30 * 60 * 1000;
async function fetchMiners() {
const res = await fetch(`${API_BASE}/miners`, {
headers: { Authorization: `Bearer ${API_KEY}` },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const { data } = await res.json();
return data;
}
function offlineAlerts(miners) {
const now = Date.now();
return miners.filter(m =>
m.status !== "running" &&
now - new Date(m.last_seen_at).getTime() > OFFLINE_MS
);
}
setInterval(async () => {
try {
const alerts = offlineAlerts(await fetchMiners());
alerts.forEach(m => console.log(`ALERT: ${m.name} offline`));
} catch (e) { console.error(e.message); }
}, 5 * 60 * 1000);
几分钟内让脚本对接一台真实矿机
上面的 Python 和 Node 示例只差一样东西就能活起来:一个运行中矿机的 NoxHash 账户。免费注册,激活 2 天 Basic Miner 试用,生成 API key,然后用真实的 hashrate 数据运行脚本。
最值得先落地的三个用例
您不需要第一天就把所有东西都建好。从下面任选一个,这个周末就把它发布——每一个都小到可以在一个晚上完成,并且在周一早上就能真正派上用场。
SMS 离线告警
把上面的 Python 脚本放到任何 5 美元的 VPS 上跑 cron。把 send_sms 函数接到 Twilio 或手机 webhook 上。您会在咖啡变凉之前就知道哪台矿机停了。
每日 Google Sheet 日志
用 Google Apps Script for Sheets 抓取 NoxHash 每日收益,每天早晨为每台矿机追加一行。非常适合税务记录和快速图表。
Grafana 仪表板
通过一个小 exporter 把 hashrate 和 BTC 收益推到 Prometheus,然后与 BTC 价格一起绘图。一眼就能看出这周您的矿机是否跑赢了市场。
Polling 还是 Webhook——哪种模式合适?
Polling 意味着您的脚本按计时器向 API 问"有什么新东西吗?"。Webhook 反过来:NoxHash 将事件推送到您托管的 URL。两者各有位置。如果 API 当前对您关心的事件支持 webhook,那么它们更便宜也更快;如果不支持,礼貌的 polling 循环仍然工作得很好。
| 因素 | Webhook | Polling |
|---|---|---|
| 状态变化延迟 | 秒级 | 最长一个 polling 间隔 |
| API 请求量 | 仅在事件发生时 | 每次 tick,无论有无事件 |
| 所需基础设施 | 公网 HTTPS endpoint | 任何能跑 cron 的机器 |
| 处理丢失事件 | 依赖重试 + 签名校验 | 自愈——下一次 tick 赶上 |
| 最适合 | 低延迟告警、多台矿机 | 简单脚本、周期性报表 |
混合方案往往是正确答案:用 webhook 处理关键告警(矿机离线、租约临近到期),用 polling 做周期性汇总(每日收益日志、周报)。根据 API 公开了哪些事件,以及您能容忍多长时间的延迟(1 到 5 分钟)来选择。
Rate Limit 礼仪与 Key 卫生
您滥用的 API 就是您会失去的 API。NoxHash 和每一个严肃平台一样都会施加 rate limit,并可能临时封禁行为不当的 key。几个小习惯就能让您的集成受欢迎,账户安全。
每 1 到 5 分钟 poll 一次
NoxHash 的 hashrate 以分钟级的节奏更新。每秒 poll 一次换不来更新鲜的数据,只会换来 rate limit 的惩罚。60 到 300 秒是甜蜜点。
收到 429 时退避
如果收到 HTTP 429(Too Many Requests),请尊重 Retry-After header,并把间隔加倍。指数退避胜过把 endpoint 敲成硬封禁。
永远不要提交 key
把 key 放在环境变量或 secret manager 里。推送前扫一下 Git 历史。一旦怀疑泄露立即轮换——这就是短过期时间的意义。
每个集成一个 key
为每个脚本或服务器使用单独的 key。当其中一个被攻破或废弃时,您可以吊销它而不影响其他。按用途命名 key,而不是按所在位置。
常见问题
监控矿机需要编程经验吗?
使用仪表板不需要——它一行代码都不需要就能满足大部分需求。只有当您想做自定义自动化——SMS 告警、电子表格记录或 Grafana 视图时,才需要基本的 Python 或 JavaScript 技能。对非开发者来说,一个 Sheets 里的 Google Apps Script 通常就够了。
我可以多频繁安全地调用 API?
对挖矿监控来说,每 1 到 5 分钟 poll 一次已经足够——NoxHash 的 hashrate 和收益以分钟级节奏更新,更频繁调用也拿不到更新鲜的数据。请始终查阅当前 API 文档获取确切的 rate limit 数值,并尊重任何 Retry-After header。
API key 泄露了会怎么样?
立即从个人资料的 API Keys 页面吊销这把 key,然后生成新的并更新您的脚本。短过期时间(比如 90 天)会自动限制暴露窗口。即便凭证和 key 同时被盗,账户上的 2FA 也能多提供一道防线。
我可以在 serverless function 中使用 API 吗?
可以——AWS Lambda、Cloudflare Workers、Google Cloud Functions 和 Vercel Cron 都非常适合几分钟一次的定时检查。把 API key 存在提供商的 secret manager 里而不是写死在代码中,并给请求包上超时,避免慢 API 调用耗尽您的函数配额。
Webhook 能完全取代 polling 吗?
通常不能。Webhook 能即时处理诸如"矿机离线"这类离散事件,但您仍然需要 polling 或快照 endpoint 来获取每日汇总、历史图表,以及在漏接后做对账。大多数生产级集成两者并用:webhook 用于告警,polling 用于汇总。
我的监控脚本会影响挖矿收益吗?
不会。监控类 endpoint 的 API 是只读的——polling 状态和收益不会影响 hashrate、uptime 或 payout。无论您的脚本检查得多勤,租用的矿机都会继续在 NoxHash 基础设施上运行。
非财务或安全建议
本指南为教育目的描述通用的 API 监控模式。endpoint 路径、rate limit 以及 webhook 支持都可能发生变化——在编写生产代码之前,请始终对照当前 NoxHash API 文档进行核实。挖矿收益取决于 BTC 价格、网络难度和市场状况,所有这些都可能快速变化;过往业绩不代表未来结果。只投入您能承受损失的资金,并就所在国家的加密货币收益相关问题咨询当地税务顾问。