首頁 > 藝術
教你用Java獲取IP歸屬地,最高可精確到街道~
由 杭州舍恩伯格 發表于 藝術2023-01-11
簡介然後透過IP獲取歸屬地了
如何定位ip地址
前幾個月微信公眾號上線了IP歸屬地的功能,後續知乎、抖音等平臺紛紛上線IP屬地公開功能。本文教你使用Java實現獲取IP歸屬地!
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應用場景等資料。
IP資料雲介面響應快,多臺伺服器構建 API 介面負載均衡。IP資料雲利用全球超700個網路監測點輔助測量,IP地址查詢定位準確度超過99。8%。
還可以線上查詢IP歸屬地,輸入網址免費查→IP資料雲(網址:
h
ttps://www.ipdatacloud.com/ip/?utm-source=LJ&utm-keyword=?838)!
2、透過IP離線庫獲取
本文采用離線IP地址定位庫IP資料雲,IP資料雲是一個API介面和離線IP地址定位庫,微秒的查詢時間:
IP資料雲是利用全球超700個網路監測點輔助測量,IP地址查詢定位準確度超過99。8%。
除此之外,IP資料雲還提供“介面定製”服務,可以根據客戶的業務領域及應用場景,進行個性化定製,滿足客戶多場景的業務需求。
還
可以線上查詢IP歸屬地,輸入網址免費查→IP資料雲(網址:https://www.ipdatacloud.com/ip/?utm-source=LJ&utm-keyword=?838)!