微博头条等展示用户ip属地,我用java轻松搞定

语言: CN / TW / HK

一、前言

近日多家平台已经上线IP地址显示功能,有头条,百度,微博,小红书,知乎,据称微信公众号也会上线。 这个功能上线的目的,还是为了预防互联网诈骗,比如跟你聊天或者与你交易的人,IP地址显示不正常的,你肯定要警惕,或者是一些互联网造谣群体,网络攻击行为,冒充当事人等等,归根结底还是为了营造一个绿色的网络环境,让互联网变得更加安全与和谐。今天我们介绍的是如何使用 java 来获取 ip 地址归属地。

二、Ip2region是什么?

ip2region - 准确率99.9%的离线IP地址定位库,0.0x毫秒级查询,ip2region.db数据库只有数MB,提供了java,php,c,python,nodejs,golang,c#等查询绑定和Binary,B树,内存三种查询算法。

三、mica-ip2region

mica-ip2regionip2region 的封装,方便 spring boot 用户使用。

3.1 添加依赖

<dependency>
<groupId>net.dreamlu</groupId>
<artifactId>mica-ip2region</artifactId>
<version>${version}</version>
</dependency>

3.2 使用文档

注入 bean

@Autowired
private Ip2regionSearcher regionSearcher;

方法说明

/**
* ip 位置 搜索
*
* @param ip ip
* @return 位置
*/

@Nullable
IpInfo memorySearch(long ip);

/**
* ip 位置 搜索
*
* @param ip ip
* @return 位置
*/

@Nullable
IpInfo memorySearch(String ip);

/**
* ip 位置 搜索
*
* @param ptr ptr
* @return 位置
*/

@Nullable
IpInfo getByIndexPtr(long ptr);

/**
* ip 位置 搜索
*
* @param ip ip
* @return 位置
*/

@Nullable
IpInfo btreeSearch(long ip);

/**
* ip 位置 搜索
*
* @param ip ip
* @return 位置
*/

@Nullable
IpInfo btreeSearch(String ip);

/**
* ip 位置 搜索
*
* @param ip ip
* @return 位置
*/

@Nullable
IpInfo binarySearch(long ip);

/**
* ip 位置 搜索
*
* @param ip ip
* @return 位置
*/

@Nullable
IpInfo binarySearch(String ip);

IpInfo 上的属性和方法:

/**
* 城市id
*/

private Integer cityId;
/**
* 国家
*/

private String country;
/**
* 区域
*/

private String region;
/**
* 省
*/

private String province;
/**
* 城市
*/

private String city;
/**
* 运营商
*/

private String isp;
/**
* region ptr in the db file
*/

private int dataPtr;
/**
* 拼接完整的地址
*
* @return address
*/

public String getAddress();
/**
* 拼接完整的地址,附带运营商
*
* @return address
*/

public String getAddressAndIsp();

效果展示:

四、关于 mica

mica 是笔者(如梦技术)开源的一系列 java 组件集,主要包括:

  1. Spring boot stater 利器 mica-auto。

  2. Spring boot 基础组件集 mica,包括工具类、验证码、http、redis、ip2region、xss 等,开箱即用。

  3. 物联网 mqtt 协议 mica-mqtt,包括 mqtt client 和 mqtt broker。

欢迎使用!!!

六、相关链接

  • ip2region: https://gitee.com/lionsoul/ip2region

  • mica: https://gitee.com/596392912/mica

  • mica-auto: https://gitee.com/596392912/mica-auto

  • mica-mqtt: https://gitee.com/596392912/mica-mqtt