微博頭條等展示使用者ip屬地,我用java輕鬆搞定
一、前言
近日多家平臺已經上線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-ip2region
是 ip2region
的封裝,方便 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 元件集,主要包括:
-
Spring boot stater 利器 mica-auto。
-
Spring boot 基礎元件集 mica,包括工具類、驗證碼、http、redis、ip2region、xss 等,開箱即用。
-
物聯網 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
- 重磅!騰訊正式開源SpringCloud解決方案
- 久等|全面擁抱Spring全新OAuth解決方案
- 安全 || 為了安全我升級到了 fastjson2
- 重頭學 || SpringBoot 2.7 自定義 Starter 方法又變了
- 參與開源還能拿獎金,mica社群專案已定
- 微博頭條等展示使用者ip屬地,我用java輕鬆搞定
- Spring Framework RCE 早期公告
- Spring Cloud Gateway 高危漏洞加固建議
- Java 11 到 Java 17 的最佳 HotSpot JVM 選項和開關
- 保姆級升級 java17 指南,建議收藏
- Java17 隱藏寶藏,從 Stream.mapMulti 到 HexFormat
- Spring 2021 報告
- JAVA 應用提速之 Large pages【譯】
- OpenJDK 17 中的 Shenandoah:亞毫秒級 GC 停頓【譯】
- idea 2021 很卡?一招教你起飛
- NewSQL || 微服務架構的必備選擇
- Grafana 8.1 新特性之 Geomap 面板
- 一文精通 http 狀態碼
- 使用 MQTT 和 Grafana Live 實時將感測器資料流傳輸到 Grafana
- 【譯】關係型資料庫的工作原理