查询访问网站用户的IP(搜狐接口)
1、搜狐IP地址查询接口(默认GBK):http://pv.sohu.com/cityjson
2、搜狐IP地址查询接口(可设置编码):http://pv.sohu.com/cityjson?ie=utf-8
接口返回的是一个JS对象:
var returnCitySN = {"cip": "119.130.228.18", "cid": "440100", "cname": "广东省广州市"};
代码:
<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
<script type="text/javascript">
alert("IP地址是:" + returnCitySN['cip'] + " " + "城市名字:" + returnCitySN['cname']);
</script>
查询IP信息(淘宝)
根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家、省、市和运营商。
淘宝IP地址库http://ip.taobao.com提供了IP区域信息的查询,并提供了接口
接口:http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]
例如:http://ip.taobao.com/service/getIpInfo.php?ip=27.211.168.14
返回结果:
{
"code" : 0,
"data" : {
"area" : "",
"area_id" : "",
"city" : "济南",
"city_id" : "370100",
"country" : "中国",
"country_id" : "CN",
"county" : "XX",
"county_id" : "xx",
"ip" : "27.211.168.14",
"isp" : "联通",
"isp_id" : "100026",
"region" : "山东",
"region_id" : "370000"
}
}
补充:其实还有一个隐蔽的接口没有展示出来:
通过http://ip.taobao.com/service/getIpInfo2.php?ip=myip或http://ip.taobao.com/service/getIpInfo.php?ip=myip
可以快速获取用户自己的IP信息
使用java获取ip信息:
package com;
import net.sf.json.JSONObject;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class GetAddressByIp {
public static void main(String[] args) {
String resout = "";
try {
String str = getJsonContent("http://ip.taobao.com/service/getIpInfo.php?ip=" + "162.128.125.6");
System.out.println(str);
JSONObject obj = JSONObject.fromObject(str);
JSONObject obj2 = (JSONObject) obj.get("data");
String code = obj.get("code").toString();
if (code.equals("0")) {
resout = obj2.get("country") + "--" + obj2.get("area") + "--" + obj2.get("city") + "--"
+ obj2.get("isp");
} else {
resout = "IP地址有误";
}
} catch (Exception e) {
e.printStackTrace();
resout = "获取IP地址异常:" + e.getMessage();
}
System.out.println("result: " + resout);
}
public static String getJsonContent(String urlStr) {
try {// 获取HttpURLConnection连接对象
URL url = new URL(urlStr);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
// 设置连接属性
httpConn.setConnectTimeout(3000);
httpConn.setDoInput(true);
httpConn.setRequestMethod("GET");
// 获取相应码
int respCode = httpConn.getResponseCode();
if (respCode == 200) {
return ConvertStream2Json(httpConn.getInputStream());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
private static String ConvertStream2Json(InputStream inputStream) {
String jsonStr = "";
// ByteArrayOutputStream相当于内存输出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
// 将输入流转移到内存输出流中
try {
while ((len = inputStream.read(buffer, 0, buffer.length)) != -1) {
out.write(buffer, 0, len);
}
// 将内存流转换为字符串
jsonStr = new String(out.toByteArray());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonStr;
}
}
使用百度、高德地图获取ip信息案例:https://my.oschina.net/u/4193800/blog/3106924