- 程式名稱:RedSnow Utility - NSLOOKUP
- 版本編號:1.00 (Freeware 1.00)
- 最初設計:1.00 版:2000/08/08
- 最後修改:2000/08/08
- 作者姓名:RedSnow WorkRoom - 傅鴻銘
- 版權宣告:
本程式為傅鴻銘個人作品,按照中華民國法律於程式完成並公開發表之時,即擁有著作權等相關權利,他人不得侵犯。
- 作者聲明:
本 (1.00) 版 NSLOOKUP 為免費共享軟體,任何人均可在不違反法律及不損害本人權益之前提下免費合法的使用,本聲明可視為作者對使用者合法免費使用的保障與授權聲明,但如有違犯下列事項者將不受本聲明之保障,作者並保留所有法律追訴權利:
- 不得利用本程式進行商業行為,包含灌錄至儲存媒體上販售或隨商品附贈給客戶,如有商業用途須取得作者授權。
- 不得修改程式內部表頭部分之字樣與本程式說明文件的內容。
- 傳播本程式者有義務讓被傳播對象瞭解作者聲明,以免被傳播者侵犯作者權益。
- 緣起:
對於網路較為熟悉的網友們大概都知道 UNIX 或者是 UNIX-Like 系統上有一支名為 nslookup 的程式,而 Microsoft 的視窗系統也在擁有網路功能後,將各個相關工具補足了,其中也有一支網路工具程式名為 nslookup.exe,
這支程式是一支分析工具,它可以顯示出網域名稱系統 (DNS) 名稱伺服器中的一些資訊,這支程式有許多不同的參數可供設定,以便取得不同的一些資訊,這個部分並非本文所要介紹的重點,因此請有興趣的網友們自行參考視窗系統的 HELP,
前述程式最重要且最為常用的功能即是:將一組 IP 位址的網域名稱顯示出來,或者將一個網域名稱的 IP 位址顯示出來,而本程式要做的也就是這兩個動作。
在使用 Perl 語言所撰寫的 CGI 程式中,我們通常是使用 REMOTE_HOST 以及 REMOTE_ADDR 這兩個環境變數來取得連結到自己網頁者(訪客)的上線位址,按照理論上來講使用 REMOTE_HOST 這個環境變數可以取得訪客的主機名稱,但是很不幸的,
有非常多的主機並未將這項訊息傳送出來,所以大部分的程式都僅能透過 REMOTE_ADDR 這個環境變數來取得訪客的 IP 位址而已,資深的玩家或許在看到一組 IP 位址時,對其能有那麼一點點的意義,但是對於一般的網友,我想就實在沒有什麼意義了,
那麼若是能有方法將 IP 位址轉換成網域名稱的話,那將會方便的多了,但是 Perl 語言並未直接提供相關的函數可供使用,因此作者設法上網查詢相關資料,原先總是不得要領,而後來雖然找到 CPAN 有提供一些模組可供使用,但是那些模組實在太大、太繁瑣了,
我不是很願意去用那些模組,所以我將其擱置了蠻長的一段時間,後來我繼續透過網路來找尋相關資料來參考並做了一些測試之後,還是解決了這個問題,目前要作到查詢網域名稱動作的核心部分,僅僅不到十行的程式碼而已,如何,神奇嗎?
老實講一點都不神奇,因為這是花費了我不少的時間來找資料參考,以及多方測試之後才得來這樣精簡的程序的,所以囉,好好享用吧∼
- 安裝 NSLOOKUP:
本程式的安裝很簡單,只要將 NsLookup.zip 解壓縮到任何一個目錄內,然後利用文書處理程式對 nslookup.pl 檔作一些適當的修改,然後 FTP 到網頁所屬的 cgi-bin 目錄內就可以了,細部說明請閱讀下一段。
- 設定 NSLOOKUP 的方法:
- 檢查 nslookup.pl 程式的第一行 Perl 解譯程式的路徑及名稱是否符合您網頁所屬站台的規定,若不符合站台規定請修改該行設定,如果您是 TacoMax 的居民,設定應該如下:
#!/usr/local/bin/perl
附註:
紅雪網頁 "FAQ 問答集" 中的 "CGI Perl" 項目中,整理有部分站台的相關設定資訊,您可以逕自前往參考。
- 將程式(nslookup.pl)使用 FTP 程式並以 ASCII 模式上載到網站上:
nslookup.pl → 您的帳號目錄內的 cgi-bin 次目錄
- 更改程式檔案的屬性:
nslookup.pl 屬性設為 700。
注意:某些站台的屬性要求有不一樣,應以各站台的規定為準。
- 使用 NSLOOKUP 的方法:
- 以 TacoMax 為例,您可以設定呼叫本程式的網址路徑如下:
http://tacocity.com.tw/cgi-bin/cgiwrap/urid/nslookup.pl
- 上述的呼叫路徑可以設在選單的連結項目上,或者是某個頁面的點選項目中,例如:
<A HREF="http://tacocity.com.tw/cgi-bin/cgiwrap/urid/nslookup.pl">執行程式</A>
- 本程式執行時會在瀏覽器輸出一個已經設置好的 HTML 頁面,並使用 FORM 物件來設好一個輸入欄位,您可以在該欄位內輸入欲查詢網域名稱的 IP 位址,然後點選「開始查詢」的按鈕項目即可。
附註:
- 若您是 TacoMax 的居民,請將上述有 urid 字樣的位置改為您在 TacoMax 使用的帳號。
- 至於使用其它站台的網友們,可以在紅雪網頁的選單找尋 "FAQ 問答集" 的 "CGI Perl" 項目,然後參考其內一份有關其它支援 CGI 站台的設定資訊。
- 寫給自行設計或修改程式的網友們:
本程式係以含有完整操作介面的方式撰寫的,但是您可以在程式中找到標示著「核心程序」字樣的位置,然後將程式碼剪貼到需要以 IP 位址來取得網域名稱的程式內,這樣子就可以讓您其它的程式「起死回生」,另有一番新生命啦∼
有那些地方可以使用到這項功能呢?以下是我個人的經驗,在此一併提供出來供各位參考一下:
- 訪客參觀網頁時的紀錄資料 (log file),若是僅紀錄 IP 位址,則這份紀錄資料的作用並不大,若是能紀錄下網域名稱,則查閱起來就比較有意義啦。
- 您可以依據含有網域名稱的紀錄資料,來對各個地區的訪客數量作一個統計,這樣就可以達到一些專門提供流量分析的網站所做的動作了,換句話來講,藉由本程式提供的程序,您將可以對訪客資料作相關分析(名稱結尾為 .com、.net、.tw....等),而自行撰寫流量分析程式了。
- 若是碰到有跑到您網頁上搗蛋者,您可以查閱紀錄資料,以便知道搗蛋者是由哪裡上網的,必要時可以依據網域名稱來聯絡該網站追查「元兇」。
- 大部分正規的站台都會有正式的網域名稱,因此若有特殊必要時,可以在程式中對網域名稱作一檢查,然後針對沒有網域名稱者,或是某些網域名稱者予以封殺,甚至有些透過 Proxy Server 連結過來的(大部分此類主機的域名會含有 proxy 字樣),一樣可以讓對方站在門外喝西北風。
- 撰寫本文件時,暫時只有想到上列的數項用途,您若是發現有更好或更多的用途,請您不吝賜教,到留言板留言或寫信告知我都很歡迎,若有不錯的想法我會陸續整理到本文件中供其他網友們參考。
- 其它事項:
- 使用本程式需在 Web Server 的 CGI 以及被查詢的主機能提供正常服務與連結時,才能發揮適切的作用,如果 CGI 不能運作,則本程式理所當然無法執行,當然啦!您在執行本程式時也必須是在連線的狀態下才行得通,否則是無法對任何主機作查詢動作的。
- 雖然本程式提供了 IP 位址與網域名稱的雙向查詢功能,但是因為某些 IP 位址並未設定網域名稱,所以仍會有些 IP 位址是無法傳回網域名稱的,您在使用本程式時必須對此有所認知。
- 使用本程式時可能會因為網路效率而影響取得資訊的時間,而且當被查詢的主機、IP 位址是不存在或是故障的時候,程式的執行時間亦會比較長一些,您在使用之前亦必須對此有所認知。
- 如果您想讓本程式有更多的網友們能享用,請連結至紅雪網頁的首頁,以便讓網友們獲得的是完整及最新的相關資訊。
- 如果您對本程式有任何意見或想給作者一點鼓勵,歡迎您到作者網頁留言或來信指教。
聯絡作者:redsnow@pmail.net
作者網頁:http://www.tacocity.com.tw/redsnow/index.htm
本文撰寫於中華民國89年08月08日 修改於中華民國89年08月08日