作者:树上的女爷 | 来源:互联网 | 2023-09-16 11:11
观点:装备id即装备指纹,用来示意用户装备的唯一性背景近来在做用户行动剖析项目的开辟,须要收集用户的装备信息,须要用装备指纹来唯一示意用户操纵装备。web存储都和浏览器相干,我们没
观点:装备id 即装备指纹,用来示意用户装备的唯一性
背景
近来在做用户行动剖析项目的开辟,须要收集用户的装备信息,须要用装备指纹来唯一示意用户操纵装备。web 存储都和浏览器相干,我们没法经由过程js 来标识一台电脑,只能以浏览器作为装备维度来收集装备信息。即用户电脑中一个浏览器就是一个装备。
题目
web 变量存储,我们第一时间想到的就是 COOKIE,sessionStorage,localStorage,然则这3种存储体式格局都和接见资本的域名相干。我们总不能每次接见一个网站就新建一个装备指纹吧,所以我们须要经由过程一个要领来跨域同享装备指纹
要领
我们想到的计划是,经由过程嵌套 iframe 加载一个静态页面,在 iframe 上加载的域名上存储装备id,经由过程跨域同享变量猎取装备id,同享变量的道理是采用了iframe 的 contentWindow通讯,经由过程 postMessage 猎取事宜状况,挪用封装好的回调函数举行数据处理
完成
SDK 收集端,挪用方初始化的时刻挪用要领
collect.setIframe = function () {
var that = this
var iframe = document.createElement('iframe')
iframe.src = "http://localhost:82/"
iframe.style = 'display:none'
document.body.appendChild(iframe)
iframe.Onload= function () {
iframe.contentWindow.postMessage('loaded','*');
}
//监听message事宜
window.addEventListener("message", function(){
that.deviceId = event.data.deviceId
console.log('猎取装备id',that.deviceId)
sessionStorage.setItem('PageSessionID',helper.upid())
helper.send(that.getParames(), that.eventUrl);
helper.sendDevice(that.getDevice(), that.deviceUrl);
}, false);
}
嵌套在 iframe 静态页面里的剧本
扩大浏览
跨浏览器COOKIE
跨浏览器指纹识别
浏览器指纹追踪
运用postMessage处理iframe跨域通讯题目
window.postMessage