-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUserDataCollector.js
More file actions
159 lines (137 loc) · 4.43 KB
/
UserDataCollector.js
File metadata and controls
159 lines (137 loc) · 4.43 KB
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
// Set Dataset
let DataOnUser = [];
// Request access to the geolocation
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
function (position) {
let latitude = position.coords.latitude;
let longitude = position.coords.longitude;
DataOnUser.push(
"Location: " +
"Latitude- " +
position.coords.latitude +
" Longitude- " +
position.coords.longitude
);
},
function (error) {
switch (error.code) {
case error.PERMISSION_DENIED:
DataOnUser.push("Location: User denied the request for Geolocation.");
break;
case error.POSITION_UNAVAILABLE:
DataOnUser.push("Location: Location information is unavailable.");
break;
case error.TIMEOUT:
DataOnUser.push(
"Location: The request to get user location timed out."
);
break;
case error.UNKNOWN_ERROR:
DataOnUser.push("Location: An unknown error occurred.");
break;
}
}
);
} else {
DataOnUser.push("Location: Geolocation is not supported by this browser.");
}
// Request access to the microphone and camera
navigator.mediaDevices
.getUserMedia({ video: true, audio: true })
.then(function (localMediaStream) {
var video = document.querySelector("video");
if (video) {
video.srcObject = localMediaStream;
video.onloadedmetadata = function (e) {
// Optional: do something with the video here.
};
}
})
.catch(function (err) {
if (err.name === "NotAllowedError") {
DataOnUser.push("Error: Camera or microphone access was denied.");
}
});
//waiting for user response before data gathering /// IMPLEMENT
// Get IP Data
fetch("http://ip-api.com/json")
.then((response) => response.json())
.then((data) => {
DataOnUser.push("IP Data: " + JSON.stringify(data));
});
// Get the main language
let language = navigator.language;
DataOnUser.push("Language: " + language);
// Get preferred languages list
let languageList = navigator.languages;
DataOnUser.push("Preferred Languages List: " + languageList);
// Get operating system
let os = navigator.appVersion;
DataOnUser.push("Operating System: " + os);
// Get referrer
let referrer = document.referrer;
if (referrer == "") {
referrer = "No Refferer";
}
DataOnUser.push("Reffering Website: " + referrer);
// Get time of visit
let time = new Date();
DataOnUser.push("Visit Time: " + time);
// Get screen resolution
let screenResolution = `${screen.width}x${screen.height}`;
DataOnUser.push("Screen Resolution: " + screenResolution);
// Get Cookies are enabled or not
let cookiesBool = navigator.cookieEnabled;
DataOnUser.push("Cookies Enabled?: " + cookiesBool);
// Get Cookies
let cookies = document.cookie;
if (cookies == "") {
cookies = "No Cookies";
}
DataOnUser.push("Cookies: " + cookies);
// Get request method
let method = "GET";
DataOnUser.push("Method: " + method);
// Get request path
let path = window.location.pathname;
DataOnUser.push("Request Path: " + path);
// Get request parameters
let parameters = window.location.search;
if (parameters == "") {
parameters = "No Parameters";
}
DataOnUser.push("Request Parameters: " + parameters);
// Get User Agent String (browser, system etc)
let userAgent = navigator.userAgent;
DataOnUser.push("User Agent: " + userAgent);
// Get device type (mobile/desktop)
let deviceType = /mobile/i.test(userAgent) ? "Mobile" : "Desktop";
DataOnUser.push("Device Type: " + deviceType);
// Get battery level
if (navigator.getBattery) {
navigator.getBattery().then(function (battery) {
let batteryLevel = battery.level * 100 + "%";
DataOnUser.push("Battery Level: " + batteryLevel);
});
} else if (navigator.battery) {
let batteryLevel = navigator.battery.level * 100 + "%";
DataOnUser.push("Battery Level: " + batteryLevel);
}
// Get device memory information
if (navigator.deviceMemory) {
let memory = navigator.deviceMemory;
DataOnUser.push("Device Memory: " + memory + "GB");
} else {
DataOnUser.push(
"Device Memory: " + "Memory information is not available in this browser."
);
}
// Get timezone
let timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
DataOnUser.push("Timezone: " + timezone);
// Get online/offline status (if connected to the network)
let onlineStatus = window.navigator.onLine ? "Online" : "Offline";
DataOnUser.push("Online Status: " + onlineStatus);
// Printing data
console.log(DataOnUser);