1. 程式人生 > >用API獲取IP地址

用API獲取IP地址

  • 設計蜂巢IP地址查詢介面:http://www.hujuntao.com/api/ip/ip.php
  • 騰訊IP地址查詢介面:http://fw.qq.com/ipaddress
  • 新浪IP地址查詢介面:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js
  • 搜狐IP地址查詢介面:http://pv.sohu.com/cityjson
  • 谷歌IP地址查詢介面:http://j.maxmind.com/app/geoip.js
  • 有道IP地址查詢介面:http://www.youdao.com/smartresult-xml/search.s
  • 1616 IP地址查詢介面:http://w.1616.net/chaxun/iptolocal.php
  • 126 http://ip.ws.126.net/ipquery
  • hao123 http://app.hao123.com/ipquery/getcity.php?rtype=2

設計蜂巢介面呼叫方法

API請求地址 : http://www.hujuntao.com/api/ip/ip.php?引數

引數說明:

  • IP : IP地址 可選
  • format : 輸出格式 json 可選 預設為JS

JSON呼叫示例:
請求地址:http://www.hujuntao.com/api/ip/ip.php?callback=jQuery17107324279078748077_1327024991339&format=json&_=1327024991363

{
“ip”: “117.89.35.58″,
“province”: “\u6c5f\u82cf”,
“city”: “\u5357\u4eac”
}

騰訊介面呼叫方法

  1. <script src="http://fw.qq.com/ipaddress"></script>
  2. <script type="text/javascript">
  3. //反回格式如下:
  4. //var IPData = new Array("117.89.35.98","","江蘇省","南京市");
  5. console.log(IPData[0]+','+IPData[2]+','+IPData[3]) //117.89.35.98,江蘇省,南京市
  6. </script>
該方法已經不可用,訪問http://fw.qq.com/ipaddre顯示“The page you are looking for is temporarily unavailable.Please try again later.”。騰訊對Referer做了判斷,雖然可以通過PHP偽造Referer,但是實際測試中獲得的是伺服器的IP地址而不是客戶端的IP地址。我們一起鄙視一下騰訊。

新浪介面呼叫方法

  1. <script src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js"></script>
  2. <script type="text/javascript">
  3. //format引數設定返回格式 js/json
  4. //ip 要查詢IP 可選
  5. //反回格式如下:
  6. //var remote_ip_info = {"ret":1,"start":"117.89.35.0","end":"117.89.35.255","country":"\u4e2d\u56fd","province":"\u6c5f\u82cf","city":"\u5357\u4eac","district":"\u767d\u4e0b","isp":"\u7535\u4fe1","type":"","desc":""};
  7. console.log(remote_ip_info["country"]+','+remote_ip_info["province"]+"省"+','+remote_ip_info["city"]+"市")//中國,江蘇省,南京市
  8. </script>

搜狐介面呼叫方法

  1. <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
  2. <script type="text/javascript">
  3. //預設為GBK可通過ie引數設定編碼
  4. console.log(returnCitySN["cip"]+','+returnCitySN["cname"])//117.89.35.98,江蘇省南京市
  5. </script>

谷歌介面呼叫方法

據說是谷歌的,不知道是不是真的。

  1. <script src="http://j.maxmind.com/app/geoip.js"></script>
  2. <script type="text/javascript">
  3. console.log(geoip_country_name()+','+geoip_region_name()+','+geoip_city())//China,Jiangsu,Nanjing
  4. </script>

有道介面呼叫方法

呼叫介面示例:http://www.youdao.com/smartresult-xml/search.s?type=ip&q=123.233.157.9

返回XML資料

<?xml version="1.0" encoding="gbk"?>
<smartresult>
<product type="ip">
<ip>123.233.157.9</ip>
<location>山東省濟南市 網通</location>
</product>
</smartresult>

或者

http://www.youdao.com/smartresult-xml/search.s?jsFlag=true&keyfrom=163.com&event=fYodaoCallBack&type=ip&q=192.168.1.1

返回JSON資料

fYodaoCallBack(1, {‘product’:'ip’,'ip’:’192.168.1.1′,’location’:'區域網 對方和您在同一內部網’} , ”);

單獨寫一個新浪的

  1. // 新浪根據ip獲取地址
  2.    var province = '' ;  
  3.    var city = '' ;  
  4.   jQuery.getScript("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js",function(){  
  5.      province = remote_ip_info["province"];  
  6.      city = remote_ip_info["city"];    
  7.     }) ;   
在加個方法返回當前省份的省會或者直轄市名稱 //判斷當前城市的省會  function SwitchCity(province) {      var city = "";      if (province.indexOf("河北") != -1) {          city = "石家莊";          return city;      } else if (province.indexOf("山西") != -1) {          city = "太原";          return city;      } else if (province.indexOf("遼寧") != -1) {          city = "瀋陽";          return city;      } else if (province.indexOf("吉林") != -1) {          city = "長春";          return city;      } else if (province.indexOf("山西") != -1) {          city = "太原";          return city;      } else if (province.indexOf("黑龍江") != -1) {          city = "哈爾濱";          return city;      } else if (province.indexOf("江蘇") != -1) {          city = "南京";          return city;      } else if (province.indexOf("浙江") != -1) {          city = "杭州";          return city;      } else if (province.indexOf("福建") != -1) {          city = "福州";          return city;      } else if (province.indexOf("江西") != -1) {          city = "南昌";          return city;      } else if (province.indexOf("山東") != -1) {          city = "濟南";          return city;      } else if (province.indexOf("河南") != -1) {          city = "鄭州";          return city;      } else if (province.indexOf("廣東") != -1) {          city = "廣州";          return city;      } else if (province.indexOf("湖南") != -1) {          city = "長沙";          return city;      } else if (province.indexOf("海南") != -1) {          city = "海口";          return city;      } else if (province.indexOf("四川") != -1) {          city = "成都";          return city;      } else if (province.indexOf("貴州") != -1) {          city = "貴陽";          return city;      } else if (province.indexOf("雲南") != -1) {          city = "昆明";          return city;      } else if (province.indexOf("陝西") != -1) {          city = "西安";          return city;      } else if (province.indexOf("臺灣") != -1) {          city = "臺北";          return city;      } else if (province.indexOf("內蒙古") != -1) {          city = "呼和浩特";          return city;      } else if (province.indexOf("廣西") != -1) {          city = "南寧";          return city;      } else if (province.indexOf("西藏") != -1) {          city = "拉薩";          return city;      } else if (province.indexOf("寧夏") != -1) {          city = "銀川";          return city;      } else if (province.indexOf("新疆") != -1) {          city = "烏魯木齊";          return city;      } else if (province.indexOf("上海") != -1) {          city = "上海";          return city;      } else if (province.indexOf("重慶") != -1) {          city = "重慶";          return city;      } else if (province.indexOf("北京") != -1) {          city = "北京";          return city;      } else if (province.indexOf("天津") != -1) {          city = "天津";          return city;      }      return city;  }