互聯網把全世界的網民聯繫起來,從地球的一端到達另一端只是數以秒計的時間,似乎大家所處的地理位置在現代的網絡世界已經沒有意義。但實際上我們仍有很多機會希望知道我們的訪客來自哪兒:

  • 中、港、台三地的網友誰對我的網站更有興趣?
  • 來自北京的訪客多還是台北的訪客多?
  • 我應該把這位訪客重定向到哪一個鏡象網站?
  • 最近那個該死的黑客是哪個國家的人?
  • 不知這位妹妹是不是華人呢?
  • ......

要找出訪客的實際地理位置,不外乎以下幾個方法:

  1. 直接問訪客。弄一個下拉選單給訪客自行剔選,夠簡單了,但是訪客輸入的資料可靠嗎?拼法相似的名稱固然容易令人搞錯,大部分人更可能漫不經心地隨便挑選一個充數,反正答得是否正確你也沒法查證。
  2. 使用瀏覽器的資料。瀏覽器一般都會把訪客的偏好語言送到伺服器,例如 zh-tw、zh-cn、en-us、en-gb 等,語言名稱的最後兩個英文字母便是國家的代號,很多預先安裝了操作系統的電腦在出售前均已經把偏好語言設定好,毋需用家費心。但是問題仍未完全解決,首先並非所有偏好語言均有國家代號綴尾,此外,一個人的偏好語言與他所處身的國家並無絕對關係,台灣人可以在美國上網並且把偏好語言設定為 zh-tw,而且偏好語言很容易在瀏覽器上更改,故此這個方法仍是不能滿意。
  3. 領域名稱反查。利用領域名稱反查技術,把訪客的 IP 地址翻譯成領域名稱,擷取名稱的最後部份便是國家代號了,例如 IP 是 140.112.8.228,調用 Pear 中的 Net::DNS 便可以反查出領域名稱是 eddbB.cc.ntu.edu.tw,這樣便知道這位訪客來自台灣。IP 地址應該不會出錯了吧?反查的結果所以也準確了吧?不!首先在網絡上有很多以 .net、.com、.org、.tv、.biz 等等結束的領域名稱,我們根本無法知道它們的所在地。此外,一個 IP 地址可能對應到很多個領域名稱,這種情況下我們無法知道訪客從哪裡來。
  4. 使用 GeoIP 的數據庫。有一間叫作 MaxMind 的公司製作了一個從 IP 對應地理位置的數據庫,國家層面的準確率可達 99%,城市層面的準確率亦達 95%,在美國境內方圓 25 英里的準確率達到 80%,在其他國家則低得多。雖然這是一項收費服務,但他們提供了一個準確率輕微低一點的免費版本 GeoLite,可以用來反查訪客所在的國家和城市,支援多種語言包括 PHP,安裝過程只需把數據庫及程式庫(開放原始碼)抄到網頁的目錄中讓 PHP 程式調用即可。使用這個版本可以查出 php-mag.net(網上知名 PHP 收費雜誌)原來在德國,hkpug.net(香港 PHP 用家社區)和 twpug.net(Taiwan PHP User Group)都不在自己的國家,兩者的網站都在美國.......

知道了訪客來自何方,我們可以把他們分流到適當的鏡象網站,也可以在網頁上顯示當地的日期時間,或者當地的天氣資料,分析訪客的分布統計資料當然也是重要的應用之一。

你從甚麼地方來?以後再不是迷團了。 

 


創作者介紹

經驗交流分享與備忘

Frank 發表在 痞客邦 PIXNET 留言(0) 人氣()