浏览器指纹识别-百度模拟真实点击

序言:

  前两天有接收到一下问题,如何拿到浏览器指纹中的位置信息和CPU,在这之前完全没有接触过浏览器指纹,抱着学习和好奇的心态,就去网上查了大量的资料。下面我将学习过程和成果贴出来给大家。

步骤

1、什么是浏览器指纹?

  一般情况下,网站或者广告商都想要一种技术可以在网络上精确的定位到每一个个体,这样就可以通过收集这些个体的数据,然后加以分析之后更加精确的去推送广告和其他的一些活动。Cookie技术是非常受欢迎的一种。当用户访问一个网站时,网站可以在用户当前的浏览器Cookie中永久植入一个含有唯一标示符(UUID)的信息,并通过这个信息将用户所有行为(浏览了哪些页面?搜索了哪些关键字?对什么感兴趣?点了哪些按钮?用了哪些功能?看了哪些商品?把哪些放入了购物车等等)关联起来。

  而随着网民对个人隐私的重视,Cookie越来越不受待见。不少安全工具甚至是浏览器都开始允许或引导用户关闭Cookie功能,比如很多主流浏览器都有一个“隐私模式浏览”功能。同时,我们可以很方便的使用浏览器的快捷键清除缓存,这样在两次访问的区间也就无法识别是否是同一个用户,这样一来,网站就很难追踪用户行为了。

  这个时候浏览器指纹也就应运而生。什么是浏览器指纹呢?而随着网民对个人隐私的重视,Cookie越来越不受待见。不少安全工具甚至是浏览器都开始允许或引导用户关闭Cookie功能,比如很多主流浏览器都有一个“隐私模式浏览”功能。这样以来,网站就很难追踪用户行为了。


2、浏览器指纹追踪

2.1、基本指纹

  基本指纹是任何浏览器都具有的特征标识,比如硬件类型(Apple)、操作系统(Mac

OS)、用户代理(User agent)、系统字体、语言、屏幕分辨率、浏览器插件 (Flash, Silverlight, Java,

etc)、浏览器扩展、浏览器设置 (Do-Not-Track, etc)、时区差(Browser GMT

Offset)等众多信息,这些指纹信息“类似”人类的身高、年龄等,有很大的冲突概率,只能作为辅助识别。

硬件类型:

操作系统:navigator.platform

用户代理(浏览器类型):navigator.userAgent

浏览器版本号:navigator.appVersion

浏览器是否启动cookie:navigator.cookieEnabled

cpu等级:navigator.cpuClass

cpu虚拟核心数:navigator.hardwareConcurrency

系统语言:navigator.language

屏幕分辨率:window.screen

浏览器插件:navigator.plugins

时差区:new Date().getTimezoneOffset()   //-480  (负值是东区,480分钟为8小时,所以中国是东八区)

颜色质量:window.screen.colorDepth

flash插件情况:

//判断是否IE

function isIe(){

   var i=navigator.userAgent.toLowerCase().indexOf("msie");

 return i>=0;

}

//判断是否firefox

function isFireFox(){

    var i=navigator.userAgent.toLowerCase().indexOf("firefox");

 return i>=0;

}

//拿到浏览器指纹的位置  

navigator.geolocation.getCurrentPosition(success, error, options)

varoptions = {

  enableHighAccuracy: true,

  timeout: 5000,

  maximumAge: 0};

function success(pos) {

  varcrd = pos.coords;

  console.log('Your current position is:');

  console.log('Latitude : '+ crd.latitude);

  console.log('Longitude: '+ crd.longitude);

  console.log('More or less '+ crd.accuracy +' meters.');

};

function error(err) {

  console.warn('ERROR('+ err.code +'): '+ err.message);

};

navigator.geolocation.getCurrentPosition(success, error, options);

注意:拿到位置信息,在PC端的时候必须在打开VPN的情况。


2.2、高级指纹

  基本指纹就像是人的外貌特征,外貌可以用男女、身高、体重区分,然而这些特征不能对某个人进行唯一性标识,仅使用基本指纹也无法对客户端进行唯一性判定,基于HTML5的诸多高级指纹对此提供了新思路。

(1)在cookie中种入UUID

  下面是具体的实现方法

function rand(len) {

    varhex ="0123456789abcdef",

        str ="",

        index =0;

    for(len = len ||32; len > index; index++) {

        str += hex.charAt(Math.ceil(1e8 * Math.random()) % hex.length);

    }

    return str;

}varuuid = (newDate).getTime() +"_"+ rand();

  但是随着互联网对个人隐私的重视,cookie越来越不受待见,不少安全工具甚至是浏览器都开始允许或引导用户关闭Cookie功能。这就导致使用cookie的收效甚微。这时候,人们看到了Canvas指纹。

(2)Canvas指纹

  从根本上来说,每一种浏览器都会使用不同的图像处理引擎,不同的导出选项,不同的压缩等级,所以每一台电脑绘制出的图形都会有些许不同,这些图案可以被用来给用户设备分配特定编号(指纹),也就是说可以用来识别不同用户。

function bin2hex(s) {

  vari, l, o ='',

    n;

  s +='';

  for(i =0, l = s.length; i < l; i++) {

    n = s.charCodeAt(i)

      .toString(16);

    o += n.length <2?'0'+ n : n;

  }

  return o;

}

function getUUID(domain) {

    varcanvas = document.createElement('canvas');

    varctx = canvas.getContext("2d");

    vartxt = domain;

    ctx.textBaseline ="top";

    ctx.font ="14px 'Arial'";

    ctx.textBaseline ="tencent";

    ctx.fillStyle ="#f60";

    ctx.fillRect(125,1,62,20);

    ctx.fillStyle ="#069";

    ctx.fillText(txt, 2,15);

    ctx.fillStyle ="rgba(102, 204, 0, 0.7)";

    ctx.fillText(txt, 4,17);

    varb64 = canvas.toDataURL().replace("data:image/png;base64,","");

    varbin = atob(b64);

    varcrc = bin2hex(bin.slice(-16,-12));

    return crc;

}

console.log(getUUID("https://www.baidu.com/"));

  测试结果表明,同一浏览器访问该域时生成的CRC校验码总是不变。可以简单理解为同样的HTML Canvas元素绘制操作,在不同的操作系统不同的浏览器上,产生的图片内容其实是不完全相同的。出现这种情况可能是有几个原因:

在图片格式上,不同web浏览器使用了不同的图形处理引擎、不同的图片导出选项、不同的默认压缩级别等。

在像素级别来看,操作系统各自使用了不同的设置和算法来进行抗锯齿和子像素渲染操作。

即使是相同的绘图操作,最终产生的图片数据在hash层面上依然是不同的。

2.3、硬件指纹

  硬件指纹主要通过检测硬件模块获取信息,作为对基于软件的指纹的补充,主要的硬件模块有:GPU’s clock frequency、Camera、Speakers/Microphone、Motion sensors、GPS、Battery等。


软件是用的谷歌浏览器,但是实际百度统计显示的是各类浏览器
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,295评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,928评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,682评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,209评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,237评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,965评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,586评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,487评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,016评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,136评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,271评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,948评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,619评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,139评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,252评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,598评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,267评论 2 358