大家平时经常能看到分类信息网站中能自动判断用户所在的地理位置,以前有一种很笨的方法就是把各地的数据段输入数据库或者一个文档中,通过查询判断用户的地理位置。当然这里的ip段是会实时更新的,而且也不一定全,可能会造成判断的错误。
这里给大家介绍一种更简单的办法就是用新浪的api判断。
直接上代码:
<script src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js" type="text/ecmascript"></script>
<script type="text/javascript">
if(remote_ip_info["province"]=='山东')
{
document.location.href = "http://www.111cn.net/";
}
简单的解释下,先调用新浪的api,然后判断是不是山东ip,如果是山东ip是山东的就跳转到爬行的蜗牛网站。
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=114.114.114.114
返回以下信息:
var remote_ip_info = {"ret":1,"start":"114.114.112.0","end":"114.114.119.255","country":"\u4e2d\u56fd","province":"\u6c5f\u82cf","city":"\u5357\u4eac","district":"","isp":"\u7535\u4fe1","type":"","desc":"\u5357\u4eac\u4fe1\u98ce114dns\u4e13\u5c5e"};
文字经过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 地址信息!');
}