FingerprintJS 如何关闭监控请求避免发送使用统计?
【免费下载链接】fingerprintjsThe most advanced free and open-source browser fingerprinting library项目地址: https://gitcode.com/GitHub_Trending/fi/fingerprintjs
如果你用 NPM 或 Yarn 把 FingerprintJS 集成到项目里,库默认会向 FingerprintJS 的服务器发送 AJAX 请求来收集使用统计。本文说明这个请求的触发条件和包含的数据,并给出两种关闭方式:给FingerprintJS.load()传monitoring: false,或改用 CDN 构建(默认不发送)。
监控请求什么时候发、发什么内容
根据 API 参考:
- 每次
load函数运行时,有 0.1% 的概率发送一个请求; - 同一个浏览器实例最多每周发送一次(除非浏览器缓存被清空);
- 请求包含以下信息:
- 库的版本号;
- 客户端发送的 HTTP 头,包括库所在页面的 origin 和 referrer;
- 客户端 IP。
从源码看,该请求是XMLHttpRequest发起的 GET 请求,地址为https://m1.openfpcdn.io/fingerprintjs/v{version}/npm-monitoring,其中{version}是库的版本号(见 src/agent.ts)。NPM 包中monitoring选项的默认值是true(src/agent.ts),所以 NPM 安装方式下请求是默认开启的。
关闭方法:monitoring: false
FingerprintJS.load()的签名(来自 docs/api.md):
FingerprintJS.load({ delayFallback?: number, debug?: boolean, monitoring?: boolean }): Promise<Agent>在现有初始化代码上加一行monitoring: false即可关闭这些请求,官方文档给出的改法:
const fpPromise = FingerprintJS.load({ + monitoring: false })完整的 NPM 集成示例(其余部分与 readme.md 中的示例一致):
import FingerprintJS from '@fingerprintjs/fingerprintjs' const fpPromise = FingerprintJS.load({ monitoring: false }) ;(async () => { const fp = await fpPromise const result = await fp.get() console.log(result.visitorId) })()monitoring: false的作用是禁掉库发给 FingerprintJS 服务器的统计请求(docs/api.md),指纹采集逻辑本身不受影响,fp.get()照常返回visitorId。
替代路径:使用 CDN 构建
API 参考和 v4 到 v5 迁移指南都说明:从 CDN(openfpcdn.io)下载的脚本默认就是关闭监控的。源码中可以看到对应机制——CDN 会把运行时标志window.__fpjs_d_m替换为true,monitor()随即直接返回、不发送请求(src/agent.ts)。
如果你的项目不需要把库打进自己的构建产物,直接从 CDN 加载(例如import('https://openfpcdn.io/fingerprintjs/v5'),写法见 docs/api.md 的 Browser ECMAScript module 一节),就不必额外传monitoring: false。
验证监控确实没有发送
项目的测试代码 src/agent.test.ts 给出了明确的验证逻辑:
- 调用
load({ delayFallback: 0, monitoring: false })后,断言XMLHttpRequest完全没有被构造,open和send也都没有被调用,并且agent.get()仍能正常执行; - 反之,默认配置(或不显式传参)下,
XMLHttpRequest会被构造,open以get方法和匹配fingerprintjs/v*/npm-monitoring的 URL 被调用(src/agent.test.ts)。
开发时也可以利用请求 URL 中固定的npm-monitoring路径段,在浏览器网络面板里按该关键字过滤,检查页面加载过程中是否出现统计请求。注意由于 0.1% 的采样概率,单次load本来就不一定会发请求,过滤不到不能说明开关没生效。
限制与适用条件
monitoring选项针对的是 NPM/Yarn 安装方式下的统计请求;CDN 构建本来就不会发送,无需(也不能靠这个参数再去改)它;- 关闭的只是使用统计请求。请求本身按文档描述不包含指纹数据,但包含页面 origin、referrer 和客户端 IP,如果你的合规要求是不向 FingerprintJS 服务器发任何请求,就应按上文把
monitoring置为false或改用 CDN 构建。
【免费下载链接】fingerprintjsThe most advanced free and open-source browser fingerprinting library项目地址: https://gitcode.com/GitHub_Trending/fi/fingerprintjs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考