為了實現(xiàn)這個 whois 小工具,查了足足有兩個小時的資料,網(wǎng)上有很多種 whois查詢 的php實現(xiàn),大致實現(xiàn)的思路無不例外以下幾種:
1.通過http調(diào)用 xinnet或者是萬網(wǎng)的 whois查詢接口查詢,而后將結(jié)果輸出到頁面,就是這種最簡單的,通過間接調(diào)用新網(wǎng) whois查詢接口的實現(xiàn)方法
2.直接通過讀取 whois服務(wù)器,實現(xiàn)域名的查詢。根據(jù)被查詢域名的后綴名,訪問不同的 whois服務(wù)器,查詢結(jié)果
對應(yīng)的 域名后綴 -> whois 服務(wù)器 的映射關(guān)系大致如下:
'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',
對于這種方法,雖然實現(xiàn)起來很簡單,但是對于在Godaddy.com平臺或者是國內(nèi)的廈門易名網(wǎng)注冊的 域名來說,只能查到一個大概,而無法查到具體真正的 domain 的信息,如下:
在godday注冊的域名的whois信息
在廈門易名網(wǎng)注冊的域名的whois信息
所以,無論上面兩種方法,都不能比較完善的實現(xiàn) whois 的查詢功能。
這時候 Jay感覺到,僅僅是 whois 這件小事,也需要用牛刀,我們需要一個完善 whois查詢組件。
此時的 Jay立刻打開 google.com,搜索 php whois,果不其然!
在 百度中,搜了半天,出來的都是一些外門奇方,google一搜,就立馬出現(xiàn)一套完整的 whois client 的 php 實現(xiàn),項目名稱就叫《phpWhois》,項目主頁:http://www.phpwhois.org/,于是立馬 download 下來,根據(jù)文檔中的 demo,很快就把 whois 的查詢功能實現(xiàn)了。
下面是調(diào)用 phpWhois 組件,實現(xiàn) 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>標簽的作用是定義預(yù)格式化的文本,就是將 whois 查詢到的 raw text 按原來的文本排版格式直接輸出。
DomainName: lxfq.cn ROID:20130114s10001s62921725-cn DomainStatus: ok Registrant ID:000046dbRegistrant:黎軍RegistrantContactEmail:2673732891@qq.com SponsoringRegistrar:北京網(wǎng)尊科技有限公司NameServer: ns1.vtopchina.cn NameServer: ns2.vtopchina.cn RegistrationDate:2013-01-1404:02:16ExpirationDate:2014-01-1404:02:16 DNSSEC:unsigned
總結(jié):
whois雖然僅僅只是一種最簡單的基于 tcp 的查詢協(xié)議,但是很多工作,即便我們實現(xiàn)起來也非常簡單,如果有現(xiàn)成的 php組件可以用的話,就應(yīng)該盡量避免自己重復(fù)發(fā)明一個輪子。倒不是說不可以,只是重新實現(xiàn)一種協(xié)議,即便是最簡單的那種,也會遇到很多的例外。
就像 phpWhois 組件,爭對godaddy類似這種的例外情況,就處理的非常好。
所以,專業(yè)的事情,還是讓專業(yè)的開源組件去實現(xiàn)吧!