通過IP地址獲取對應的地區信息通常有兩種方法:
1)自己寫程序,解析IP對應的地區信息,需要數據庫。
2)根據第三方提供的API查詢獲取地區信息。
第一種方法,參見文本《通過純真IP數據庫獲取IP地址對應的地區信息》,這種方法的維護代價較高,而且對自己的服務器有一定的壓力。
隨着技術的開放,第三方已經逐漸免費開放相應的API。經過測試,目前網易和新浪提供的較為穩定易用。
1)新浪IP地址查詢API接口
新浪的IP地址查詢接口:
http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=IP地址
測試用例:
http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=115.156.238.114
返回以下信息:
- var remote_ip_info = {"ret":1,"start":"115.156.128.0","end":"115.156.255.255","country":"\u4e2d\u56fd","province":"\u6e56\u5317","city":"\u6b66\u6c49","district":"","isp":"\u6559\u80b2\u7f51","type":"\u5b66\u6821","desc":"\u534e\u4e2d\u79d1\u6280\u5927\u5b66\u4e1c\u6821\u533a"};
文字經過utf-8編碼,分別對應不同的信息。
可以通過javascript跨域直接調用,如(使用jquery):
- $.getScript('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip='+ip, function(_result){
- if (remote_ip_info.ret == '1'){
- alert('IP 詳細信息:', 'IP:'+ip+'<BR>國家:'+remote_ip_info.country+'<BR>省份:'+remote_ip_info.province+'<BR>城市:'+remote_ip_info.city+'<BR>區:'+remote_ip_info.district+'<BR>ISP:'+remote_ip_info.isp+'<BR>類型:'+remote_ip_info.type+'<BR>其他:'+remote_ip_info.desc);
- } else {
- alert('錯誤', '沒有找到匹配的 IP 地址信息!');
- }
2)網易有道IP地址API接口
查詢IP地址:
http://www.youdao.com/smartresult-xml/search.s?type=ip&q=IP地址
舉例:
http://www.youdao.com/smartresult-xml/search.s?type=ip&q=115.156.238.114
返回xml文本信息:
- <?xml version="1.0" encoding="gbk"?>
- <smartresult>
- <product type="ip">
- <ip>115.156.238.114</ip>
- <location>湖北省武漢市 教育網</location>
- </product>
- </smartresult>
3)淘寶IP地址庫API接口
1. 請求接口(GET):
http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]
2. 響應信息:
(json格式的)國家 、省(自治區或直轄市)、市(縣)、運營商
3. 返回數據格式:
{"code":0,"data":{"ip":"210.75.225.254","country":"\u4e2d\u56fd","area":"\u534e\u5317",
"region":"\u5317\u4eac\u5e02","city":"\u5317\u4eac\u5e02","county":"","isp":"\u7535\u4fe1",
"country_id":"86","area_id":"100000","region_id":"110000","city_id":"110000",
"county_id":"-1","isp_id":"100017"}}
其中code的值的含義為,0:成功,1:失敗。
"region":"\u5317\u4eac\u5e02","city":"\u5317\u4eac\u5e02","county":"","isp":"\u7535\u4fe1",
"country_id":"86","area_id":"100000","region_id":"110000","city_id":"110000",
"county_id":"-1","isp_id":"100017"}}
其中code的值的含義為,0:成功,1:失敗。
訪問限制:為了保障服務正常運行,每個用戶的訪問頻率需小於10qps。
詳細請參看API主頁:http://ip.taobao.com/
4)太平洋IP地址庫API接口
http://whois.pconline.com.cn/?ip=[ip地址字符串]
調用方法非常豐富,提供多種JS嵌入調用。
另外,還有Google,搜狐,騰訊等均提供相應接口,請參看相關資料,這里不再贅述。