LEARN · ARTICLE
用 RDAP 免費查網域能不能註冊

作者:Rock Lee 實測日期:2026-11-09(Asia/Taipei)
為什麼寫這篇
想新網站名稱時,常常一次想好幾十個,一個一個貼到註冊商網站查很慢。RDAP 是用來接替 WHOIS 的標準(RFC 7480),用一般的 HTTPS 就能查、回傳 JSON,很適合寫成小腳本批次查。
但我們踩過一個坑:之前做的網域查詢工具,在一次 50 個網域的測試裡,把牛津大學的 ox.ac.uk 和劍橋的 cam.ac.uk 判成「可以註冊」。這篇把今天重測的過程寫出來,包括那個坑怎麼補。

實測環境
| 項目 | 內容 |
|---|---|
| 工具 | 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 維護一份官方目錄,列出哪個後綴該去問哪台伺服器。

今天讀到的目錄有 592 筆服務、涵蓋 1203 個後綴。幾個常見的:
| 後綴 | RDAP 伺服器 |
|---|---|
| .com | Verisign |
| .org | Public Interest Registry |
| .tw | TWNIC(ccrdap.twnic.tw/tw/) |
| .台灣 | TWNIC(ccrdap.twnic.tw/taiwan/,目錄裡寫成 xn--kpry57d) |
| .uk | Nominet |
| .dev | |
| .io、.jp、.co | 目錄裡沒有 |
最後一列很重要:不是每個後綴都能用 RDAP 查。
2. 寫一個批次查詢腳本
腳本 rdap_check.py 只用 Python 標準函式庫:讀 IANA 目錄、找出對應伺服器、對每個網域發一個 GET .../domain/<網域> 請求,每筆之間停 1 秒。

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

| 網域 | 結果 | 耗時 |
|---|---|---|
| rocki.org | 已註冊(註冊商 Cloudflare) | 500 ms |
| example.com | 已註冊 | 81 ms |
| twnic.tw | 已註冊 | 1117 ms |
| google.com.tw | 已註冊(註冊商 Markmonitor) | 1103 ms |
| 隨機名稱 .com/.org/.tw/.dev | 404 查無資料 | 61~1371 ms |
| 隨機名稱 .io | 無法判斷(沒有 RDAP 伺服器) | — |
| ox.ac.uk | 無法判斷(HTTP 429) | 540 ms |
不同伺服器速度差很多:.com 幾十毫秒,.tw 要一秒多。
4. 看懂回傳的 JSON
直接用 curl 查我們自己的網域,看原始資料長什麼樣子:

常用的欄位有:status(例如禁止轉移)、events(註冊、到期、最後變更的時間)、nameservers(名稱伺服器)、entities(註冊商等相關單位)。時間是 UTC,例如註冊時間 2026-10-06T04:23:56Z 換成台灣時間是當天中午 12:23。
5. 404 不等於可以註冊:用 DNS 交叉確認
剛才 ox.ac.uk 回 429(請求太頻繁)。等 20 秒重試,這次回的是 404:

牛津大學的網域當然有人註冊,但 RDAP 回「查無資料」。RDAP 的 HTTP 規範(RFC 7480)寫的是:伺服器沒有這筆資料、或查詢結果是空的,就回 404。也就是說,404 只代表「這台伺服器沒有給你資料」,不保證網域沒人用。
所以我們再問一次 DNS:網域如果在使用中,通常會有名稱伺服器(NS)紀錄。

| 網域 | DNS 結果 |
|---|---|
| ox.ac.uk | 有 NS 紀錄 6 筆 |
| bbc.co.uk | 有 NS 紀錄 8 筆 |
| rocki.org | 有 NS 紀錄 2 筆(Cloudflare) |
| 隨機名稱 .com、.io | NXDOMAIN(不存在) |
6. 把兩個結果合起來判斷
最後的 check_domains.py 把 RDAP 和 DNS 合在一起:

| RDAP | DNS 有 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 紀錄交叉確認才修好。
踩坑紀錄
- RDAP 404 會誤判。 就是上面的
.ac.uk案例。只看 RDAP 寫工具,會把大學網域報成可以買。 - 429 要放慢。 RFC 7480 寫明:收到 429 的用戶端應該降低查詢頻率,伺服器若有給
Retry-After標頭就要遵守。我們的腳本每筆間隔 1 秒,對 Nominet 連查還是碰到一次 429,等 20 秒後才正常。

- DNS 沒紀錄也不保證能註冊。 有人註冊了網域但沒設 DNS,查起來也會是 NXDOMAIN。我們工具的文件裡也寫了:DNS 不存在只是推測,不是註冊商結帳的保證。
- 還在用 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。