.net core 和 WPF 開發升訊威線上客服系統:使用本地IP資料庫實現訪客來源快速定位,支援國外

曹旭升(sheng.c)發表於2021-11-29

本系列文章詳細介紹使用 .net core 和 WPF 開發 升訊威線上客服與營銷系統 的過程。本產品已經成熟穩定並投入商用。

免費使用 & 私有化部署:https://kf.shengxunwei.com


視訊實拍:演示升訊威線上客服系統在網路中斷,直接禁用網路卡,拔掉網線的情況下,也不丟訊息,不出異常。
https://blog.shengxunwei.com/Home/Post/fe432a51-337c-4558-b9e8-347b58cbcd53


隨著系統的使用者越來越多,陸續有客戶向我提出反饋意見,關於訪客 IP 地址定位的問題,之前我用的是百度 IP 定位的 API 介面,這種方式有幾個比較大的問題:

  • 需要實名註冊認證百度賬戶。
  • 只能定位國內IP地址,國外不支援。
  • 只有1000次/天的使用額度,有使用者訪客量較大之後,就只能顯示成未知來源了。

隨時使用者的增多,特別是有些使用者的訪客量會話量很大,呼叫百度API定位也出現了明顯的效能不足,並且百度限制了併發數量,不能併發請求。

只有一個辦法,徹底放棄百度IP介面,通過離線IP資料庫,自主查詢定位了。本篇將詳細介紹實現辦法。

老規矩,先看看實現效果,已經可以定位海外IP:


下載安裝 GeoIP

所謂 GeoIP,就是通過來訪者的IP, 定位他的經緯度,國家/地區,省市,甚至街道等位置資訊。這裡面的技術不算難題,關鍵在於有個精準 的資料庫。有了準確的資料來源就奇貨可居賺點小錢,可是發揚合作精神,集體貢獻眾人享用是我們追求的。

第一步:下載 GeoIP 庫
訪問 GeoIP 官網下載離線檔案:https://geoip.com

下載後上傳到部署Nginx所在的伺服器,上傳方式可以使用wscp等。我上傳的目錄為Centos7.6伺服器的 /usr/local/share/GeoIP,上傳成功後,執行如下命令解壓

cd /usr/local/share/GeoIP
tar -zxvf GeoIP-1.4.8.tar.gz

第二步:編譯,安裝

執行如下命令

cd /usr/local/share/GeoIP/GeoIP-1.4.8
./configure && make && make install

第三步:配置 Nginx

首先進入Nginx資料夾sbin下檢視是否已經安裝了GeoIP模組

./configure --prefix=/usr/local/nginx --with-http_geoip_module && make && make install

使用 GeoIP 定位

GeoIP + PHP的使用

include("geoip.inc.php");
// 開啟資料檔案 
$gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
// 獲取國家程式碼 
$country_code = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']); 
echo "Your country code is: $country_code ";
// 獲取國家名稱 
$country_name = geoip_country_name_by_addr($gi, $_SERVER['REMOTE_ADDR']); 
echo "Your country name is: $country_name ";
// 關閉檔案 
geoip_close($gi);

完工!

最後安利一下我這個程式設計師業餘肝出來的產品,線上使用和完整下載私有化部署都是免費的,希望對你有用,謝謝!

免費使用 & 私有化部署:https://kf.shengxunwei.com

私有化版下載地址與版本說明: ?
https://docs.shengxunwei.com/Post/f7bc8496-14ee-4a53-07b4-08d8e3da6269/553293a8-dfa1-4282-bc3f-96c6c623fc9a


支援請點個贊吧~ 謝謝!

相關文章