8

浏览器指纹及用户行为智能推荐简介

 3 years ago
source link: https://www.haorooms.com/post/brower_useraction
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

浏览器指纹及用户行为智能推荐简介

2021年1月17日 87次浏览

我们在浏览抖音等,抖音会根据你的浏览行为,计算出你个人喜好,然后智能推荐给你喜好的信息。我们在网站上浏览了某个商品,了解了相关的商品信息,但并没有下单购买,甚至没有进行登录操作。过两天用同台电脑访问其他网站的时候却发现很多同类商品的广告。

一般情况下,网站或者广告商都想要一种技术可以在网络上精确的定位到每一个个体,就算你没有账号,没有登录,也可以通过收集这些个体的数据,然后加以分析之后更加精确的去推送广告和其他的一些活动。而这个技术就是浏览器指纹技术。智能推荐是根据用户指纹和行文,推荐相关产品的算法,这个算法比较复杂,本文先讲讲浏览器指纹的收集。

游览器指纹,就像现实生活中人的指纹一样,特异地标记着每个上网用户。

浏览器指纹:是一种通过浏览器对网站可见的配置和设置信息来跟踪Web浏览器的方法,浏览器指纹就像我们人手上的指纹一样,具有个体辨识度,只不过现阶段浏览器指纹辨别的是浏览器。

人手上的指纹之所以具有唯一性,是因为每个指纹具有独特的纹路、这个纹路由凹凸的皮肤所形成。每个人指纹纹路的差异造就了其独一无二的特征。

那么浏览器指纹也是同理,获取浏览器具有辨识度的信息,进行一些计算得出一个值,那么这个值就是浏览器指纹。

辨识度的信息可以是UA、时区、地理位置或者是你使用的语言等等,你所选取的信息决定了浏览器指纹的准确性。

如何获取用户信息

要精准定位一个人,那么不光要靠浏览器指纹,还要有大数据分析。例如用户的行为分析,用户兴趣爱好等。我之前也有客户端发送埋点的文章,这些埋点都可以定位用户的一些浏览行为。

基本的浏览器指纹

基本浏览器指纹一般通过 HTTP headers,navigator里面的信息里面获取。github里面有访问浏览器指纹的js库,例如:https://github.com/fingerprintjs/fingerprintjs

还有一个https://github.com/jackspirou/clientjs

比如,列举一个获取客户端字体的方法。

var Detector = function() {
    // a font will be compared against all the three default fonts.
    // and if it doesn't match all 3 then that font is not available.
    var baseFonts = ['monospace', 'sans-serif', 'serif'];
    //we use m or w because these two characters take up the maximum width.
    // And we use a LLi so that the same matching fonts can get separated
    var testString = "haoroomstestfonts";
    //we test using 72px font size, we may use any size. I guess larger the better.
    var testSize = '72px';
    var h = document.getElementsByTagName("body")[0];

    // create a SPAN in the document to get the width of the text we use to test
    var s = document.createElement("span");
    s.style.fontSize = testSize;
    s.innerHTML = testString;
    var defaultWidth = {};
    var defaultHeight = {};
    for (var index in baseFonts) {
        //get the default width for the three base fonts
        s.style.fontFamily = baseFonts[index];
        h.appendChild(s);
        defaultWidth[baseFonts[index]] = s.offsetWidth; //width for the default font
        defaultHeight[baseFonts[index]] = s.offsetHeight; //height for the defualt font
        h.removeChild(s);
    }

    function detect(font) {
        var detected = false;
        for (var index in baseFonts) {
            s.style.fontFamily = font + ',' + baseFonts[index]; // name of the font along with the base font for fallback.
            h.appendChild(s);
            var matched = (s.offsetWidth != defaultWidth[baseFonts[index]] || s.offsetHeight != defaultHeight[baseFonts[index]]);
            h.removeChild(s);
            detected = detected || matched;
        }
        return detected;
    }

    this.detect = detect;
};

使用方法:

/**
 *  d = new Detector();
 *        d.detect('font name');
 */

这样就可以判断有没有某个字体。

因此可以抽离判断有无某个字体的方法:

   isFont: function(font) {
      return new Detector().detect(font);
    },

获取系统字体的方法:

getFonts: function() {
  var fontArray = [];//所有字体列表枚举
  var fontString = "";

  for (var i = 0; i < fontArray.length; i++) {
    if (fontDetective.detect(fontArray[i])) {
      if (i == fontArray.length - 1) {
        fontString += fontArray[i];
      } else {
        fontString += fontArray[i] + ", ";
      }
    }
  }
  return fontString;
}

科技公司通过大数据,会对你进行一个大体的画像,然后按照你的喜好推送信息。

就拿你在玩的抖音来说,你其实可以匿名使用,但是你爱抖胸妹子的喜好,不会因为重装抖音而消失,它已熟知了你的癖好。

这些收集你浏览器信息的动作,默默的在后台发生,用户根本毫无觉察。

你的每一次点击(每次点击都有埋点),都无情的出卖了你,这些信息会被综合分析,相关网站和部门,能够对你进行唯一性识别,进而锁定、追踪。

你虽然没有注册账号,平台却为你分配了身份。

这是识别方式,用于识别你这个个体,而收集的内容,可能更让人瞠目结舌,不要觉得垃圾数据多,存不下,行为数据比那些廉价的磁盘,值钱的多。 包括你的每一次点击,停留的时长,阅读、观看的位置,都在全方位的展示你的个体。

设备、IP、位置、操作习惯,都在不同的角度绘制你的指纹,让你在匿名的互联网上,无处可藏。

如果你没有足够专业的知识或者非常频繁更换浏览器信息的话,几乎 100% 可以通过浏览器指纹定位到一个用户,当然这也不见得全是坏事。

泄露的隐私非常片面,只能说泄露了用户部分浏览网页时的行为。

价值不够,用户行为并未将实际的账户或者具体的人对应起来,产生的价值有限。

有益利用,利用浏览器指纹可以隔离部分黑产用户,防止刷票或者部分恶意行为。

浏览器指纹和大数据分析,大数据智能算法推荐,可以做到这些!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK