MakkaPakka518 / ProxyHub_Emby
git clone https://github.com/MakkaPakka518/ProxyHub_Emby.git
v3.4.48 · today
基于Cloudflare搭建的emby反代管理面板
—
stars, 24h
—
stars, 7 days
+120
stars, 30 days · #1,934
120
★ total
27
forks · 0 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
License—
Created2026-10-01 (19d ago)
Last pushtoday
Watchers0
OwnerUser
Links
README excerpt
# 𝙈𝙖𝙠𝙠𝙖𝙋𝙖𝙠𝙠𝙖 Emby 反代面板
一个部署在 Cloudflare Workers 上的 Emby 反代节点管理面板:集中管理多个 Emby 源站的反代节点,支持添加/编辑/删除节点、切换反代模式、全局测速、DNS 管理、流量统计、数据大屏,还带**订阅者只读模式**、**节点申请审核**和**多级权限体系**。
单文件 Worker,登录页 + 管理面板全部在一个 `worker.js` 里,复制粘贴就能部署,不需要任何构建。
> ⚠️ **v3.4.48 起必读(踩坑记录)**:①**改 worker.js 里的前端代码后,必须提取模板字符串内全部 ` ` 块单独做语法检查**——`node --check worker.js`(复制 .mjs)只校验外层 Worker 代码,HTML 模板字符串里的前端 JS 对它只是字符串、根本查不到;曾因编辑搜索函数时残留旧函数头,模板内 ` ` 括号不匹配导致整页 JS 解析失败(页面白屏/卡死)。正确做法:提取全部 ` ` 块(还原 `` \` `` 与 `\${` 转义)逐个 `node --check`(script 模式)。②**订阅用户按源站链接搜索必须走服务端**——订阅用户接口剥离 target 后,前端卡片上没有任何链接可本地匹配;要加 `q` 参数在服务端按 target/域名/备注/后缀过滤,返回仍剥离 target,且**域名绝不能写进任何前端属性**(DevTools 可见即泄露,可参考此前 README 域名泄露事故)。
> ⚠️ **v3.4.46/47 起必读(踩坑记录)**:①节点添加**必须做后缀占用拦截**,不要用 `INSERT OR REPLACE` 直接覆盖——曾因直接 REPLACE 导致订阅用户用已存在后缀把旧节点**静默替换**;源站**域名重复检测**(自动去协议/端口/路径)**仅对新增执行**,不要扩展到编辑/批量改模式,否则历史遗留重复节点会误拦批量操作。②节点列表带宽统计参数**勿再收紧**:曾用 4 并发 + 8 秒超时,节点一多后面排队的全部超时显示「获取异常」,现为 8 并发 + 20 秒超时 + 失败自动重试一次;订阅用户/子管理员不查流量仍秒出,勿让非管理员也走 GraphQL。
> ⚠️ **v3.4.45 起必读(踩坑记录)**:数据大屏统计**必须按北京时间(UTC+8)口径**,不要回退成 UTC——面板下方的播放记录/热力图显示北京时间,而「今日请求分时趋势」若显示 UTC 就会与播放记录日期对不上(实测:北京时间凌晨打开面板,播放记录已是当天 10-21,分时趋势却还停在 UTC 10-20)。正确实现:`getCFTodayStats` 的今日起点用「北京时间今日 00:00」(`bjStart = new Date(now+8h); bjStart.setUTCHours(0,0,0,0); startUtc = bjStart - 8h`);分时 GraphQL 返回的 `datetimeMinute` 是 **UTC 小时**,必须 `(utcHour + 8) % 24` 归桶到北京小时;7 天/30 天的 `date_geq/date_leq` 也按北京时间日期偏移(`bjNow = now+8h` 后取日期)。**注意**:CF 免费额度实际仍按 UTC 00:00 重置(与 CF 控制台一致),「每日免费请求额度」卡片保留 UTC 标注,那是额度口径不是统计口径,别把它当 bug 改掉。播放热力图/播放记录/播放趋势从 3.4.16 起本就是 +8,不要再动。
> **当前版本 v3.4.48**:**订阅用户可用源站链接搜出节点**(订阅用户仍看不到源站链接——target 照常剥离、域名不进任何前端属性——但输入完整链接或域名即可搜出对应节点:`GET /api/routes?q=` 服务端按源站链接/域名/备注/后缀匹配,前端搜索框防抖 300ms 本地匹配 + 服务端补齐)+ **重复提示带节点名**(「已存在相同源站链接的节点『名字』(/后缀)」,一眼知道是哪个节点重复)+ **节点防冲突**(新增/改名节点时后缀已被占用即提示并拒绝保存,不再静默覆盖旧节点;新增节点自动按域名去协议/端口/路径比对,同源站链接提示重复,仅新增执行不影响编辑/批量改模式)+ **带宽统计放宽**(并发 4→8、单次超时 8s→20s、失败自动重试一次,修复节点多时今日流量大面积「获取异常」;订阅用户/子管理员仍跳过流量统计秒出)+ **数据大屏统计统一北京时间(UTC+8)**(今日请求分时趋势改「北京时间 24h」、分时按北京小时归桶;今日请求数/带宽/来源地区/状态码/防火墙拦截改北京今日 00:00 起算;近 7/30 天流量与请求数按北京时间日期范围查询,与播放记录/热力图口径完全对齐;CF 额度卡片保留 UTC 重置标注)+ **修复部分剧 0KB 无法播放**(PlaybackInfo 强制直连块无条件执行,不再受节点开关门控,移除节点级「强制直连播放」开关;PlaybackInfo 内存缓存 5 分钟:同片二次播放免回源,缓存键自动剥除身份/会话参数;重定向 Location 路径级映射 + 非法/无法解析不再下发;30x 指向媒体文件时由 Worker 直接跟随取流以 200/206 返回,EMOS 308 单跳不双跳)+ **节点列表秒出**(路由表 schema 初始化仅首次执行;访客日志清理限频;带宽统计内存缓存 2 分钟 + 并发受限 + 8 秒超时;前端加载并行化;子管理员/订阅用户只查节点、跳过带宽统计)+ **边缘缓存节点化**(从账户设置移到每个节点单独设置、默认开启:同一服同一集第一个用户看完第二个用户秒开,多人使用面板启播加速,可逐节点关闭)+ **强制直连开关通用化**(不再限定 EMOS 模式,所有反代模式都能开启,上移到海报静态缓存旁)+ **EMOS 聚合显示**(EMOS 模式节点新增「开启 EMOS 聚合」开关:聚合播放器如 SenPlayer 按 TMDB 编号跨服查询同一部剧时,自动把本节点列为播放源,EMOS 内容参与跨服聚合;未命中/普通请求原样透传,播放层零改动;目录抓取带内存 + D1 持久缓存)+ **Cloudflare 边缘缓存增强**(Static 直连视频自动共享缓存:同一服同一集第一个用户看完第二个用户秒开,缓存键自动剥除身份与会话参数;账户设置新增「边缘缓存」开关可一键开/关;自动识别转码/播放列表/直播/下载/鉴权 API 并原样回源,仅 200/206 进缓存,兜底不影响播放)+ **订阅用户「可添加节点」权限**(逐用户开通,开通后可直接添加节点无需审核,未开通看不到添加按钮;订阅用户始终不能查看源站线路/编辑/删除)+ **成员添加节点记录**(子管理员与授权订阅用户添加节点自动留存记录,可查可搜)+ **公告单条覆盖**(发新公告自动作废旧公告,子管理员/订阅用户每次进入面板必看、停留 3 秒后可关闭)+ **节点添加申请自动留存申请记录**(账户设置可查可搜)