返回顶部
首页 > 资讯 > 后端开发 > JAVA >JAVA根据ip地址获取归属地
  • 388
分享到

JAVA根据ip地址获取归属地

javaspringboot后端 2023-10-05 10:10:20 388人浏览 泡泡鱼
摘要

IP获取归属地 1.通过地址库获取         如果使用api接口获取,可能会出现服务挂了,或者服务地址不提供服务了等问题。而采用本地地址库就没有这些问题。 本文采用离线IP地址定位库 Ip2region,Ip2region是一个离线I

IP获取归属地

1.通过地址库获取

        如果使用api接口获取,可能会出现服务挂了,或者服务地址不提供服务了等问题。而采用本地地址库就没有这些问题。

本文采用离线IP地址定位库 Ip2regionIp2region是一个离线IP地址定位库,微秒的查询时间:

实现步骤:

        访问官网GitHub地址:https://github.com/lionsoul2014/ip2region

 找到data目录下的:ip2region.xdb文件下载下来

 把ip2region.xdb文件放在resources目录下

在模块中引入Maven依赖

        org.lionsoulip2region2.6.5

获取归属地:

private Searcher searcher;@Override    public String getIpAddress(String ip){        if ("127.0.0.1".equals(ip) || ip.startsWith("192.168")) {            return "|||局域网ip";        }        if (searcher == null) {            try {                File file = ResourceUtils.getFile("classpath:db/data_ip2region.xdb");                String dbPath = file.getPath();                searcher = Searcher.newWithFileOnly(dbPath);            } catch (FileNotFoundException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            }        }        String region = null;        String errorMessage = null;        try {            region = searcher.search(ip);        } catch (Exception e) {            errorMessage = e.getMessage();            if (errorMessage != null && errorMessage.length() > 256) {                errORMessage = errorMessage.substring(0, 256);            }            e.printStackTrace();        }        // 输出 region        System.out.println(region);        return region;    }

        这里Searcher引用的是仓库里面的检索方法,到这里就完成了可以获取到ip对应的归属地。

调用方法后运行结果如下

注意!!!! 本地是没问题的 如果打成jar包放在linux服务器上会读取不到

解决办法:

        

    public String getIpCity(String ip) {        if ("127.0.0.1".equals(ip) || ip.startsWith("192.168")) {            return "|||局域网ip";        }        if (searcher == null) {            try {                //本地环境需要加上 classpath://                File file = ResourceUtils.getFile("db/data_ip2region.xdb");//                String dbPath = file.getPath();//                searcher = Searcher.newWithFileOnly(dbPath);                   //这里通过流获取 解决jar包无法读取文件问题                ResponseEntity test = test("db/data_ip2region.xdb");                searcher = Searcher.newWithBuffer(test.getBody());            } catch (FileNotFoundException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            }        }        String region = null;        String errorMessage = null;        try {            region = searcher.search(ip);        } catch (Exception e) {            errorMessage = e.getMessage();            if (errorMessage != null && errorMessage.length() > 256) {                errorMessage = errorMessage.substring(0, 256);            }            e.printStackTrace();        }        // 输出 region        return region;    }    public static ResponseEntity test(String templateName) throws IOException {        ClassPathResource classPathResource = new ClassPathResource(templateName);        String filename = classPathResource.getFilename();        @Cleanup InputStream inputStream = classPathResource.getInputStream();        byte[] bytes = FileCopyUtils.copyToByteArray(inputStream);        String fileName = new String(filename.getBytes("UTF-8"), "iso-8859-1");// 为了解决中文名称乱码问题        HttpHeaders headers = new HttpHeaders();        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);        headers.setContentDispositionFormData("attachment", fileName);        return new ResponseEntity<>(bytes, headers, httpstatus.CREATED);    }

        至于什么是Ip2region 官网上面有介绍这里就不多介绍了

来源地址:https://blog.csdn.net/weixin_49128211/article/details/129795007

--结束END--

本文标题: JAVA根据ip地址获取归属地

本文链接: https://lsjlt.com/news/423667.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JAVA根据ip地址获取归属地
    IP获取归属地 1.通过地址库获取         如果使用API接口获取,可能会出现服务挂了,或者服务地址不提供服务了等问题。而采用本地地址库就没有这些问题。 本文采用离线IP地址定位库 Ip2region,Ip2region是一个离线I...
    99+
    2023-10-05
    java spring boot 后端
  • Java怎么根据ip地址获取归属地
    Java中可以使用第三方库来根据IP地址获取归属地,其中比较常用的库是GeoIP2和ip2region。 使用GeoIP2库: ...
    99+
    2024-03-08
    java
  • Java根据ip地址获取归属地实例详解
    目录引言Java 中是如何获取 IP 属地的首先需要写一个 IP 获取的工具类内置的三种查询算法使用方法项目用到的全部依赖引言 最近...
    99+
    2024-04-02
  • 利用java如何根据IP获取mac地址
    利用java如何根据IP获取mac地址?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体内容如下import java.net.InetAddress;import jav...
    99+
    2023-05-31
    java ip mac
  • java如何获取ip地址
    java获取IP地址的方法: private static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("...
    99+
    2016-06-05
    java基础 java
  • Java 根据网络地址URL获取文件
    一、功能需求 系统需要根据提供的文件地址URL获取该文件,代码实现如下: 二、解决办法 private static File getFileByHttpURL(String path){...
    99+
    2023-09-02
    java 开发语言 servlet
  • android 获取IP地址
    https://blog.csdn.net/Alexlee1986/article/details/96120439 android获取ip地址方法 1、wifi下获取本地局域网IP地址 2、移动网络获取网络IP地址 3、获...
    99+
    2023-08-18
    android tcp/ip java
  • python获取最全ip归属地并数据库本
    自己的原创、python3下测试通过:#enconding: utf-8import urllib.requestimport urllib.responseimport urllib.parseimport mysql.connector...
    99+
    2023-01-31
    最全 归属地 数据库
  • 用python获取MAC地址和IP地址
    # ifconfig eth0 eth0      Link encap:Ethernet  HWaddr 50:E5:49:3A:EA:90             inet addr:172.28.10.71  Bcast:172.28...
    99+
    2023-01-31
    地址 python MAC
  • python实现获取Ip归属地等信息
    如果你有一批IP地址想要获得这些IP具体的信息,比如归属国家,城市等,最好的办法当时是调用现有的api接口来获取,我在之前就写过一篇文章,是关于我的博客被莫名攻击的时,就有获取过一批IP,攻击的时候当时是恢...
    99+
    2022-06-04
    归属地 信息 python
  • Thinkphp5根据IP地址获取定位地理位置,精准到城市
    导读:  根据IP地址获取用户所在的城市地理位置,网上有很多免费的API接口可以实现,但是接口响应比较慢,接口也受网速等因素影响,有时会很卡,PHP又是属于单线程的,一直卡在获取IP定位这里的话,会直接给用户造成非常不好体验,用户就觉得你的...
    99+
    2023-09-08
    php thinkphp
  • 基于PHP的IP地址归属地查询
    基于PHP的IP地址归属地查询 // 接口请求Key,可以通过https://www.juhe.cn/docs/api/id/1免费申请开通 $appkey = "*********************"; //根...
    99+
    2024-04-02
  • java实现通过IP地址获取mac(物理地址)
    java实现通过IP地址获取mac(物理地址),只能获取到局域网的mac地址,具体代码如下: package com.qcmsa.util;import org.apache.commons.log...
    99+
    2023-09-01
    java tcp/ip macos
  • Android获取mac地址、OA地址和外网IP地址
    获取Mac地址: public static String GetMAC(Context context) { String Mac = ""; if (Build.VERSION.SDK_INT >= Build.VERSIO...
    99+
    2023-09-06
    android java
  • 使用Java如何获取IP地址
    本篇文章给大家分享的是有关使用Java如何获取IP地址,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、通过IP获取机器名 or 通过机器名获取iphost :主机 ...
    99+
    2023-05-31
    java ip ava
  • Java-通过IP获取真实地址
    文章目录 前言功能实现测试 前言 最近写了一个日志系统,需要通过访问的 IP 地址来获取真实的地址,并且存到数据库中,我也是在网上看了一些文章,遂即整理了一下供大家参考。 功能实现 这个是获取正确 IP 地址的方法,可以直...
    99+
    2023-08-16
    java tcp/ip 网络
  • java根据用户请求获取ip地址,并解析省市信息
    目录 1.选型1.1 实现方式1.1.1 本地文件解析1.1.2 数据库查询1.1.3 第三方API代理 1.2 常用ip定位库1.2.1 Ip2region1.2.2 GeoLite2...
    99+
    2023-09-14
    java ip
  • JAVA获取本地MAC地址
     MAC地址也就是物理地址 所以cmd电脑查看   一、自定义方法获取本地mac地址      private static String getLocalMac(InetAddress inetAddress) {        try...
    99+
    2023-09-03
    java jvm servlet 1024程序员节
  • java获取IP归属地全网显示开源库使用
    目录引言Java如何获取IP属地Ip2region开源项目99.9%准确率:多查询客户端的支持Ip2region V2.0 特性ip2region xdb java 查询客户端实现I...
    99+
    2024-04-02
  • Java如何根据网址查询DNS/IP地址
    这篇文章给大家分享的是有关Java如何根据网址查询DNS/IP地址的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。需求: 给定一个URL地址, 例如: http://www.cncounter.com/tools/...
    99+
    2023-05-30
    java dns
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作