-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapp.js
69 lines (60 loc) · 2.05 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
var express = require("express");
var app = express();
var device = require('express-device');
const isbot = require("isbot");
const mongoose = require('mongoose');
const shortid = require("shortid"); //unique id generator
var axios = require("axios").default;
var platform = require('platform'); //get platform inforamtion
var useragent = require("express-useragent"); //get user browser data
const Bowser = require("bowser"); //To detect browser,type,os
var moment = require("moment"); // require
var db = require('./db');
app.use(device.capture());
//Connect database
//Replace this string of data base with you mongodb string
mongoose.connect(DB, {useNewUrlParser: true, useUnifiedTopology: true},()=>{
console.log('DB connected!');
});
//User agent middleware
app.use(useragent.express());
//when user visit the home page
// remove "/" and add any of your page to check for bots
app.get("/", (req, res) => {
let user = req.useragent;
if (isbot(req.get["user-agent"]) == false) {
//get bot ip adress
var ip = req.headers["x-forwarded-for"] || req.connection.remoteAddress;
if (ip.substr(0, 7) == "::ffff:") {
ip = ip.substr(7);
}
//Get bot's country,city,region,language
axios
.get(`https://ipapi.co/${ip}/json`) //need ip to replace with ${ip} before deploying
.then((response) => {
console.log(req.device.type);
//Save data to the database
new db({
botId: shortid.generate(),
date: moment().utc().format( "YYYY-MM-DD" ),
ip: response.data.ip,
country: response.data.country_name,
region: response.data.region,
city: response.data.city,
languages: response.data.languages,
type:req.device.type,
os: user.os,
browser: user.platform,
}).save()
.then((doc)=>{
res.send(doc)
})
});
}else{
res.json({
response:'This user is not a bot'
});
}
});
const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`Listening on ${port}`));