js获取浏览器指纹
2023-12-15 10:31:25
需要移入crypto-js-4.0.0.min.js
官方文档:https://cryptojs.gitbook.io/docs/
github:https://github.com/brix/crypto-js
finger: function () {
// 获取浏览器 User Agent 信息
var userAgent = navigator.userAgent;
// 获取浏览器 Accept Headers 信息
var acceptHeaders = navigator.acceptHeader;
// 获取屏幕分辨率
var screenWidth = screen.width;
var screenHeight = screen.height;
// 获取时区偏移量
var timezoneOffset = new Date().getTimezoneOffset();
// 创建一个 Canvas 元素
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
// 绘制一个图像,并获取图像数据的哈希值
var text = 'fingerprint';
ctx.textBaseline = "top";
ctx.font = "14px 'Arial'";
ctx.textBaseline = "alphabetic";
ctx.fillStyle = "#f60";
ctx.fillRect(125, 1, 62, 20);
ctx.fillStyle = "#069";
ctx.fillText(text, 2, 15);
ctx.fillStyle = "rgba(102, 204, 0, 0.7)";
ctx.fillText(text, 4, 17);
var canvasData = canvas.toDataURL();
var canvasHash = hash(canvasData);
// 获取本地 IP 地址和端口号
var rtcPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
if (rtcPeerConnection) {
var pc = new rtcPeerConnection({
iceServers: []
});
pc.createDataChannel("");
pc.createOffer(function (result) {
pc.setLocalDescription(result, function () { }, function () { });
}, function () { });
pc.onicecandidate = function (event) {
if (event && event.candidate && event.candidate.candidate) {
var address = event.candidate.candidate.split(' ')[4];
var port = event.candidate.candidate.split(' ')[5];
var ip = address.split(':')[0];
}
};
}
// 整合上述信息生成浏览器指纹
var fingerprint = userAgent + acceptHeaders + screenWidth + screenHeight + timezoneOffset + canvasHash;
// 计算哈希值
function hash(str) {
var hash = 0;
for (var i = 0; i < str.length; i++) {
var char = str.charCodeAt(i);
hash = ((hash << 5) - hash) + char;
hash = hash & hash;
}
return hash;
}
return CryptoJS.MD5(fingerprint).toString();
}
文章来源:https://blog.csdn.net/weixin_45791806/article/details/135010148
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!