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命令




  • 2017-04-12 11:22:43

    WebView你真的熟悉吗?看了才知道

    在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件。下面总结一下使用webview遇到的那些事、那些坑。

  • 2017-04-12 11:28:14

    史上最全webview详解

    WebView在现在的项目中使用的频率应该还是非常高的。 我个人总觉得HTML5是一种趋势。找了一些东西,在此总结。 本篇最后有一个非常不错 的 Html5Activity 加载类,不想看的可以直接跳下载。

  • 2017-04-12 23:11:59

    Android Studio签名打包的两种方式

    给我们自己开发的app签名,就代表着我自己的版权,以后要进行升级,也必须要使用相同的签名才行。签名就代表着自己的身份(即keystore),多个app可以使用同一个签名。

  • 2017-04-13 10:57:08

    webstorm 怎么关闭jshint

    You need to configure the inspections in Settings/Editor/Inspections, then in the list on the right, find JavaScript/JavaScript validity issues. That worked for me to remove the Chai warnings. (I am using the WebStorm 11 EAP at the moment.)

  • 2017-04-13 14:11:14

    MySQL中的describe关键字

    今天写代码的时候,有一个类的数据始终不能插入,老是提示在You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'describe, picPath1, picPath2, picPath3, picPath4, picPath5, agentId, belongStore' at line 1。因为用的是SSH进行插入,所以SQL语句不用自己写,检查了每个字段也没写错。

  • 2017-04-15 13:34:08

    Android官方技术文档翻译——清单合并

    一般情况下,有三种类型的清单文件需要合并成一个最终的应用程序清单,这里按照优先级顺序列出: Product flavors 和构建类型所指定的清单文件。 应用程序的主清单文件。 类库的清单文件。

  • 2017-04-15 21:47:44

    Android开发笔记——圆角和边框们

    在做Android界面开发时,我们往往希望它尽可能优美,尽可能显得专业。于是你看了看其他应用,哇,好多边框和圆角啊。你是不是也想给自己的应用加上边框和圆角效果?呃……那怎么做呢?如果你是从web前端跑到Android来的,那么我想你一定想到了不下三种解决方案。如用图片替代,用CSS3定义,用JS画。在Android中,其实也有类似的用法,本文将简单介绍两种Android圆角和边框的实现。