浏览器扩展如何不实际下载即可获取Sketchfab下载按钮后的glTF数据?
实操解决方案
获取glTF源数据(无需构造动态下载链接)
不用花精力找动态生成的下载地址,直接通过主世界脚本注入hook页面网络请求即可:
在Manifest V3扩展中通过chrome.scripting.registerContentScripts配置world: "MAIN"的内容脚本,重写页面全局的fetch和XMLHttpRequest方法,匹配Sketchfab下载glTF/USDZ资源的请求特征(比如请求路径含download、响应头匹配模型格式),拿到完整的响应二进制数据后传递给扩展逻辑层,不受页面链接生成逻辑变更的影响。
需在manifest.json中提前配置*://*.sketchfab.com/*的主机权限和activeTab权限,确保脚本注入正常。浏览器端直接完成格式转换
转换逻辑完全可以在扩展本地完成,不需要调用外部服务:
引入纯JS实现的glTF处理库,使用GLTFWriter能力即可将拿到的glTF资源(含关联贴图、二进制分片)直接打包转换为.glb格式的二进制数据,转换过程不需要用户做任何手动操作。导出GLB文件
拿到转换后的ArrayBuffer格式GLB数据后,封装为Blob对象生成临时URL,调用chrome.downloadsAPI触发下载,指定文件名后缀为.glb即可,全程不会留存中间glTF文件,完全匹配你需要的工作流。
需在manifest.json中额外配置downloads权限。
内容的提问来源于stack exchange,提问作者Braden Crimmins
相关产品推荐
相关产品推荐

