Emby  页面加锁
Emby 页面加锁

Emby 页面加锁

⚠️ 先重申重点

这个 JS 锁只针对浏览器网页,Emby APP(安卓 / TV)不受影响,APP 正常直连 8096 使用; 缺点:Emby 每次升级,这个文件会被覆盖,需要重新粘贴一次代码; 原理:打开登录页先弹出密码框,输对全局密码,才加载你截图里的头像选择界面。

一、找到目标文件(群晖 DSM7)

控制面板 → 终端机和 SNMP,开启 SSH,端口默认 22

用 WinSCP 或者 Xshell 登录 NAS

路径(群晖套件版 Emby):

/volume2/@appstore/EmbyServer/system/dashboard-ui/index.html

如果是 Docker 安装的 Emby:进入容器,/opt/emby-server/system/dashboard-ui/startup/login.html 👉 先备份一份 login.html!防止改错页面空白

打开 login.html,在文件最顶部,<head> 标签最开头插入下面这段 JS 代码:

<script>
// ========== 这里改你的全局页面密码 ==========
const pagePwd = "1314";
// ==========================================
(function(){
    let lock = true;
    while(lock){
        let inputPwd = prompt("🔒 访问Emby网页,请输入页面解锁密码");
        if(inputPwd === null){
            // 点取消,直接空白
            document.body.innerHTML = "<h1 style='color:#fff;text-align:center;margin-top:100px'>拒绝访问</h1>";
            lock = false;
        }else if(inputPwd === pagePwd){
            lock = false;
        }else{
            alert("❌ 密码错误,请重试");
        }
    }
})();
</script>

✅ 修改 const pagePwd = "123456"; 引号内换成你自己想要的统一密码

保存文件,刷新 Emby 网页,就会先弹密码框,输对才显示你截图的 yuelogin 头像选择页面。

三、进阶优化(可选,更美观,不用浏览器原生 prompt)

如果你不想用浏览器自带的 prompt 弹窗,想要深色、和 Emby 风格统一的自定义弹窗,替换上面代码为这个版本:

<script>
const pagePwd = "1314";
window.onload = function(){
    // 创建遮罩层
    const mask = document.createElement('div');
    mask.style.cssText = `
        position:fixed;inset:0;background:#111;z-index:999999;
        display:flex;align-items:center;justify-content:center;flex-direction:column;
        color:#fff;font-size:18px;
    `
    mask.innerHTML = `
        <h2>🔒 Emby网页访问锁</h2>
        <input type="password" id="pwdInput" placeholder="请输入解锁密码" style="padding:8px;font-size:18px;width:240px;margin:10px 0">
        <button id="unlockBtn" style="padding:8px 16px">解锁</button>
    `
    document.body.prepend(mask);
    document.body.style.overflow="hidden";
    const input = document.getElementById('pwdInput');
    const btn = document.getElementById('unlockBtn');
    function check(){
        if(input.value === pagePwd){
            mask.remove();
            document.body.style.overflow="";
        }else{
            alert("密码错误");
            input.value="";
            input.focus();
        }
    }
    btn.onclick = check;
    input.onkeydown = e=>{if(e.key==='Enter') check()}
}
</script>

个版本弹窗是深色,和 Emby 黑色 UI 匹配,支持回车提交。

四、重要避坑清单

备份 login.html!一旦 Emby 更新,这个文件会被原版覆盖,锁消失,需要重新粘贴

只对网页生效! 手机 / TV Emby APP 不走这个 html 页面,不受这个锁,直接连 8096 正常登录

这个属于前端 JS 锁,不是强安全锁:懂前端的人打开 F12 开发者工具可以看到代码里的密码,适合内网防随手点开,不适合防有心破解

改完如果页面空白:说明 html 标签写错,把备份的 login.html 还原回去

⚠️ 更新方法

通过winscp下载index.html到桌面

直接用普通 admin 账号连 SFTP,进入 /tmp,把你电脑上改好的 index.html 拖进去。

/tmp 任何人都能写,不需要 root。

cd /tmp

上传完成后,回到你现在这个 root 终端,执行覆盖:

cp /tmp/index.html /volume2/@appstore/EmbyServer/system/dashboard-ui/index.html
chmod 644 /volume2/@appstore/EmbyServer/system/dashboard-ui/index.html

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注