Net::Whois - Công cụ cào dữ liệu kiểm tra thông tin tên miền qua RDAP và WHOIS
Tổng quan về công cụ cào dữ liệu

Dữ liệu về tên miền được thu thập thông qua RDAP (HTTP, JSON), WHOIS (cổng 43) hoặc trang web của nhà điều hành — tùy thuộc vào vùng tên miền. Đối với mỗi TLD, các máy chủ RDAP và WHOIS đã được thiết lập sẵn trong công cụ cào dữ liệu; nếu RDAP khả dụng cho vùng đó, truy vấn sẽ được thực hiện qua nó trước tiên, nếu lỗi sẽ chuyển sang WHOIS, nếu cả hai đều không có thì sẽ qua web khi có trang web tương ứng.
Tập hợp các phương thức kiểm tra phụ thuộc vào nhà điều hành, chứ không chỉ vào TLD. Một số vùng không có WHOIS hoặc RDAP hoặc chúng không hoạt động — đó là quyết định của nhà điều hành. Trang web để kiểm tra cũng không phải lúc nào cũng có: sự hiện diện của nó cũng do nhà điều hành quy định. Nếu trang web tồn tại, công cụ cào dữ liệu sẽ truy vấn dữ liệu thông qua đó.
Có những vùng mà nhà điều hành chỉ sở hữu TLD, còn các trang web được đăng ký trên SLD (cấp thứ hai, ví dụ co.uk, org.uk). Chủ sở hữu SLD có thể là một hoặc nhiều — nhưng đó không phải là nhà điều hành TLD. Tập hợp các phương thức kiểm tra sẽ do chủ sở hữu SLD quy định: WHOIS, RDAP, trang web, sự kết hợp của chúng — hoặc không có gì cả.
Thành phần các trường trong WHOIS và RDAP cũng có thể khác nhau — do luật pháp, chính sách của nhà điều hành và các hạn chế về dữ liệu cá nhân. Tuy nhiên, tập hợp nhìn chung là có thể dự đoán được: đăng ký, ngày tháng, NS, nhà đăng ký, trạng thái.
Khi thu thập qua web thì không có tiêu chuẩn chung. Việc kiểm tra xem tên miền đã được đăng ký hay chưa luôn được thực hiện. Những phần còn lại phụ thuộc vào những gì nhà điều hành hiển thị trên trang: có thể là gần như đầy đủ các trường, hoặc có thể chỉ là xác nhận việc đã đăng ký.
Chi tiết hơn: RDAP (tiếng Anh), WHOIS.
Tính năng của A-Parser cho phép lưu các cài đặt cào dữ liệu để sử dụng sau này (preset), thiết lập lịch trình cào dữ liệu và nhiều tính năng khác. Bạn có thể sử dụng tính năng tự động nhân bản truy vấn, thay thế truy vấn phụ từ tệp, quét các tổ hợp chữ-số và danh sách để nhận được số lượng kết quả tối đa có thể.
Việc lưu kết quả có thể thực hiện theo bất kỳ hình thức và cấu trúc nào bạn cần, nhờ vào bộ tạo mẫu mạnh mẽ tích hợp sẵn Template Toolkit cho phép áp dụng logic bổ sung cho kết quả và xuất dữ liệu ở nhiều định dạng khác nhau, bao gồm JSON, SQL và CSV.
Các trường hợp ứng dụng công cụ cào dữ liệu
🔗 Chọn dữ liệu tùy chỉnh
Net::Whois chọn dữ liệu tùy chỉnh
🔗 Thông số tên miền
Lấy các thông số theo tên miền
🔗 Thông báo về thời hạn tên miền
Nhận thông báo qua Telegram về việc hết hạn đăng ký tên miền
🔗 Thu thập cơ sở dữ liệu địa chỉ e-mail
Mẫu thiết lập sẵn cho phép thu thập địa chỉ e-mail của tên miền thông qua dịch vụ Whois.
Dữ liệu thu thập được
Danh sách dưới đây là bộ dữ liệu điển hình cho WHOIS/RDAP; các trường cụ thể phụ thuộc vào phản hồi của máy chủ và luật pháp. Khi cào dữ liệu qua web, chỉ có trạng thái đăng ký là chắc chắn được điền; các trường khác chỉ có nếu nhà điều hành công bố chúng.
$registered— tên miền đã được đăng ký hay chưa$expire_date— ngày hết hạn đăng ký tên miền$creation_date— ngày tên miền được đăng ký$free_date— ngày tên miền được giải phóng$whoisserver— máy chủ WHOIS được sử dụng (khi truy vấn WHOIS; thường để trống khi dùng RDAP)$rdapserver— URL của máy chủ RDAP (khi truy vấn RDAP thành công)$registrar— nhà đăng ký tên miền$updated_date— ngày cập nhật bản ghi cuối cùng$data— phản hồi thô: văn bản WHOIS hoặc JSON RDAP- Mảng
$ns(Máy chủ tên):$ns.$i.server— tên máy chủ NS
- Mảng
$statuses(Danh sách trạng thái):$statuses.$i.status— trạng thái tên miền
Tính năng
- Tự động chọn RDAP hoặc WHOIS theo vùng tên miền (ưu tiên RDAP)
- Nếu vùng không có WHOIS/RDAP hoạt động nhưng có trang web của nhà điều hành — việc kiểm tra sẽ được thực hiện qua đó
- Thành phần các trường WHOIS/RDAP phụ thuộc vào phản hồi của máy chủ và luật pháp
- Khi cào dữ liệu qua web, việc tồn tại của tên miền luôn được kiểm tra; các trường còn lại chỉ có nếu nhà điều hành cung cấp
- Một số vùng (TLD và SLD) không có WHOIS/RDAP cũng như trang web — dữ liệu WHOIS không khả dụng, nhưng sự tồn tại của tên miền được kiểm tra thông qua
Net::DNS - Hỗ trợ làm việc với các tên miền quốc tế (IDN, ví dụ яндекс.рф)
Các biến thể sử dụng
- Thu thập các tên miền tự do hoặc những tên miền sắp được giải phóng
- Thu thập danh sách các máy chủ NS
- Lấy trạng thái của các tên miền
Truy vấn
Trong các truy vấn, bạn cần chỉ định tên miền của trang web cần tìm, ví dụ:
a-parser.com
yandex.ru
google.com
vk.com
facebook.com
Các tùy chọn xuất kết quả
A-Parser hỗ trợ định dạng kết quả linh hoạt nhờ bộ tạo mẫu tích hợp Template Toolkit, cho phép xuất kết quả dưới dạng tùy ý cũng như có cấu trúc như CSV hoặc JSON.
Xuất mặc định
Định dạng kết quả:
$query - registered: $registered, expire: $expire_date, creation: $creation_date
Kết quả hiển thị tên miền, trạng thái đã đăng ký hay chưa, ngày hết hạn và ngày đăng ký tên miền:
facebook.com - registered: 1, expire: 30.03.2028, creation: 29.03.1997
a-parser.com - registered: 1, expire: 25.02.2022, creation: 25.02.2012
vk.com - registered: 1, expire: 23.06.2021, creation: 24.06.1997
yandex.ru - registered: 1, expire: 01.10.2021, creation: 23.09.1997
google.com - registered: 1, expire: 14.09.2028, creation: 15.09.1997
Xuất danh sách NS
Định dạng kết quả:
$ns.format('$server\n')
Ví dụ kết quả:
demi.ns.cloudflare.com
vern.ns.cloudflare.com
Xuất dữ liệu về thời hạn tên miền ra CSV
Định dạng kết quả:
[% tools.CSVline(query, registered, expire_date, creation_date, updated_date, free_date, whoisserver, rdapserver, registrar) %]
Ví dụ kết quả (tên miền .com, phản hồi qua RDAP — whoisserver trống, rdapserver được điền):
a-parser.com,1,25.02.2027,25.02.2012,10.02.2026,none,,https://rdap.verisign.com/com/v1/domain/a-parser.com,"Squarespace Domains II LLC"
Xuất danh sách NS vào bảng CSV
Định dạng kết quả:
[% FOREACH ns;
tools.CSVline(query, server);
END %]
Ví dụ kết quả:
a-parser.com,demi.ns.cloudflare.com
a-parser.com,vern.ns.cloudflare.com
Dump kết quả ra JSON
Định dạng kết quả chung:
[% IF notFirst;
",\n";
ELSE;
notFirst = 1;
END;
obj = {};
obj.query = query;
obj.registered = p1.registered;
obj.expire_date = p1.expire_date;
obj.creation_date = p1.creation_date;
obj.updated_date = p1.updated_date;
obj.free_date = p1.free_date;
obj.whoisserver = p1.whoisserver;
obj.rdapserver = p1.rdapserver;
obj.registrar = p1.registrar;
obj.domains = [];
FOREACH item IN p1.ns;
obj.domains.push({
server = item.server
});
END;
obj.json %]
Văn bản bắt đầu:
[
Văn bản kết thúc:
]
Ví dụ kết quả (RDAP):
[{
"registered": 1,
"rdapserver":"https://rdap.verisign.com/com/v1/domain/a-parser.com",
"query":"a-parser.com",
"free_date":"none",
"domains":[
{
"server":"demi.ns.cloudflare.com"
},
{
"server":"vern.ns.cloudflare.com"
}
],
"registrar":"Squarespace Domains II LLC",
"expire_date":"25.02.2027",
"creation_date":"25.02.2012",
"whoisserver":"",
"updated_date":"10.02.2026"
}]
Để các tùy chọn "Prepend text" và "Append text" hiển thị trong Trình chỉnh sửa tác vụ, bạn cần kích hoạt "More options".
Xử lý kết quả
A-Parser cho phép xử lý kết quả trực tiếp trong quá trình cào dữ liệu, trong phần này chúng tôi đưa ra các trường hợp phổ biến nhất cho công cụ cào dữ liệu Net::Whois
Lấy nhà đăng ký tên miền
Khi phản hồi qua WHOIS, trường $p1.data chứa văn bản; khi qua RDAP — chứa JSON. Để lấy nhà đăng ký trong cả hai trường hợp, hãy thêm hai Trình tạo kết quả.
Thêm Result Builders (Trình tạo kết quả) và trong danh sách thả xuống chọn nguồn: $p1.data. Chọn loại: RegEx Match. Trong trường RegEx điền: Registrar:\s*(.+) và lưu vào biến registrarwhois.
Thêm lại Result Builders (Trình tạo kết quả) và trong danh sách thả xuống chọn nguồn: $p1.data. Chọn loại: RegEx Match. Trong trường RegEx điền: "entities"[\s\S]+?"vcardArray"[\s\S]+?"fn"[\s\S]+?"text"[\s\S]+?"([^"]+?)" và lưu vào biến registrarrdap.
Thêm vào Result format (Định dạng kết quả): [% IF registrarrdap == 'none' %]$query - $registrarwhois[% ELSE %]$query - $registrarrdap[% END %] — nếu RDAP không tìm thấy tên (registrarrdap bằng none), giá trị từ WHOIS sẽ được xuất ra, ngược lại là từ RDAP.
Tải xuống ví dụ
eJyVVNtO20AQ/RVrFEQoJioPfbGEqkATiSpNKAH1wU6lVTxJt6x3ze46EEX5987Y
jh1TpKpP9lzPmdvuYIPWSaMhugzBC/fk7iw69A6ieAd5+Q8RWFxL562wEEIurKMg
cohhij6Kfvwy0pEhxZUolIdwB36bI4UZym5limSUKckrYzPhKWnpBhuhCnaLT4Lb
cdBg2FTkwdVVcKqNxtPgZNF7LtBug4ug1/i8MCbFjSbz0fsenIUdpl/InmjYLxYh
VNBuXPIg5F5+OaiLbIxzscEHw2ylwlY9JmkqMubbS4VHtg6qgvpnA//KGUSaSk/d
FKpC4Ca1qI9aPnO9K6EchsCUJbqxNRnl9FhmKOs40IuhqgsoR1EGf69imhyOuI4F
MUnfWqRHK7yxs5wJkX4HRg+VmuAGleuQ2F4XUqU00uGKgm7rwPddZn/l2Df1HUPR
4F8scWiylNL17FsblZqJWTd2JTPpSeFuTKGp9o8hPCHmh57B1FB3MmOxQakDa3Ba
2xw1L1k7smHeqjpVdMZypNyBM4VdEl5M+DRlwa2vl5k2C1/L5PyN4P6waVGSuA/9
wfnZwfhQBZDoDU+xu7Ww2If/BZQAak97hS6BmLCSZL44/5zAZilsOrRWbLv6le7K
vFpdTT/+mQD9nSXwT858R0SZ6C2NXsn1rL7pQxML/UDPxkzfmCxXyBPXhVK0sA7v
28sZunpBWWhn9zb4poQgHs1bQnSMcl/nFbfcSmL3iTlntGPHqHXKpVDq8X5ybOFA
500+0yNr3yx2eTIgLqpHbbCkW2wvs6TKRS7p3teGDpEk7kT9BDZP5Y7W+be7q7Qc
Vur2fwBx19yZ
Các cài đặt có thể có
| Tham số | Giá trị mặc định | Mô tả |
|---|---|---|
| Recursive query | ☐ | Cho phép nhận phiên bản WHOIS mở rộng |
| WHOIS server | Cho phép chỉ định máy chủ WHOIS riêng | |
| RDAP server | Cho phép chỉ định máy chủ RDAP riêng | |
| Checking by DNS | ☑ | Cho phép kiểm tra tên miền đã đăng ký hay chưa dựa trên sự tồn tại của IP theo tên miền |
| Checking domains by DNS record | ☑ | Kiểm tra IP, nếu tìm thấy trạng thái ALLOCATED thì xác định tên miền đã đăng ký, nếu tùy chọn bị tắt thì việc kiểm tra IP sẽ không diễn ra |
| Force DNS check for not found domains | ☑ | Bắt buộc kiểm tra nếu tên miền được xác định là chưa đăng ký |