使用GeoLite2库根据IP判断国家名称

  1. 访问 https://dev.maxmind.com/geoip/geoip2/geolite2/ ,注册账号
    在这里插入图片描述
  2. 注册成功之后进行数据库文件的下载
    在这里插入图片描述
  3. 如果只是要根据ip判断国家名称的话,选择Country包就可以了,如果需要精确到城市或者有更精确的要求的话,选择城市包或者使用付费服务
    在这里插入图片描述
  4. 解压后的IP库文件
    在这里插入图片描述
  5. 根据官方提供的sample,码代码
  1. https://support.maxmind.com/getting-started-with-geolite2/
  2. https://github.com/maxmind/GeoIP2-java
package com.csp.common.component;

import java.io.InputStream;
import java.net.InetAddress;
import org.springframework.core.io.ClassPathResource;
import com.csp.common.utils.StringUtil;
import com.maxmind.geoip2.DatabaseReader;
import com.maxmind.geoip2.model.CountryResponse;
import com.maxmind.geoip2.record.Country;

public class IpUtil {
    /**
     * IPアドレスで、国判別する
     * @param ipAddress IPアドレス
     * @return 国名
     */
    public String getCountryNameByIp(String ipAddress) {
        
        String countryName = StringUtil.BLANK;
        try {
            
            File database = new File("/path/to/GeoLite2-Country.mmdb");

            DatabaseReader reader = new DatabaseReader.Builder(database ).build();
            InetAddress ip = InetAddress.getByName(ipAddress);
            CountryResponse response = reader.country(ip);

            Country country = response.getCountry();
            // 如果想要让国家的名称为中文的话, ja要改为 zh-CH
            countryName = country.getNames().get("ja");
        } catch (Exception e) {
            countryName = StringUtil.BLANK;
        }
        
        return countryName;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值