ROCKI

LEARN · ARTICLE

用 RDAP 免費查網域能不能註冊

發布 2026-11-09更新 2026-11-09作者 Rock Lee
用 RDAP 免費查網域能不能註冊 封面示意圖

作者:Rock Lee 實測日期:2026-11-09(Asia/Taipei)

為什麼寫這篇

想新網站名稱時,常常一次想好幾十個,一個一個貼到註冊商網站查很慢。RDAP 是用來接替 WHOIS 的標準(RFC 7480),用一般的 HTTPS 就能查、回傳 JSON,很適合寫成小腳本批次查。

但我們踩過一個坑:之前做的網域查詢工具,在一次 50 個網域的測試裡,把牛津大學的 ox.ac.uk 和劍橋的 cam.ac.uk 判成「可以註冊」。這篇把今天重測的過程寫出來,包括那個坑怎麼補。

放大鏡掃過一排網址卡片,有的蓋上已註冊章、有的打上問號(示意圖,AI 生成)
放大鏡掃過一排網址卡片,有的蓋上已註冊章、有的打上問號(示意圖,AI 生成)

實測環境

項目內容
工具Python 3 標準函式庫(不用裝套件)、curl
RDAP 伺服器清單IANA 官方目錄 https://data.iana.org/rdap/dns.json(版本日期 2026-10-28)
DNS 確認Google 公開 DNS 的 DNS over HTTPS(dns.google)
測試網域已知已註冊的網域,加上隨機組出、應該沒人註冊的 rocki-rdap-demo-x7q2k9(.com/.org/.tw/.dev/.io)
時間2026-11-09 18:35–18:37(UTC+8)

步驟

1. 先查這個後綴的 RDAP 伺服器在哪

每個後綴(TLD)由不同的註冊局管理,RDAP 伺服器也不同。IANA 維護一份官方目錄,列出哪個後綴該去問哪台伺服器。

IANA 的 RDAP 目錄:.com、.org、.tw、.台灣 都有伺服器;.io、.jp、.co 沒有
IANA 的 RDAP 目錄:.com、.org、.tw、.台灣 都有伺服器;.io、.jp、.co 沒有

今天讀到的目錄有 592 筆服務、涵蓋 1203 個後綴。幾個常見的:

後綴RDAP 伺服器
.comVerisign
.orgPublic Interest Registry
.twTWNIC(ccrdap.twnic.tw/tw/)
.台灣TWNIC(ccrdap.twnic.tw/taiwan/,目錄裡寫成 xn--kpry57d)
.ukNominet
.devGoogle
.io、.jp、.co目錄裡沒有

最後一列很重要:不是每個後綴都能用 RDAP 查。

2. 寫一個批次查詢腳本

腳本 rdap_check.py 只用 Python 標準函式庫:讀 IANA 目錄、找出對應伺服器、對每個網域發一個 GET .../domain/<網域> 請求,每筆之間停 1 秒。

rdap_check.py:依 IANA 目錄找伺服器,200 判已註冊、404 判查無資料、其他判無法判斷
rdap_check.py:依 IANA 目錄找伺服器,200 判已註冊、404 判查無資料、其他判無法判斷

判讀規則:

  • 200:有資料,已註冊。順便讀出註冊商、註冊日、到期日。
  • 404:查無資料,先標成「多半可註冊」,但還不能下定論(第 5 步會說明)。
  • 其他(例如 429)或沒有伺服器:無法判斷。

3. 實際跑一次

18:35 批次查詢:4 個已知網域都是已註冊,4 個隨機網域回 404,.io 沒有伺服器,ox.ac.uk 遇到 429
18:35 批次查詢:4 個已知網域都是已註冊,4 個隨機網域回 404,.io 沒有伺服器,ox.ac.uk 遇到 429
網域結果耗時
rocki.org已註冊(註冊商 Cloudflare)500 ms
example.com已註冊81 ms
twnic.tw已註冊1117 ms
google.com.tw已註冊(註冊商 Markmonitor)1103 ms
隨機名稱 .com/.org/.tw/.dev404 查無資料61~1371 ms
隨機名稱 .io無法判斷(沒有 RDAP 伺服器)—
ox.ac.uk無法判斷(HTTP 429)540 ms

不同伺服器速度差很多:.com 幾十毫秒,.tw 要一秒多。

4. 看懂回傳的 JSON

直接用 curl 查我們自己的網域,看原始資料長什麼樣子:

rocki.org 的 RDAP 原始回應節錄:狀態、註冊與到期日、名稱伺服器
rocki.org 的 RDAP 原始回應節錄:狀態、註冊與到期日、名稱伺服器

常用的欄位有:status(例如禁止轉移)、events(註冊、到期、最後變更的時間)、nameservers(名稱伺服器)、entities(註冊商等相關單位)。時間是 UTC,例如註冊時間 2026-10-06T04:23:56Z 換成台灣時間是當天中午 12:23。

5. 404 不等於可以註冊:用 DNS 交叉確認

剛才 ox.ac.uk 回 429(請求太頻繁)。等 20 秒重試,這次回的是 404:

20 秒後重試 ox.ac.uk 變成 404;同一台伺服器查 bbc.co.uk 則正常回 200
20 秒後重試 ox.ac.uk 變成 404;同一台伺服器查 bbc.co.uk 則正常回 200

牛津大學的網域當然有人註冊,但 RDAP 回「查無資料」。RDAP 的 HTTP 規範(RFC 7480)寫的是:伺服器沒有這筆資料、或查詢結果是空的,就回 404。也就是說,404 只代表「這台伺服器沒有給你資料」,不保證網域沒人用。

所以我們再問一次 DNS:網域如果在使用中,通常會有名稱伺服器(NS)紀錄。

用 DNS over HTTPS 查 NS:ox.ac.uk 有 6 筆,隨機名稱是 NXDOMAIN(不存在)
用 DNS over HTTPS 查 NS:ox.ac.uk 有 6 筆,隨機名稱是 NXDOMAIN(不存在)
網域DNS 結果
ox.ac.uk有 NS 紀錄 6 筆
bbc.co.uk有 NS 紀錄 8 筆
rocki.org有 NS 紀錄 2 筆(Cloudflare)
隨機名稱 .com、.ioNXDOMAIN(不存在)

6. 把兩個結果合起來判斷

最後的 check_domains.py 把 RDAP 和 DNS 合在一起:

合併判斷:RDAP 404 但 DNS 有 NS 的判為已註冊;兩邊都沒有才判可能可註冊
合併判斷:RDAP 404 但 DNS 有 NS 的判為已註冊;兩邊都沒有才判可能可註冊
RDAPDNS 有 NS判斷
200—已註冊
404有已註冊(ox.ac.uk、cam.ac.uk 都是這種)
404沒有可能可註冊
沒有伺服器有已註冊(例如 google.io)
沒有伺服器沒有無法判斷,請到註冊商查

結果

  • RDAP 用一般 HTTPS 就能查,回傳 JSON,Python 標準函式庫就夠用;今天實際發出的 RDAP 查詢,每筆都在 1.4 秒內回應。
  • 回 200 可以放心判「已註冊」;回 404 只能算「可能可註冊」,一定要再查 DNS。
  • .io、.jp、.co 不在 IANA 的 RDAP 目錄裡,只能靠 DNS 或註冊商查。
  • 我們自己的網域查詢工具,就是在 50 個網域的測試中把 ox.ac.uk、cam.ac.uk 誤判成可註冊,之後的版本加上 DNS 的 NS/A 紀錄交叉確認才修好。

踩坑紀錄

  1. RDAP 404 會誤判。 就是上面的 .ac.uk 案例。只看 RDAP 寫工具,會把大學網域報成可以買。
  2. 429 要放慢。 RFC 7480 寫明:收到 429 的用戶端應該降低查詢頻率,伺服器若有給 Retry-After 標頭就要遵守。我們的腳本每筆間隔 1 秒,對 Nominet 連查還是碰到一次 429,等 20 秒後才正常。
RFC 7480 節錄:404 代表沒有資料或結果為空;429 代表限流,用戶端應放慢並遵守 Retry-After
RFC 7480 節錄:404 代表沒有資料或結果為空;429 代表限流,用戶端應放慢並遵守 Retry-After
  1. DNS 沒紀錄也不保證能註冊。 有人註冊了網域但沒設 DNS,查起來也會是 NXDOMAIN。我們工具的文件裡也寫了:DNS 不存在只是推測,不是註冊商結帳的保證。
  2. 還在用 WHOIS 的話可以換了。 RFC 7480 開頭就說,RDAP 是用來接替「非常老的 WHOIS 協定」,因為 WHOIS 已不足以應付現在的需求;RDAP 規範了查詢和回應格式、會指向權威來源、支援國際化網域名稱(像 .台灣),回應是 JSON,寫程式處理方便很多。

常見問題

Q1:RDAP 要錢嗎?要申請帳號嗎? 今天測的伺服器(Verisign、PIR、TWNIC、Nominet、Google)都不用帳號、不用金鑰就能查。但伺服器會限流,量大時要放慢。

Q2:查到「可能可註冊」就一定買得到嗎? 不一定。這只是 RDAP 和 DNS 都查不到。實際能不能註冊、價格多少,以註冊商結帳頁為準。

Q3:.tw 和 .台灣 可以查嗎? 可以。IANA 目錄裡兩個都指到 TWNIC 的 RDAP 伺服器。今天 twnic.tw 查到已註冊、隨機的 .tw 名稱回 404。

Q4:為什麼不直接用註冊商網站查? 少量查用註冊商網站最準。RDAP 適合在「想了 50 個名字」的階段先篩一輪,把確定有人用的刪掉,剩下的再去註冊商確認。

看實作成果

對應示範:Apify 精選工具(含網域查詢)(虛構或自製,非客戶案件)。

複製這段給你的 AI agent

目標:幫我批次檢查一份網域清單有沒有人註冊,只查詢,不購買。

前提與禁止事項:
- 只用 Python 標準函式庫和公開的 RDAP、DNS over HTTPS 服務;不要申請帳號或金鑰、不要用付費 API。
- 不要註冊、購買或預留任何網域,也不要打開註冊商的結帳頁。
- 每筆查詢之間至少間隔 1 秒;收到 HTTP 429 就停下這個伺服器,等至少 20 秒(若有 Retry-After 就照它)再試一次,仍失敗就標「無法判斷」。

步驟:
1. 下載 https://data.iana.org/rdap/dns.json,依網域的後綴找出 RDAP 伺服器;記下目錄的 publication 日期。
2. 對每個網域查 RDAP:200=已註冊(讀出註冊商與到期日);404=查無資料;其他或無伺服器=無法判斷。
3. 對每個網域用 https://dns.google/resolve?name=<網域>&type=NS 查 NS 紀錄。
4. 合併判斷:RDAP 200 → 已註冊;有 NS → 已註冊;RDAP 404 且無 NS → 可能可註冊;無 RDAP 且無 NS → 無法判斷。
5. 輸出表格:網域、RDAP 狀態碼、NS 筆數、判斷、耗時。

驗收:用 example.com(應為已註冊)和一個隨機長字串 .com(應為可能可註冊)當對照組,兩個都判對;表格中「可能可註冊」的每一筆都同時是 RDAP 404 且沒有 NS。