自部署 whois api 实现域名信息的自动化查询

自部署 whois api 实现域名信息的自动化查询

之前写过一个 域名到期监控 的 CF worker 脚本,域名到期时间需要手动编辑 json 文件,再通过 worker 远程读取和解析,比较麻烦。这次做了升级,对一级域名可以自部署一个 whois api 实现域名信息的自动查询。二级域名就没办法了,只能通过手动编辑 json 文件的方式实现,因为二级域实际上是一级域的子域名,其到期时间是由注册者二次设置的,whois api 无法查询。

先部署一个 whois api

✅ 访问 我的仓库,点个 ⭐ 再 FORK 它,以便及时同步更新到我最新的代码

✅ 打开 whois-api.js 文件,复制所有内容,部署到 cf worker,设置以下变量

  • API_KEY:自行设置,调用 API 需要用到,如:123abc
  • CACHE_HOURS:缓存时间(单位:小时),默认为 24 小时,如:24

✅ 给这个 worker 项目绑定一个自定义域名,例如 https://whois.3344.com,在后面加上 /api/ 就是 api 接口地址(**末尾必须要带 /**),即:

1
2
# 末尾必须带 / 
https://whois.3344.com/api/

✅ 记录上面的 api 接口地址 和 api key 备用

部署新版域名监控

✅ 打开 domain-auto.js 文件,复制所有内容,部署到 cf worker,设置以下变量

  • SITENAME:必须变量,示例:域名到期监控
  • DOMAINS:必须变量,示例:https://gist.githubusercontent.com/用户名/gistID/raw/vpsinfo.json ;关于如何获取 gist 直链,看 这篇文章 ;其中的 json 内容示例如下(一级域名只需要 domain 字段,二级域名需要完整字段):
1
2
3
4
5
6
7
[
{ "domain": "cfcdn.best" },
{ "domain": "811520.xyz" },
{ "domain": "cfedt.site" },
{ "domain": "aaa.dpdns.org", "registrationDate": "2024-05-31", "expirationDate": "2026-05-31", "system": "DigitalPlat", "systemURL": "https://dash.domain.digitalplat.org" },
{ "domain": "bbb.dpdns.org", "registrationDate": "2024-05-31", "expirationDate": "2026-05-31", "system": "DigitalPlat", "systemURL": "https://dash.domain.digitalplat.org" }
]
  • TGID:非必须,如果需要开启 TG 通知,则填写你 TG 账号的 ID
  • TGTOKEN:非必须, 如果需要开启 TG 通知,则填写你 TG 机器人的 Token
  • DAYS:非必须,如果需要开启 TG 通知则填写数字,示例:7,即到期前 7 天通知
  • API_URL:必须,填写你部署的 API 接口地址,示例:https://whois.3344.com/api/
  • API_KEY:必须,填写你部署的 API 项目的 KEY,示例:123abc

✅ 给你的域名监控项目绑定自定义域名,假设为 https://domain.3344.com(注意:是域名监控项目绑定的域名,不是 API 接口绑定的域名),访问该域名,即可在网页上显示设定的域名信息

image.png

Whois api 接口简明文档

API 调用方式

  • 请求 URL 格式:
1
2
https://<worker项目地址>/api/<要查询的域名>
# 示例:https://whois.example.com/api/github.com
  • 请求头:X-API-KEY: 你的API密钥
  • 请求方法:GET
  • 调用示例
1
2
3
curl -X GET \
-H "X-API-KEY: 你的API密钥" \
https://whois.example.com/api/github.com
  • 返回示例
1
2
3
4
5
6
7
8
9
10
11
12
{
"domain": "example.com",
"creationDate": "1995-08-14T04:00:00Z",
"updatedDate": "2022-08-13T07:01:38Z",
"expiryDate": "2023-08-13T04:00:00Z",
"registrar": "RESERVED-INTERNET",
"registrarUrl": "http://www.reserved.com",
"nameServers": [
"a.iana-servers.net",
"b.iana-servers.net"
]
}

API 字段说明

字段 类型 说明
domain string 查询的域名(小写), 无需 http(s)
creationDate string/null 域名创建时间(ISO 格式)
updatedDate string/null 最后更新时间
expiryDate string/null 域名过期时间
registrar string/null 注册商名称
registrarUrl string/null 注册商网址
nameServers array 域名服务器列表(已去重)

错误响应

状态码 含义 示例响应
400 请求格 式错误 {“error”: “ 路径格式应为 /api/<域名>”}
401 未提供 API Key {“error”: “ 需要提 供有效的 API Key”}
403 API Key 无效 {“error”: “ 无效的 AP I Ke y”}
500 服务器错误 {“error”: “WHOIS 查询超时 “}
502 WHOIS 服务不可用 {“error”: “ WHOIS 服务返回 502”}

#API #cloudflare #域名 #监控 #面板