如何快速判斷一個 IP 是否屬於中國大陸?
不一定要求很准,不是萬不得已不要使用地址資料庫。
如果要做的特別講究的話
首先你需要從官方獲取一份分配給中國的IP數據,Apanic提供了每日更新的亞太地區IPv4,IPv6,AS號分配的信息表,訪問url是http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
該文件的格式與具體內容參加
ftp://ftp.apnic.net/pub/apnic/stats/apnic/README.TXT這個組織是APNIC(Asia Pacific Network Information Center),就是IANA下面管亞洲的所謂的官方。有了這個連接是不停更新的。所以你可以自己維護一個邏輯,定時刷新自己的資料庫,然後拿IP去比較。一共有十幾萬條表象,最簡單的就是內存中做個Map,最好是RangeMap,這樣就能快速的進行查詢了。
curl "http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest" | grep ipv4 | grep CN | awk -F| "{ printf("%s/%d
", $4, 32-log($5)/log(2)) }" &>china_ip.txt
我正在寫後續
用python調用網站的介面。
api_url = "http://www.ip.cn/%s" % ip
獲得返回的網頁
text = driver.find_element_by_xpath("//div[@id="result"]").text
在把結果解析出來就可以了
@ade34 提到的方法可行。
這裡有份python實現: http://xixitalk.github.io/blog/2013/03/11/func-is-china-ip/
這裡有份java實現: 如何判斷是否為中國IP | 天涯島
像上面的朋友說的,你可以調用網站介面,然後用正則匹配到地區即可!
比如:
http://www.ip138.com/ips138.asp?ip=196.24.149.98action=2把其中的196.24.149.98換成你的ip然後訪問獲得結果,即可!推薦閱讀:
※localhost是不經過網卡傳輸的,而127.0.0.1則要通過網卡傳輸的,這種說法正確嗎?
※如何看待高精度IP數據?
※在公司的無線區域網必須手動設置IP地址和DNS地址,而回家後的無線區域網自動分配以上地址才可以上網?
※BT和PT有什麼區別?
※請問從哪裡可以下載所有域名與IP相對應的DNS表?