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




  • 2020-11-17 10:05:53

    mongoDB 修改密码

    mongodb的用户信息是存放在system.users表中的,修改密码不能直接更新表数据,这样的话,存到表里的密码是明文的,这就不对了。

  • 2020-11-17 10:13:16

    Vue.observable()进行状态管理

    随着组件的细化,就会遇到多组件状态共享的情况, Vuex当然可以解决这类问题,不过就像 Vuex官方文档所说的,如果应用不够大,为避免代码繁琐冗余,最好不要使用它,今天我们介绍的是 vue.js 2.6 新增加的 Observable API ,通过使用这个 api 我们可以应对一些简单的跨组件数据状态共享的情况。

  • 2020-11-17 10:17:18

    MongoDB日志文件查看

    默认情况下,MongoDB在此路径/var/log/mongodb/mongodb.log创建日志文件,如果找不到该日志文件,请检查MongoDB配置文件。

  • 2020-11-17 11:57:16

    app抓包无数据

    我们经常在wifi设置中 设置代理到我们的pc http代理软件上,多数情况下,此时我们开启的app流量都可以在代理软件上看到,比如charles , fiddler等等。 但是细心的人会发现 某些大厂的app 某些请求 在这些 http代理软件上就是抓不到, 给人的感觉就是 流量没从代理软件走一样。

  • 2020-11-17 11:57:55

    app抓不到包,解决很简单

    1.手机安装virtualXpost 并激活xpost 框架,如有问题自行百度。 2.安装justTrustMe,然后再virtualXpost中添加此模块 3.安装手机抓包神器packet capture 4.在virtualXpost中运行app,并打开packet capture抓包就行

  • 2020-11-17 16:50:16

    JS常见加密混淆方式

    目录 前端js常见混淆加密保护方式 eval方法等字符串参数 emscripten WebAssembly js混淆实现 JSFuck AAEncode JJEncode 代码压缩 变量名混淆 字符串混淆 自我保护,比如卡死浏览器 控制流平坦化 僵尸代码注入 对象键名替换 禁用控制台输出 调试保护,比如无限Debug,定时Debug 域名锁定