首頁 > 藝術

教你用Java獲取IP歸屬地,最高可精確到街道~

由 杭州舍恩伯格 發表于 藝術2023-01-11

簡介然後透過IP獲取歸屬地了

如何定位ip地址

前幾個月微信公眾號上線了IP歸屬地的功能,後續知乎、抖音等平臺紛紛上線IP屬地公開功能。本文教你使用Java實現獲取IP歸屬地!

IP歸屬地如何精確到街道級別,小編有秘寶~

教你用Java獲取IP歸屬地,最高可精確到街道~

今天小編,主要講解以下幾個步驟:

一、Java獲取IP地址

首先使用基於Spring Boot搭建專案,在controller新增HttpServletRequest請求引數:

@RestControllerpublic class IpController {

@GetMapping(“/ip-address”)

public String ipAddress(HttpServletRequest request) {

// 接收request

透過HttpServletRequest獲取IP地址:

String ip = request。getHeader(“x-forwarded-for”);if (ip == null || ip。length() == 0 ||

“unknown”。equalsIgnoreCase(ip)) {

ip = request。getHeader(“Proxy-Client-IP”);

}if (ip == null || ip。length() == 0 || “unknown”。equalsIgnoreCase(ip)) {

ip = request。getHeader(“WL-Proxy-Client-IP”);

}if (ip == null || ip。length() == 0 || “unknown”。equalsIgnoreCase(ip)) {

ip = request。getHeader(“HTTP_CLIENT_IP”);

}if (ip == null || ip。length() == 0 || “unknown”。equalsIgnoreCase(ip)) {

ip = request。getHeader(“HTTP_X_FORWARDED_FOR”);

}if (ip == null || ip。length() == 0 || “unknown”。equalsIgnoreCase(ip)) {

ip = request。getRemoteAddr();

}return ip;

在本地環境呼叫獲取IP,要麼是0:0:0:0:0:0:0:1,或者是區域網IP。

區域網IP是以192。168。x。x開頭,或者是127。0。0。1的IP。

所以需要部署到

外網伺服器

才能獲取到公網地址。部署到外網伺服器能成功獲取IP地址。

二、Nginx 反向代理問題

直接訪問公網伺服器地址能成功獲取IP地址,但是透過Nginx反向代理獲取的都是127。0。0。1。客戶端請求Nginx伺服器再反向代理轉發到服務端,此時拿到的IP反向代理的IP,也就是Nginx伺服器的IP,並不是真正的客戶端IP。

在Nginx的配置檔案中的location模組新增以下配置,將客戶端的IP傳入到Nginx服務:

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

示例:

server {

listen 80;

server_name localhost;

location / {

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_pass http://xxxx;

完成以上操作之後,就能成功獲取到IP了。然後透過IP獲取歸屬地了。

三、IP獲取歸屬地

透過IP獲取歸屬地一般都從地址庫找到匹配的地址,本文介紹兩種方法。

1、透過歸屬地API獲取

使用IP資料雲API介面服務查詢

如果你需要IP歸屬地更精準,可以使用IP資料雲API介面服務,可以查詢全球全量的IPv4和IPv6歸屬地,最高可精確到街道。

除了IP歸屬地,還能查到IP應用場景等資料。

教你用Java獲取IP歸屬地,最高可精確到街道~

IP資料雲介面響應快,多臺伺服器構建 API 介面負載均衡。IP資料雲利用全球超700個網路監測點輔助測量,IP地址查詢定位準確度超過99。8%。

還可以線上查詢IP歸屬地,輸入網址免費查→IP資料雲(網址:

h

ttps://www.ipdatacloud.com/ip/?utm-source=LJ&utm-keyword=?838)!

教你用Java獲取IP歸屬地,最高可精確到街道~

2、透過IP離線庫獲取

本文采用離線IP地址定位庫IP資料雲,IP資料雲是一個API介面和離線IP地址定位庫,微秒的查詢時間:

IP資料雲是利用全球超700個網路監測點輔助測量,IP地址查詢定位準確度超過99。8%。

教你用Java獲取IP歸屬地,最高可精確到街道~

除此之外,IP資料雲還提供“介面定製”服務,可以根據客戶的業務領域及應用場景,進行個性化定製,滿足客戶多場景的業務需求。

可以線上查詢IP歸屬地,輸入網址免費查→IP資料雲(網址:https://www.ipdatacloud.com/ip/?utm-source=LJ&utm-keyword=?838)!

Tags:IP獲取歸屬IP地址