koa2-mongodb-demo 項目收集用戶IP和瀏覽器信息

介紹

  • 技術棧:koa2 + mongodb
  • 功能點:獲取客戶端ip和所在地址;統計用戶訪問次數;以及收集瀏覽器相關信息。
  • 目的:實現功能不多,主要是把項目基礎架構搭建起來,方便後續擴展。
  • 項目地址:https://github.com/Jervis2049...

目錄結構html

├─app.js  //入口文件
├─views   //ejs模板
├─static  //靜態資源
├─service //操做數據庫的方法
├─routers //路由
├─models  //定義接口字段
├─db      //mongodb 配置
├─package.json //依賴文件

小結

根據ip獲取地理位置信息

本項目使用了高德地圖的接口。先到這裏申請key。調用此接口即可獲取到數據。node

https://restapi.amap.com/v3/ip?ip=${ip}&key=5e91b92a1d8714b64202548a8ec4cee0

獲取真實客戶端ip

在koa裏經過ctx.request.ip即可獲取到ip。若是部署了代理服務器的話,好比nginx。那麼獲取到的每每是nginx所在的ip。咱們要作的是:nginx

一、在nginx.conf的proxy_pass添加 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;git

二、設置代理頭字段信任github

//文檔:https://koajs.com/#response
//Request remote address. Supports X-Forwarded-For when app.proxy is true.

const app = new Koa()
app.proxy = true;

獲取用戶的ipv4地址

獲取客戶端真實ip默認是ipv6格式。若是不指定hostname(0.0.0.0),服務器會接受ipV6的主機訪問(若是可用),也就是說訪問服務器的ip會是::ffff:開頭的,如::ffff:192.168.0.1,不然就是ipv4格式。web

//文檔:https://nodejs.org/dist/latest-v4.x/docs/api/http.html
app.listen(3000, '0.0.0.0' , () => {
    console.log('localhost:3000')
})

使用pm2守護進程

全局安裝pm2

npm i pm2 -g

啓動項目

pm2 start app.js --watch

打開 http://localhost:3000/index 便可訪問。頁面會請求/client/record接口。請求成功將收集到用戶ip和一些瀏覽器信息。mongodb

mongodb的幾個經常使用簡單命令

//鏈接本機
mongo
//查詢全部數據庫
show dbs
//查詢全部集合
show collections 或者 show tables
//查詢表內全部數據
db.<tableName>.find();
//刪除table內全部數據
db.<tableName>.remove({});
//條件查詢 (查詢ip爲123.222.64.88的數據)
db.<tableName>.find({'ip':'123.222.64.88'});
//查詢前5條
db.<tableName>.find().limit(5);
//模糊查詢 (age>22的數據)
db.<tableName>.find({"age":{$gt:22}) 
//刪除table
db.<tableName>.drop();
//刪除當前數據庫
db.dropDatabase()
//collection刪除
db.collection.drop()

參考文章:數據庫

相關文章
相關標籤/搜索