How Fugu is the Web?
截图:
简介:
一个扩展,用于照亮 Project Fugu 🐡 API Web 应用程序想要使用的功能。
怎么运行的
API数据
不同 Project Fugu 🐡 API 的原始数据在表格中进行整理,然后转换为 JavaScript,因此保持 API 列表更新有望成为一项简单的任务。
API检测
该扩展程序通过 chrome.webRequest.onBeforeRequest.addListener() API 监视页面发出的请求。每个响应主体按主框架、JavaScript 和 Web 应用程序清单响应主体分组,然后通过一组正则表达式(例如 /navigator\.hid\.requestDevice\s*\(/g)运行,以确定代码是否提示可能正在使用的 Project Fugu 🐡 API。
浏览器支持检测
大多数 Fugu 项目 API 都可以通过检查接口或属性是否存在来轻松进行功能检测,例如 window 中的“BarcodeDetector”。其他 API 需要 ServiceWorkerRegistration,但幸运的是 Manifest V3 扩展中的弹出窗口使用 Service Worker,因此可以通过可在客户端或 Service Worker 中运行的 IIFE 使用它。一个例子是 (async () => 'periodicSync' in (await navigator.serviceWorker?.ready || self.registration))()。
支持类别如下:
✔️ 您的浏览器支持。
🚫 您的浏览器不支持。
🤷 您的浏览器支持未知。 (唯一了解的方法是用户代理嗅探。)
深层链接
该扩展利用文本片段 URL 深层链接到检测到的 API,例如 https://airhorner.com/scripts/main.min.js#:~:text=navigator.setAppBadge(。对于 main框架文档中,源代码呈现在由扩展控制的帮助器 HTML 页面中,因为不可能链接到 view-source: 协议链接。
局限性
• 遗憾的是,chrome.webRequest.onBeforeRequest.addListener() API 无法“查看”由服务工作线程处理的请求(crbug.com/766433)。对此有三种可能的解决方法:
- 通过 ⌘/ctrl+shift+r 硬重新加载。
- 打开 DevTools 并选中“应用程序”选项卡的“Service Worker”部分中的“绕过网络”复选框。
- 清除“应用程序”选项卡的“存储”部分中的存储。
• 该扩展仅进行静态代码分析,即不能保证应用程序实际使用检测到 Project Fugu 🐡 API 的代码片段。
• 不会检测到高度精简的代码。例如,如果应用程序将 navigator.clipboard.write() 缩小为 const nav = navigator; nav.clipboard.write(),扩展程序不会检测到这一点。
执照
阿帕奇2.0。