獲取ip屬地(ip2region本地離線包-超簡單)

背景

最近有涉及要顯示ip屬地,但我想白嫖,結果就是白嫖的api接口太慢了,要延遲3到4秒左右,很影響體驗,而且不一定穩定。

結果突然看到了這個【ip2region】開源項目,離線識別ip屬地,精度自己測試了好多個國家和地區的ip,效果還可以,有98%的成功率。

源地址如下,有各種語言的版本:

ip2region原作者開源項目地址icon-default.png?t=N7T8https://github.com/lionsoul2014/ip2region

?

實現

這里因為我的后端用的是node,就用node的代碼做示例

第一步 ,引入依賴

npm install ip2region --save

第二步,下載離線包

?

?下載完成后,進行解壓,然后把文件放到自己的項目目錄下,如下:

第三步,封裝工具類

以下代碼可直接復制使用,只需要看一下離線包的地址是否需要更改即可。

內置兩個函數:

getIpAddress:官方默認的獲取ip屬地方法格式

setIpAddress:我自己做的屬地格式優化處理

// 導入包
const Searcher = require('../ip2region-master/binding/nodejs/index')
// 指定ip2region數據文件路徑
const dbPath = '../ip2region-master/data/ip2region.xdb'/*** 獲取ip對應真實地址* @param ip ip地址* @returns {Promise<string>}*/
async function getIpAddress (ip) {try {// 同步讀取vectorIndexconst vectorIndex = Searcher.loadVectorIndexFromFile(dbPath)// 創建searcher對象const searcher = Searcher.newWithVectorIndex(dbPath, vectorIndex)// 查詢 await 或 promise均可,例子:data: {region: '中國|0|江蘇省|蘇州市|電信', ioCount: 2, took: 0.402874}let data = await searcher.search(ip)// ip屬地格式預處理data = setIpAddress(data.region)// 返回結果return JSON.stringify({code: 200,data: data})} catch (e) {// 返回錯誤return JSON.stringify({code: 500,data: e})}
}/*** ip屬地格式預處理* @param address ip屬地原格式* @returns {{country: string, province: string, city: string, type: string}}*/
function setIpAddress (address) {// 返回體let adrList = {country: '',province: '',city: '',type: ''}// 根據|分割成數組,然后依次賦值let list = address.split('|')adrList.country = list[0] !== '0' ? list[0] : ''adrList.province = list[2] !== '0' ? list[2] : ''adrList.city = list[3] !== '0' ? list[3] : ''adrList.type = list[4] !== '0' ? list[4] : ''// 返回結果,示例:{ country: '中國', province: '江蘇省', city: '徐州市', type: '移動' }return adrList
}// 測試
let ip = '223.107.4.177'getIpAddress(ip).then(res => {let data = JSON.parse(res)console.log(data)})

?測試效果

可以看到結果很快,只用了十幾ms,非常舒服,白嫖成功,在這里感謝原開源項目的作者!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163557.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163557.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163557.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Public Key Retrieval is not allowed

出現這個錯誤的原因可能是 MySQL 連接配置中的某些設置限制了公鑰的檢索。要解決這個問題&#xff0c;可以嘗試以下方法&#xff1a; 設置參數&#xff1a;在 MySQL 連接 URL 或連接配置中添加參數 ?allowPublicKeyRetrievaltrue?。 更新 MySQL 驅動程序&#xff1a;如果您使…

編譯安裝報錯:configure: error: cannot guess build type; you must specify one

1、編譯安裝報錯 configure: error: cannot guess build type; you must specify one 該報錯信息翻過過來的意思是&#xff1a;無法猜測編譯 操作系統類型,請指定一個 2、解決方法 在原本的編譯安裝語句后面加上一句&#xff1a; “--buildarm-linux ” &#xff0c;這句話…

詳解開源數據庫審計平臺Yearning

基本概念 數據庫審計&#xff08;簡稱DBAudit&#xff09;能夠實時記錄網絡上的數據庫活動&#xff0c;對數據庫操作進行細粒度審計的合規性管理&#xff0c;對數據庫遭受到的風險行為進行告警&#xff0c;對攻擊行為進行阻斷。它通過對用戶訪問數據庫行為的記錄、分析和匯報&…

無人智能貨柜:提升購物體驗

無人智能貨柜&#xff1a;提升購物體驗 隨著移動支付的普及&#xff0c;人們日常生活中的主要場景已經滲透了這一支付方式。同時&#xff0c;無人智能貨柜作為購物的重要渠道&#xff0c;正在嶄露頭角。通過人工智能、圖像識別和物聯網技術的應用&#xff0c;無人智能貨柜將使購…

什么是復費率電表?

隨著科技的不斷進步和人們對能源管理的日益重視&#xff0c;復費率電表逐漸成為我國電力系統中不可或缺的一員。復費率電表是一種能夠實現電能計量、峰谷電價劃分以及負荷控制等多功能的智能電表&#xff0c;它采用先進的通信技術和計算機算法&#xff0c;對用戶的用電行為進行…

nginx.conf 配置文件 詳細解釋

文章目錄 nginx.conf 是 Nginx 的主要配置文件&#xff0c;其中可以配置許多模塊來定義服務器行為。以下是一些常見的 Nginx 模塊以及它們的作用&#xff1a;1. **http 模塊**&#xff1a;2. **server 模塊**&#xff1a;3. **location 模塊**&#xff1a;4. **events 模塊**&a…

軟件系統測試有哪些測試流程?系統測試報告編寫注意事項

在軟件開發的過程中&#xff0c;系統測試是至關重要的一環&#xff0c;它的目的是驗證和評估軟件產品是否符合預期的質量標準&#xff0c;以確保系統的穩定性、可靠性和安全性。 一、軟件系統測試的測試流程 1、需求分析與測試計劃制定&#xff1a;根據需求分析確定測試目標、…

軟件開發及交付的項目管理角色

在軟件開發及交付過程中&#xff0c;通常會涉及不同的角色和職責&#xff0c;包括業務角色、技術角色和管理角色。這些角色在項目管理中發揮著不同的作用&#xff0c;以確保項目的成功和交付高質量的產品。 業務角色&#xff1a;包括產品經理、業務分析師和業務運營人員等職位…

外貿電商網站用什么服務器好?

外貿電商網站用什么服務器好&#xff1f; 電商網站選好域名后&#xff0c;接著就是為網站選擇一個好的網站服務器&#xff0c;截止2015年初&#xff0c;國內站長中約有三百多萬的網站存放在美國服務器&#xff0c;美國服務器為什么會有如此之多的用戶選擇使用呢&#xff0c;站…

張弛聲音變現課,青春劇配音實用攻略

在為青春劇添聲時&#xff0c;配音藝術家須要捕獲并傳達劇中年輕角色的活潑精神、成長道路上的激情&#xff0c;以及他們在面對友情、愛情和理想時的情緒起伏。青春劇特別關注年輕人的成長故事&#xff0c;著重描繪他們在成長中的經歷和變化。下面是一些為青春劇配音的建議&…

TP5制作圖片壓縮包

目標:將多張圖片制成在一個壓縮包內,供調取使用 public function test() {//引入壓縮包類$zip new \ZipArchive();//新定義一個zip包$zipname ROOT_PATH./public/zip/.date("YmdHis").rand(111,999)..zip;if ($zip->open($zipname, \ZipArchive::CREATE) true…

2023年跨界融合創新應用合作發展大會-核心PPT資料下載

一、峰會簡介 本次大會主題為“創新地理信息價值 服務數字中國建設”。1天主論壇和6場專題論壇的報告&#xff0c;圍繞主題深入探討地理信息產業與相關重要應用領域的跨界融合和深化合作。 本屆大會將搭建地理信息產業與旅游、林業、環保、氣象、住建、水利、農業農村、電力等…

數據報文去哪兒了

背景 今天遇到一個詭異的現象&#xff0c;當接口附加一個IP時&#xff0c;主IP業務正常&#xff0c;附加IP死活不行&#xff0c;tcpdump抓包確可以正常抓到到業務的報文&#xff0c;但是在PREROUTING raw添加規則確沒有命中&#xff0c;說明報文沒有到netfilter框架內&#xff…

RTL8762D SDK

0 Preface/Foreword SDK: Software Development kit 1、硬件介紹 1.1 General Description A624RO基本信息&#xff1a; ultra-low-powerBluetooth 5.1 low energy applicationsa leading RF transceiverlow-power ARM Cortex-M4FIR transceiver 1.1.1 MCU platform MCU…

openssl加解密-干貨分享

0.需要包含的頭文件和預定義常量 #include <openssl/rand.h>#include <fstream>#include <openssl/aes.h>#include <openssl/rand.h>// 加密密鑰和初始化向量&#xff08;IV&#xff09;長度#define AES_KEY_LENGTH 32#define AES_IV_LENGTH 16 1.密…

競賽選題 題目:垃圾郵件(短信)分類 算法實現 機器學習 深度學習 開題

文章目錄 1 前言2 垃圾短信/郵件 分類算法 原理2.1 常用的分類器 - 貝葉斯分類器 3 數據集介紹4 數據預處理5 特征提取6 訓練分類器7 綜合測試結果8 其他模型方法9 最后 1 前言 &#x1f525; 優質競賽項目系列&#xff0c;今天要分享的是 基于機器學習的垃圾郵件分類 該項目…

3分鐘使用 WebSocket 搭建屬于自己的聊天室(WebSocket 原理、應用解析)

文章目錄 WebSocket 的由來WebSocket 是什么WebSocket 優缺點優點缺點 WebSocket 適用場景主流瀏覽器對 WebSocket 的兼容性WebSocket 通信過程以及原理建立連接具體過程示例Sec-WebSocket-KeySec-WebSocket-Extensions 數據通信數據幀幀頭&#xff08;Frame Header&#xff09…

組合數學學習

指數生成函數可以與排列結合在一起&#xff0c;而冪級數和 組合結合在一起 如果要進行計算的值不是一個具體的值&#xff0c;那么就要考慮生成函數

Windows如何使用key登錄Linux服務器

場景&#xff1a;因為需要回收root管理員權限&#xff0c;禁止root用戶遠程登錄&#xff0c;辦公環境只允許普通用戶遠程登錄&#xff0c;且不允許使用密碼登錄。 一、生成與配置ssh-key 1.使用root管理員權限登錄到目標系統。 2.創建一個新的普通用戶&#xff0c;和設置密碼用…

Java,File類與IO流,File類與IO流的概述

File的概述&#xff1a; File定義在java.io包下。 一個File對象代表硬盤或網絡中可能存在的一個文件或者文件目錄&#xff08;俗稱文件夾&#xff09;&#xff0c;與平臺無關。 File能新建、刪除、重命名文件和目錄&#xff0c;但File不能訪問文件內容本身。如果需要訪問文件…