ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

MediaGo 浏览器扩展(Manifest V3)使用与原理指南:跨站视频嗅探、一键导入 Desktop 与 Docker

MediaGo 浏览器扩展(Manifest V3)使用与原理指南:跨站视频嗅探、一键导入 Desktop 与 Docker 音视频桌面应用后端【免费下载链接】mediago跨平台视频提取工具支持流媒体下载、视频下载、m3u8 下载及 B站视频下载提供 Windows 和 Mac 桌面客户端。Cross-platform video extraction tool: Supports streaming download, video download, m3u8 download, and Bilibili video download, with desktop clients for Windows and Mac.项目地址https://gitcode.com/caorushizi/mediago点击查看免费下载本篇指南以 MediaGo 仓库自带的轻量级 Manifest V3 浏览器扩展为对象完整讲解它的嗅探能力、安装方式、三种调用模式Desktop Schema 协议 / Desktop HTTP / Docker 自建服务、导入行为开关与常见故障排查并结合packages/mediago-extension与packages/browser-extension的源码实现说明其底层工作机制。读完本文你将能够在 Chrome / Edge 中正确安装并配置该扩展理解协议调用与 HTTP 调用各自的边界并能在测试连接失败、批量导入失败等问题出现时快速定位原因。扩展能做什么跨站嗅探与页面识别MediaGo 自带一个随 Desktop 版本一同发布的轻量浏览器扩展核心能力是嗅探 一键导入跨站点嗅探 HLS / m3u8 流以及直连的.mp4/.flv/.mov等媒体文件识别特定视频站点页面Bilibili 视频页、YouTube 视频 / 短片 / 直播 / 嵌入页此外还覆盖 XTwitter、TikTok、抖音、小红书等平台的 URL在浏览器工具栏图标上显示当前页面已检测到的资源数量一键将单条或全部资源导入 MediaGoDesktop 或自建服务。从源码看嗅探逻辑集中在 背景脚本它把检测分成两个层级请求级检测request-level通过chrome.webRequest.onSendHeaders监听所有标签页的外发请求用matchRequestUrl(details.url)按路径匹配.m3u8、.mp4等资源命中后把资源追加到对应标签页的检测列表并附带页面标题、来源文档 URL 与请求头formatHeaders把HttpHeader[]拼成换行分隔的name:value文本。对 m3u8 资源还会进入一个 150ms 去抖的批量检查流程queueInspection/flushInspections通过后端/api/sources/inspect接口探测码率与多码率变体信息。页面级检测page-level监听chrome.tabs.onUpdated在标签页 URL 落定后调用matchPageUrl识别 Bilibili / YouTube 等站点此时检测到的资源就是页面 URL 本身——真正下载时由 MediaGo 后端的专用提取器BBDown 之于 Bilibili、yt-dlp 之于 YouTube负责解析。扩展针对哪些站点启用页面级功能由 manifest.config.ts 中的PAGE_ACTION_MATCHES白名单定义bilibili.com、youtube.com、youtu.be、x.com / twitter.com、tiktok.com、douyin.com、xiaohongshu.com 等这也是 content script 的注入范围。此外DEFAULT_SETTINGS中默认开启的pageQuickActionEnabled会在这些站点页面内注入快捷操作按钮入口见 content/page-action-entry.ts。安装以加载已解压的扩展程序方式安装MediaGo 扩展目前尚未上架 Chrome Web Store必须通过开发者模式加载已解压的扩展程序安装。Desktop 版安装器已经把扩展产物打包进安装目录无需单独下载。官方步骤打开 MediaGo Desktop 应用进入设置 → 更多设置 → 浏览器扩展目录点击按钮打开扩展文件夹在 Chrome / Edge 地址栏访问chrome://extensions/右上角开启开发者模式点击加载已解压的扩展程序选择第 2 步打开的那个文件夹扩展图标出现在工具栏即安装成功建议点击图钉将其固定。若你是在开发环境中手动构建扩展需要先在仓库根目录执行构建命令产出dist产物后再按上述流程加载pnpm -F mediago/extension build扩展包的构建脚本定义在 packages/mediago-extension/package.jsonbuild走 Vite crxjs/vite-plugin生成 MV3 产物另附pack打 zip 包、verify:build-artifacts校验构建产物与lint/type:check等质量门禁。值得注意的一个设计细节扩展的version字段直接读取 Desktop 应用版本号apps/electron/app/package.json并剥离 SemVer 后缀后写入 manifest 的version完整版本号则放入version_name见 manifest.config.ts 的toManifestVersion。这样chrome://extensions页面显示的版本与 MediaGo 窗口的当前版本保持一致两处版本只维护一份。manifest 同时声明了minimum_chrome_version: 127、default_locale: en以及webRequest、tabs、storage、cookies权限与all_urls主机权限。三种调用模式配置与底层机制安装后点击扩展图标在弹窗右上角进入齿轮设置页在连接卡片中选择一种调用方式。官方文档给出的三种模式对比如下模式使用场景要求Desktop · Schema 协议本机装了 MediaGo Desktop允许浏览器唤起协议无配置首次会弹出Open MediaGo?对话框勾选总是允许即可静默直通Desktop · HTTP 本地接口默认本机装了 MediaGo Desktop 且在运行无配置扩展固定连接127.0.0.1:39719Docker / 自建服务 · HTTP连接远端自建 MediaGo 服务端Docker 部署等填写服务器 URL若后端启用了--enable-auth则填 API Key扩展不会自动降级。选定模式后调用失败会直接报错。要换模式请回到设置页手动切换。源码中importSources是一个按settings.mode硬分发的switch失败时不会尝试其他通道与文档描述完全一致。Desktop · Schema 协议Schema 模式不依赖本地端口而是通过**自定义协议深链deeplink**把任务交给操作系统注册的协议处理器Electron 主进程。实现见 mediago-client.tsbuildTaskDeeplink构造形如mediago-community://share?v1url…name…type…的链接协议名来自MEDIAGO_SCHEME见下文openDeeplink通过chrome.tabs.update让当前活跃标签页导航到该协议 URLChrome 检测到无对应 Web 资源后把请求交给系统协议处理器并弹出Open MediaGo?对话框。首次勾选总是允许之后后续调用即为静默直通。协议名并非硬编码MEDIAGO_SCHEME从import.meta.env.APP_NAME读取缺省回退到mediago-community与 Electron 侧注册的 scheme 保持一致见 shared/constants.ts。这意味着重新品牌化 Desktop 构建时只需改一处.env扩展与 Electron 会自动同步。Desktop · HTTP 本地接口默认模式默认模式是 HTTP 本地接口。扩展固定请求http://127.0.0.1:39719常量DESKTOP_HTTP_BASE无需任何配置。注意39719对应 Electron 主进程中硬编码的preferredPort见 apps/electron/src/services/downloader.server.ts是 Desktop 内嵌下载服务专用端口它与独立部署 Go CoreWeb/server 模式使用的9900端口是两套不同的部署形态只是恰好共享同一个二进制排查问题时切勿混淆。Docker / 自建服务 · HTTP连接远端自建 MediaGo 服务端时需要在设置页填写服务器 URL若后端以--enable-auth启动则还需填写 API Key。写入前设置页会对输入做归一化处理URL 去除尾部斜杠、API Key 去除首尾空白见 settings-model.ts 的normalizeConnectionDraft并校验 Docker 模式下 URL 必填。请求时 API Key 通过X-API-Key请求头发送withApiKey同时携带Accept-Language头以匹配扩展所选语言。测试连接做了什么设置页的测试连接按钮底层调用probeHTTP 模式GET /healthy1.5 秒超时任何 2xx 即视为可达probeHttp弹窗和扩展图标状态徽标都复用该探测结果Schema 模式因为无法静默探测系统协议处理器测试会直接打开mediago-community://open深链——若系统里没有注册处理器Chrome 会显示标准的不支持协议提示probeSchemaPing。导入行为两个开关的语义设置页导入行为卡片包含两个开关立即开始下载开 任务进队列并立刻开跑关 仅加入下载列表等用户手动触发。对 Schema 和 HTTP 两种模式都生效。HTTP 导入时该开关映射为POST /api/downloads请求体中的startDownload字段importViaHttp组装{ tasks, startDownload }任务字段包含名称、URL、类型、请求头与空文件夹字段sourcesToTasks。静默导入Schema 模式开 Schema 调用携带静默标记文档描述为silent1MediaGo 收到即创建任务关 MediaGo 会弹出下载表单让你核对名字 / 类型 / 保存路径再提交。仅 Schema 模式生效HTTP 模式一律静默。当前仓库中buildTaskDeeplink构造的深链携带v、url、name、type四个参数解析与静默判定由 Electron 主进程完成。设置项本身持久化在chrome.storage.local的mediago.settings键下见 storage.ts默认值为desktop-http模式、downloadNow: false——即首次安装默认只入列不自动开跑把控制权交给用户。检测到的资源则存放在chrome.storage.session的mediago.tab.tabId键中关闭标签页或重启浏览器即清空避免残留过期数据。界面语言扩展支持中文、英文和意大利语默认跟随浏览器 UI 语言。manifest 以default_locale: en兜底chrome://extensions页面、工具栏提示等扩展无法直接控制的界面文案通过public/_locales/lang/messages.json按浏览器语言解析弹窗与设置页内部的 UI 则用 i18next 单独翻译因此你可以在设置页界面语言卡片强制覆盖为跟随系统 / 中文 / English / Italiano之一。语言解析逻辑见 i18n/language.ts设置保存时同样会通过resolveLanguage归一化为en/zh/it三者之一。常见问题排查点浏览器扩展目录打不开开发场景先跑pnpm -F mediago/extension build构建扩展产物再回到 Desktop 设置页打开目录生产场景重新安装 MediaGo确保resources/extension/存在于应用安装目录中。Desktop · HTTP 模式测试连接失败确认 MediaGo Desktop 正在运行确认端口39719没被其他进程占用Windows 下可执行netstat -ano | findstr 39719如果你本地同时跑了 Web/server 模式的 Go Core注意那个用的是9900不是39719——两者端口不同、部署形态不同。Schema 模式每次都弹窗首次唤起Open MediaGo?或 Open MediaGo-community?对话框时勾选总是允许即可。之后 Chrome 会把请求静默转给 Desktop不再询问。因为深链依赖系统协议处理器任何会重置该允许记录的操作如重装浏览器、清理站点数据都可能导致弹窗重现。批量导入 Schema 模式失败这是协议调用的固有边界chrome.tabs.update只能让当前标签页导航到单个协议 URL无法安全地串联多次调用因此 Schema 模式一次只能发送一条任务。源码中importViaSchema对sources.length 1直接返回批量导入不支持的本地化错误而不是静默丢弃任务。要批量导入请切换到 HTTP 模式Desktop 或 Docker 均可。另外带请求头的资源如需要鉴权 cookie 的流媒体也无法走 Schema 深链深链无法承载请求头同样需要改用 HTTP 模式。进一步探索源码如果你想深入了解扩展的实现细节建议从以下文件入手扩展整体工程packages/mediago-extensionmanifest、popup、options、background、content 五大部分嗅探与标签页生命周期packages/mediago-extension/src/background/sniffer.ts模式分发与协议/HTTP 调用packages/mediago-extension/src/background/mediago-client.ts站点适配器Bilibili / YouTube / 短视频 / Twitter / 小红书packages/browser-extension/src/site-adapters嗅探规则与公共常量packages/common/src各模块均配有较完整的单元测试如 sniffer.test.ts、mediago-client.test.ts、manifest-config.test.ts测试用例本身也是理解行为边界的好材料。赞分享音视频桌面应用后端【免费下载链接】mediago跨平台视频提取工具支持流媒体下载、视频下载、m3u8 下载及 B站视频下载提供 Windows 和 Mac 桌面客户端。Cross-platform video extraction tool: Supports streaming download, video download, m3u8 download, and Bilibili video download, with desktop clients for Windows and Mac.项目地址https://gitcode.com/caorushizi/mediago点击查看免费下载相关推荐GeoJSON.io5分钟掌握免费在线地图数据编辑器的终极指南GeoJSON.io5分钟掌握免费在线地图数据编辑器的终极指南 GeoJSON.io是一款功能强大的免费在线地图编辑器专为地理空间数据可视化而设计。作为一款音视频桌面应用后端为什么选择Eclipse JerseyJAX-RS实现对比与选型指南为什么选择Eclipse JerseyJAX RS实现对比与选型指南 在构建RESTful Web服务时选择合适的JAX RS实现框架至关重要。作为JAX音视频桌面应用后端猫抓浏览器扩展一站式网页视频资源嗅探与下载利器猫抓浏览器扩展一站式网页视频资源嗅探与下载利器 在数字内容日益丰富的今天网页视频已成为我们获取信息和娱乐的重要来源。然而许多用户都曾面临这样的困扰看到心音视频上一篇从设计到打印Blender 3MF插件如何重塑你的3D打印工作流下一篇Ant Design Mobile v5 全览安装上手、按需加载与 CSS 变量主题定制创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表