Java获取IP以及地址属地(全网无BUG)

这篇具有很好参考价值的文章主要介绍了Java获取IP以及地址属地(全网无BUG)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

点赞再看,养成习惯,大家好,我是辰兮!今天介绍如何获取访问人员的IP地址以及归属地(千万不要用这种方法做坏事噢!)

文章目录

思路

一、获取IP地址

二、获取归属地

三、测试

总结


思路

通过此网站:获取IP网站即可获取访问者的IP,所以只需要通过对IP进行解析,获取到对应的归属地即可!

一、获取IP地址

首先我们创建一个IpUtils:

public class IpUtils {
}

获取IP的方法:访问上面那个网址然后解析得到IP地址

/**
     * 获取外网IP
     * @return
     */
    public static String getOutIP()  {
        String ip = "http://pv.sohu.com/cityjson?ie=utf-8";

        String inputLine = "";
        String read = "";
        String toIp="";
        try {
            URL url = new URL(ip);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
            while ((read = in.readLine()) != null) {
                inputLine += read;
            }
            String ObjJson=inputLine.substring(inputLine.indexOf("=")+1,inputLine.length()-1);
//            System.out.println(ObjJson);
            JSONObject jsonObj= JSON.parseObject(ObjJson);
            toIp=jsonObj.getString("cip");
//            throw new Exception();
        } catch (Exception e) {
            toIp="";
        }
        return toIp;
    }

二、获取归属地

既然以及获取到IP地址了,这时候只需要解析IP地址得到归属地即可!

那么一个IP地址如何去解析得到归属地呢?

我们使用的是通过IP字典来解析,下面已经准备好了:

1、下载IP字典:

链接:https://pan.baidu.com/s/1xMj10JcBn89-tiyoXWYTfw?pwd=4y4f 
提取码:4y4f

然后下载完后放到src/main/resources目录下

java 获取ip段的所有ip,java,tcp/ip,spring boot,maven,eclipse

2、加入ip2region依赖:

<dependency>
    <groupId>org.lionsoul</groupId>
    <artifactId>ip2region</artifactId>
    <version>1.7.2</version>
</dependency>

3、在创建的IpUtils里面加入getAddress()方法:

/**
     * 根据ip获取归属地
     * @param ip
     * @return
     */
    public static String getAddress(String ip) {
        URL url = HttpUtil.class.getClassLoader().getResource("ip2region.db");
        File file;
        if (url != null) {
            file = new File(url.getFile());
        } else {
            return null;
        }
        if (!file.exists()) {
            return null;
        }
        //查询算法
        int algorithm = DbSearcher.BTREE_ALGORITHM; //B-tree
        //DbSearcher.BINARY_ALGORITHM //Binary
        //DbSearcher.MEMORY_ALGORITYM //Memory
        try {
            DbConfig config = new DbConfig();
            DbSearcher searcher = new DbSearcher(config, file.getPath());
            Method method;
            switch (algorithm){
                case DbSearcher.BTREE_ALGORITHM:
                    method = searcher.getClass().getMethod("btreeSearch", String.class);
                    break;
                case DbSearcher.BINARY_ALGORITHM:
                    method = searcher.getClass().getMethod("binarySearch", String.class);
                    break;
                case DbSearcher.MEMORY_ALGORITYM:
                    method = searcher.getClass().getMethod("memorySearch", String.class);
                    break;
                default:
                    return null;
            }
            DataBlock dataBlock;
            if (!Util.isIpAddress(ip)) {
                return null;
            }
            dataBlock  = (DataBlock) method.invoke(searcher, ip);
            return dataBlock.getRegion();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

三、测试

测试类:

    @Test
    void outIp(){
        String outIP = IpUtils.getOutIP();
        String address = IpUtils.getAddress(outIP);
        if (StringUtils.isEmpty(address)) {
            System.out.println("暂无归属地");
        } else {
            System.out.println("归属地为:" + address);
        }
    }

java 获取ip段的所有ip,java,tcp/ip,spring boot,maven,eclipse

可以发现测试成功!!! 


总结

1、通过 http://pv.sohu.com/cityjson?ie=utf-8 网址获取IP数据

2、通过IP数据解析得到IP地址

3、通过IP字典解析IP地址得到归属地文章来源地址https://www.toymoban.com/news/detail-596042.html

到了这里,关于Java获取IP以及地址属地(全网无BUG)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java获取请求者IP和地址

    在网上一番寻找,希望能找到一个根据IP解析地址的API,终于不负有心人,让我找到了,可是这个API是一个webservice,于是又学会了webservice调用,这个API来自webxml.com.cn,有着丰富的webservice接口,通过soapui调用情况如下图 http://ws.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl

    2024年02月06日
    浏览(33)
  • JAVA获取客户端IP地址

    2024年02月16日
    浏览(47)
  • Java如何获取请求的ip 地址?

    2024年02月12日
    浏览(39)
  • java实现通过IP地址获取mac(物理地址)

    java实现通过IP地址获取mac(物理地址),只能获取到局域网的mac地址,具体代码如下:

    2024年02月16日
    浏览(49)
  • java获取真实的请求接口ip地址

    在Java程序中获取请求的真实IP地址可以使用以下方法: 使用javax.servlet.http.HttpServletRequest类中的getRemoteAddr()方法,这个方法可以获取请求的IP地址。 可以检查X-Forwarded-For,如果请求是通过代理服务器发送的,那么X-Forwarded-For将包含被代理客户端的IP地址。可以使用HttpServletReque

    2024年02月11日
    浏览(50)
  • Java 获取客户端请求IP地址

    2024年02月15日
    浏览(43)
  • Java根据IP地址获取对应归属地

    最近,各大平台都新增了评论区显示发言者ip归属地的功能,例如哔哩哔哩,微博,知乎等等,下面,就来讲讲,Java 中是如何获取 IP 属地的 在Java中有多种获取IP地址的方式,就不一一介绍了,给出了一个最常用的IP地址获取方式,仅供参考,代码如下: 对这里出现的几个名词解释

    2023年04月24日
    浏览(70)
  • Java WebSocket 获取客户端 IP 地址

    在开发 Web 应用程序时,我们通常需要获取客户端的 IP 地址用于日志记录、身份验证、限制访问等操作。当使用 WebSocket 协议时,我们可以使用 Java WebSocket API 来获取客户端的 IP 地址。 本文将介绍如何使用 Java WebSocket API 获取客户端 IP 地址,以及如何在常见的 WebSocket 框架中

    2024年02月05日
    浏览(45)
  • Java中获取当前服务器的IP地址

    获取ip的第一反应就是:使用InetAddress这个类:方法如下 可以知道此时获取到的服务器如果加了代理方式就是获取到代理的地址,一般会使用netty代理转发。 我的解决死方法(方法是死的,但是能解决问题^_^) 在nacos的配置里面新建一个

    2024年02月11日
    浏览(45)
  • 使用Java获取发送请求的电脑的IP地址

    客户端所有的请求信息都可以通过HttpServletRequest获得,获取客户端ip可以通过getRemoteAddr()获取。 但是如果客户端是通过代理访问我们的服务器,那么getRemoteAddr()获取到的ip就很有可能不是真实的ip,这时候我们可以通过请求头里的x-forwarded-for来获取真实的ip,请求每经一次代理

    2024年02月16日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包