ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Streambert 响应头剥离技术:去掉 CSP 与 X-Frame-Options 实现任意嵌入

Streambert 响应头剥离技术:去掉 CSP 与 X-Frame-Options 实现任意嵌入 Streambert 响应头剥离技术去掉 CSP 与 X-Frame-Options 实现任意嵌入【免费下载链接】streambertA cross-platform Electron Desktop App to stream and download any Movie, TV Series or Anime in the World. Zero Ads and Tracking项目地址: https://gitcode.com/GitHub_Trending/st/streambertStreambert 是一款跨平台 Electron 桌面应用可以流媒体播放并下载全球任意电影、剧集和动漫全程零广告、零跟踪。它的任意嵌入能力背后是一个巧妙的响应头剥离技术——在请求响应阶段直接删掉 CSPContent-Security-Policy与 X-Frame-Options 两个安全头让第三方视频源页面可以毫无阻力地内嵌进应用窗口。为什么网页会拒绝被嵌入很多视频源网站会在响应中携带这两个头X-Frame-Options浏览器看到它就拒绝把该页面装进 iframe 或 webviewContent-Security-Policy其中的frame-ancestors指令同样会限制页面能出现在哪些容器里。普通网页开发者的唯一选择是求网站方允许嵌入。但 Streambert 是 Electron 应用它不依赖网站方的配合——它直接改写了浏览器看到的响应头。核心实现onHeadersReceived 钩子 头部删除剥离逻辑集中在主进程入口 index.js 的setupSession()函数中index.js核心只有十几行const stripHeaders (details, callback) { const headers { ...details.responseHeaders }; for (const key of Object.keys(headers)) { const lower key.toLowerCase(); if (lower x-frame-options || lower content-security-policy) delete headers[key]; } callback({ responseHeaders: headers }); };它的工作方式是通过session.webRequest.onHeadersReceived({ urls: [*://*/*] })拦截所有 URL的响应头对每个头做小写比较命中x-frame-options或content-security-policy就整头删除大小写不敏感X-FRAME-OPTIONS、Content-Security-Policy等变体都能命中把处理后的头部回传给网络栈。对 Chromium 来说响应到达渲染进程时这两个头已经从未存在过嵌入限制自然消失。整个过程对用户完全透明。剥离只发生在两个专用会话中Strip 钩子并没有挂到默认会话上而是挂在两个独立分区index.js会话分区用途挂载位置persist:player正片播放器 webviewMoviePage.jsx、TVPage.jsx 的webview partitionpersist:playerpersist:trailer预告片弹窗TrailerModal.jsx 的webview partitionpersist:trailer同时setupSession()还为这两个会话统一设置了桌面版 Chrome 的 User-Agentindex.js避免视频源按移动端 UA 降级画质。主界面TMDB 数据、搜索、书库走默认会话不受影响——剥离被严格限定在确实需要嵌入外部页面的地方。同一钩子体系还顺手做了三件事响应头拦截与请求拦截是同一套webRequest基础设施Streambert 借此一并实现了广告/跟踪拦截约 50 个广告与统计域名的onBeforeRequest直接cancelindex.js被拦截数量由 src/ipc/blockStats.js 统计并展示在界面上m3u8 播放地址嗅探拦截到.m3u8请求时转发给渲染进程m3u8-found事件index.js这是任意内容一键下载的数据来源VTT 字幕嗅探拦截到.vtt请求时解析语言并发送subtitle-found支撑字幕自动匹配与下载src/ipc/subtitles.js。也就是说剥离响应头并不是孤立技巧而是 Streambert 网络层的一小部分同一层设施同时贡献了零广告、可下载、可提取字幕三大特性。小结桌面端任意嵌入的正确姿势对新手来说Streambert 的做法给出了一条清晰的路线定位钩子Electron 的session.webRequest.onHeadersReceived是响应头层面唯一通用的拦截点最小修改只删x-frame-options与content-security-policy两个头其余原样透传不破坏缓存、CORS 等机制会话隔离用session.fromPartition把剥离能力圈在播放器/预告片专用会话内主 UI 保持默认安全策略顺带嗅探同层再挂onBeforeRequest广告拦截与媒体地址嗅探一次到位。这套响应头剥离 独立会话的组合拳就是 Streambert 能把任意电影、剧集、动漫源嵌入进同一套界面并零广告运行的底层原因。如果你想复现或深入研究可以从 index.js 的setupSession入手配合 src/ipc/player.js 与 src/ipc/downloads.js 阅读完整链路。【免费下载链接】streambertA cross-platform Electron Desktop App to stream and download any Movie, TV Series or Anime in the World. Zero Ads and Tracking项目地址: https://gitcode.com/GitHub_Trending/st/streambert创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表