Fingerprintjs2:一款开源设备指纹采集器,pc浏览器唯一id

2019-01-14 19:25:26

Fingerprintjs2是一款开源的设备指纹采集器。最初的fingerprintjs库创建于2012年,但是由于新版本的开发很难保持向后兼容,因此Fingerprintjs2项目中增加了很多的新内容。

该项目将更多、更有效的来源用于指纹识别,并且可配置,也就是说用户可以选择性地开启其中的选项。该项目还将重点关注IE插件,尤其是在中国流行的QQ、Baidu等。另外,该项目使用了semver(语义化的版本控制系统)。 

安装

使用CDN在线获取:

https://cdnjs.com/libraries/fingerprintjs2

使用bowerinstall命令进行安装:

bowerinstall fingerprintjs2


使用npminstall命令进行安装:

npm installfingerprintjs2


用例

newFingerprint2().get(function(result, components){  console.log(result); //a hash, representingyour device fingerprint  console.log(components); // an array of FPcomponents});

用户可以传递一个带有如下选项的对象:

varoptions = {swfPath: '/assets/FontList.swf', excludeUserAgent: true};newFingerprint2(options).get(function(result){  console.log(result);});

选项的完整列表

由于Flash在隐身模式下是不工作的,因此默认情况下,Flash字体枚举是禁用的,并且使用JS代码获取可用的字体列表。但是,当检测到“excludeJsFonts: true”选项时该库会开始使用Flash。

如果要使用Flash字体枚举,请确保swfobject可用,否则该库会直接跳过Flash部分。

为了确保用户转动设备时,指纹识别的一致性,detectScreenOrientation选项默认情况下为true。

所有的指纹资源都是默认可用的,因此用户不需要去特别配置。

newFingerprint2().get(function(result, components){  // this will use all available fingerprintingsources  console.log(result);  // components is an array of allfingerprinting components used  console.log(components);});

查看本地指纹资源

用户可以通过启动网络服务器并浏览index.html页面来查看本地指纹资源。由于Flash的ExternalInterface安全限制,index.html页面不能从本地文件系统加载。

通过以下方式开启网络服务器:

Ruby1.9.2+

ruby-run -e httpd . -p 8080


Python2.x

python-m SimpleHTTPServer 8080


Python3.x

python-m http.server 8080


PHP5.4+

php -S0.0.0.0:8080


指纹资源列表

1、User Agent

2、语言

3、颜色深度

4、屏幕分辨率

5、时区

6、是否具有会话存储

7、是否具有本地存储

8、是否具有索引DB

9、IE是否指定AddBehavior

10、是否有打开的DB

11、CPU类

12、平台

13、是否DoNotTrack

14、已安装的Flash字体列表

15、使用JS/CSS检测到的字体列表(最多可检测到Flash之外的500种字体)

16、Canvas指纹

17、WebGL指纹

18、浏览器的插件信息

19、是否安装AdBlock

20、用户是否篡改了语言

21、用户是否篡改了屏幕分辨率

22、用户是否篡改了操作系统

23、用户是否篡改了浏览器

24、触摸屏检测和能力

一般情况下,JS字体检测最多可检测65种已安装的字体。用户可通过使用extendedFontList: true选项提升字体检测能力,可提升到500种。

更多指纹资源

1、多显示器检测

2、Silverlight集成

3、Flash linux内核版本

4、内部哈希表执行检测

5、WebRTC指纹

6、Math常数

7、可访问性指纹

8、相机信息

9、DRM支持

10、加速器支持

11、虚拟键盘

12、手势列表(触摸设备)

13、像素密度

14、视频和音频编解码器的可用性

FontList.swf文件的重新编译

1、下载Adobe Flex SDK

2、解压,向$PATH变量中添加bin/目录

3、运行make命令




  • 2019-07-30 22:36:10

    使用 Spring Initializr 初始化 Spring Boot 项目

    万事开头难,你需要设置一个目录结构存放各种项目内容,创建构建文件,并在其中加入各 种依赖。Spring Boot CLI消除了不少设置工作,但如果你更倾向于传统Java项目结构,那你应该 看看Spring Initializr。

  • 2019-08-06 15:30:08

    小程序展示富文本

    然而rich-text有个问题,它不能够给内联img设置宽度100%,这样图片就容易溢出屏幕。我们只能在后台返回富文本的时候对图片的img标签进行格式化。或者前端进行格式化也行,我赞成使用后端,因为很多种情况我们不一定都能想得到。

  • 2019-08-07 09:07:32

    最全的Service Worker讲解

    Service Worker 最主要的特点是:在页面中注册并安装成功后,运行于浏览器后台,不受页面刷新的影响,可以监听和截拦作用域范围内所有页面的 HTTP 请求。 基于 Service Worker API 的特性,结合 Fetch API、Cache API、Push API、postMessage API 和 Notification API,可以在基于浏览器的 web 应用中实现如离线缓存、消息推送、静默更新等 native 应用常见的功能,以给 web 应用提供更好更丰富的使用体验。

  • 2019-08-07 09:09:19

    windows系统下定时关闭程序

    其中xxx.exe是你要关闭的进程中运行的exe,可以ctrl+alt+del打开任务管理器,进到详细信息查看 然后把.txt文件后缀改成.bat(此时要在查看一栏勾上文件拓展名,要不还是txt文档)

  • 2019-08-07 09:16:43

    一个比较完美的PWA例子

    但就目前来讲,PWA是Google主推的一项技术标准,FireFox,Chrome以及一些基于Blink的浏览器已经支持渐进式Web应用了,Edge上对渐进式Web应用的支持还在开发。Apple公司也表示会考虑在自己Safari支持PWA。然而这项功能已经进入了WebKit内核的五年计划中。长期来看,对浏览器兼容性的支持方面应该已经不算太大问题了。况且在现阶段,在不支持渐进式Web应用的浏览器中,你的应用也只是无法使用渐进式Web应用的离线功能而已,除此之外的功能均可以正常使用。

  • 2019-08-07 09:57:48

    spring data jpa 实体类中字段不与数据库表映射

    当我们使用spring data jpa开发的时候,会将实体类中的成员变量与表中的字段一一对应,当我们在实体类中加上一个不与数据库表一一对应的成员变量的时候,此时我们只要在这个成员变量上加上注解@Transient @

  • 2019-08-07 17:16:53

    如何在 Node.js 中使用 import / export 的三种方法

    因为一些历史原因,虽然 Node.js 已经实现了 99% 的 ES6 新特性,不过截止 2018.8.10,How To Enable ES6 Imports in Node.JS 仍然是老大难问题,下面我来介绍三种方法可以让我们在 Node.js 中使用 import/export 。