今天领导让在活动页里添加一段统计代码测试跑得流量是否可靠,然后给了一个某平台的账号,类似于傻瓜式的在合适的位置加了一句话,工作就结束了,恰好之后的时间没事做,索性自己写了一个简易版本练手。
准备工作
- 一个安装好 node.js 和 express 和 forever 的 linux 的服务器。
- 一个开放权限的端口。
- 一张数据库表
注释 :暂时只建了一张表,记录用户的:ip、归属地(三级)、来源网站,以及自动生成的数据记录时间。
建站及连接数据库
直接使用 express 的生成器建站,站内安装 mysql 模块,然后封装连接 mysql 数据库的函数:
表名被单独
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| var sql_config = { // 配置链接信息 host: '***', // 数据库地址,一般在本地 user: '***', // 用户名 password: '***', // 密码 database: '***' // 数据库名 } // 输入 sql 语句,和处理函数,给处理函数传入数据。 function conect_sql(sql_msg, cb) { var connection = mysql.createConnection(sql_config); // 表名 connection.connect(); connection.query(sql_msg, (err, rows, fields) => { if (err) throw err; cb(rows); connection.end(); }); }
|
新建了一个 api.js 文件用来专门存放我们的接口逻辑代码。
在 app.js 里引用 :
1 2 3 4 5 6
| var express = require('express'); var app = express(); ... var api = require('./routes/api'); app.use("/api", api);
|
这样引用后,之后我们的接口比如 /getData ,就要加上前缀 api,外部实际访问就是 http/https:// + 我们的域名或ip + api + getData.
统计接口
做好准备工作后再编写接口其实就非常容易了。由于要获取归属地,这里我们使用网易的接口,:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| // 统计接口 添加ip归属地 router.get('/saveNext', function (req, res, next) { res.header('Access-Control-Allow-Origin', '*'); var str = req.connection.remoteAddress; var user_ip = str ? str.split(':')[str.split(':').length - 1] : '';
request.get(`http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=${user_ip}`, (err, resR, body) => { body = JSON.parse(body);
var country = body.country || ""; var province = body.province || ""; var city = body.city || "";
var member_ip = deletGang(req);
var sql_msg = `INSERT INTO ${tabe_name} (url_id, member_ip, ip_country, ip_province, ip_city) VALUES ("${member_ip}","${user_ip}", '${country}', "${province}", "${city}");`;
conect_sql(sql_msg, function () { res.send('success'); }); }); });
|