判斷一個網站在國內還是國外

如何判斷一個網站在國內還是國外,對於不缺錢,並且對性能沒有那麼高的要求的場景下,直接使用各個地圖廠商提供的ip轉位置的服務非常簡單且方便。但如果是實現一個更免費而高效的方案的話,就得自己實現了,網上有不少文章介紹他們,一般還是如下思路:

  1. 通過DNS解析網站IP
  2. 通過國內IP範圍判斷出是否是國內

第一步是網絡標準,可由DNS相關api完成。而第二步沒有啥成熟而可靠的方案,網上也有不少文章在討論他們:

一般的做法是維護一個IP範圍和地址對應表。然後根據算法來實現,開源實現也有不少,一個比較出名的是Ip2region。網上也有不少文章對這個庫做了深入的解析:深入淺出之ip2region實現

如果自己要實現一個也不難,主要就兩個技術點:

  1. 如何獲取國內的IP範圍
  2. 如何快速判斷某個IP是否在IP範圍內

問題1不難,本身國內的IP是公開的,可以在APNIC的網站上下載。網上也有人做了進一步的整理:china_ip_list.txt

問題2本身也不難,和普通的路由匹配算法是已知的,但路由匹配的數據結構和算法一般程序員應用的並不多,這裏我就簡單的列舉一下好了。

緩存:

有了前面的知識點後,基本上已經可以實現一個快速的判斷IP是否是國內IP的算法,如果想進一步提升效率,緩存還是必不可少的。本身ip是否在國內是幾乎很少變化的,也是非常適合緩存的場景。考慮到ip範圍可能比較大,布隆過濾器是一個不錯的選擇。

小結:

本文簡單的介紹了下判斷一個網站在國內還是國外的基本算法和實現方案。我這裏只介紹了最基礎懶得場景,只判斷是國內還是國外,實際應用中還涉及到進一步細化到具體位置,技術思路也類似,這裏就不進一步討論了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章