之前為了做 《plog.cn 1-6位 超期待刪 短域名 篩查工具》,特地在 plog.cn 服務器上部署了一個 whois 查詢小工具。PS:使用方法 http://plog.cn/whois/yourdomain.com
為了實現這個 whois 小工具,查了足足有兩個小時的資料,網上有很多種 whois查詢 的php實現,大致實現的思路無不例外以下幾種:
1.通過http調用 xinnet或者是萬網的 whois查詢接口查詢,而后將結果輸出到頁面,博客 http://blog.163.com/mengqing_dao/blog/static/133520513201162634227882/ 所描述的方法,就是這種最簡單的,通過間接調用新網 whois查詢接口的實現方法
2.直接通過讀取 whois服務器,實現域名的查詢。文章 http://dev.meettea.com/show-78-1.html 闡述的方法,就是根據被查詢域名的后綴名,訪問不同的 whois服務器,查詢結果
對應的 域名后綴 -> whois 服務器 的映射關系大致如下:
- 'com'=>'whois.internic.net',
- 'net'=>'whois.internic.net',
- 'org'=>'whois.pir.org',
- 'asia'=>'whois.crsnic.net',
- 'cn'=>'whois.cnnic.net.cn',
- 'cc'=>'whois.nic.cc',
對於這種方法,雖然實現起來很簡單,但是對於在Godaddy.com平台或者是國內的廈門易名網注冊的 域名來說,只能查到一個大概,而無法查到具體真正的 domain 的信息,如下:
在godday注冊的域名的whois信息
在廈門易名網注冊的域名的whois信息
所以,無論上面兩種方法,都不能比較完善的實現 whois 的查詢功能。
這時候 Jay感覺到,僅僅是 whois 這件小事,也需要用牛刀,我們需要一個完善 whois查詢組件。
此時的 Jay立刻打開 google.com,搜索 php whois,果不其然!
在 百度中,搜了半天,出來的都是一些外門奇方,google一搜,就立馬出現一套完整的 whois client 的 php 實現,項目名稱就叫《phpWhois》,項目主頁:http://www.phpwhois.org/ ,於是立馬 download 下來,根據文檔中的 demo,很快就把 whois 的查詢功能實現了。
下面是調用 phpWhois 組件,實現 whois信息查詢的核心代碼部分:
<pre><?php include('whois_inc/whois.main.php'); $whois =newWhois(); $result = $whois->Lookup($domain); $output = implode("\n", $result['rawdata']); echo $output;?></pre>
在這里<pre></pre>標簽的作用是定義預格式化的文本,就是將 whois 查詢到的 raw text 按原來的文本排版格式直接輸出。
DomainName: lxfq.cn ROID:20130114s10001s62921725-cn DomainStatus: ok Registrant ID:000046dbRegistrant:黎軍RegistrantContactEmail:2673732891@qq.com SponsoringRegistrar:北京網尊科技有限公司NameServer: ns1.vtopchina.cn NameServer: ns2.vtopchina.cn RegistrationDate:2013-01-1404:02:16ExpirationDate:2014-01-1404:02:16 DNSSEC:unsigned
總結:
whois雖然僅僅只是一種最簡單的基於 tcp 的查詢協議,但是很多工作,即便我們實現起來也非常簡單,如果有現成的 php組件可以用的話,就應該盡量避免自己重復發明一個輪子。倒不是說不可以,只是重新實現一種協議,即便是最簡單的那種,也會遇到很多的例外。
就像 phpWhois 組件,爭對godaddy類似這種的例外情況,就處理的非常好。
所以,專業的事情,還是讓專業的開源組件去實現吧!