您好,欢迎来到易榕旅网。
搜索
您的当前位置:首页获取客户端ip的方法

获取客户端ip的方法

来源:易榕旅网

首先先说一下常规的js通过api获取ip的方法:

搜狐接口:

<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>  
<script type="text/javascript">  
    document.write(returnCitySN["cip"]+','+returnCitySN["cname"])  // xxx.xxx.xxx.xxx, xx省xx市
</script>

新浪接口:

<!--获取接口数据,注意charset -->
<script type="text/javascript" src="http://counter.sina.com.cn/ip/" charset="gb2312"></script>      
<script type="text/javascript">
    // 输出接口数据中的IP地址
    document.writeln("IP地址:"+ILData[0]+"<br />");
    // 输出接口数据中的IP地址的类型            
    document.writeln("地址类型:"+ILData[1]+"<br />");
    // 输出接口数据中的IP地址的省市        
    document.writeln("地址类型:"+ILData[2]+"<br />");      
    // 输出接口数据中的IP地址的  
    document.writeln("地址类型:"+ILData[3]+"<br />");    
    // 输出接口数据中的IP地址的运营商    
    document.writeln("地址类型:"+ILData[4]+"<br />");        
</script>

如果使用这两个api不行的话,可以考虑自己整一个,先看一下我开放出来的一个:

{
    "msg": "123.232.10.234", // 返回的IP
    "code": 200 // 成功的状态码
}

我这是用的java语言、springboot框架:
工具类代码:

private String getIpAddress() {
    String ip = request.getHeader("x-forwarded-for");
        if (ip != null && !"".equals(ip) && !"unknown".equalsIgnoreCase(ip)) {
            if (ip.indexOf (",") > 0) {
                ip = ip.substring (0, ip.indexOf (","));
            }
            if (ip.equals ("127.0.0.1")) {
                //根据网卡取本机配置的IP
                InetAddress inet = null;
                try {
                    inet = InetAddress.getLocalHost ();
                } catch (Exception e) {
                    e.printStackTrace ();
                }
                ip = inet.getHostAddress ();
            }
        }
        if (request.getHeader("X-Real-IP") != null && !"".equals(request.getHeader("X-Real-IP")) && !"unknown".equalsIgnoreCase(request.getHeader("X-Real-IP"))) {
            ip = request.getHeader("X-Real-IP");
        }
        if (request.getHeader("Proxy-Client-IP") != null && !"".equals(request.getHeader("Proxy-Client-IP")) && !"unknown".equalsIgnoreCase(request.getHeader("Proxy-Client-IP"))) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (request.getHeader("WL-Proxy-Client-IP") != null && !"".equals(request.getHeader("WL-Proxy-Client-IP")) && !"unknown".equalsIgnoreCase(request.getHeader("WL-Proxy-Client-IP"))) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        log.info("用户ip:"+ip);
        return ip;
}

如果有博主不太了解java的,也可以查询下其他语言的获取客户端ip的方法,大同小异。实在不行也可以使用我开放出来的api。

***获取到的ip也可以使用开放的api获取归属地,我这边使用的是高德地图的api,使用方式可以参考 ——>

如果有用,记得评论夸奖一下~

var code = "403ea04c-df3f-40b1-85c9-065d29ffe5cc"

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrd.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务