You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在谷歌环境为网站加密码锁及YouTube锁定JS脚本失效求助

故障根因

  • 语法逻辑错误:location.replace() 本身是直接触发页面跳转的方法,无返回值,将它的执行结果赋值给元素innerHTML的写法完全多余,且会引发报错
  • DOM节点不存在:YouTube 新版页面早已废弃 watch7-content 这个ID的节点,document.getElementById('watch7-content') 会返回null,调用null的innerHTML属性会直接抛出JS异常,导致后续代码(包括console.log)全部终止执行
  • 跳转地址不完整:未带协议头的google.com会被浏览器识别为YouTube站内相对路径,无法正常跳转到谷歌首页
  • 执行时机问题:如果脚本在页面DOM未完全渲染时就触发,即使节点存在也会拿不到元素,触发报错

修复方案

跳转不需要依赖任何页面节点,直接移除多余的DOM操作逻辑即可,简化后脚本如下:

const pass = prompt("YouTube is locked. Password to unlock");
if (pass !== "password") {
  console.log('wrong');
  location.replace("https://google.com");
}

如果需要确保只有在YouTube视频播放页才触发校验,可以加路径判断条件:

// 仅在/watch路径的播放页触发逻辑
if (location.pathname.startsWith('/watch')) {
  const pass = prompt("YouTube is locked. Password to unlock");
  if (pass !== "password") {
    console.log('wrong');
    location.replace("https://google.com");
  }
}

额外优化建议

  • 如果是用油猴类脚本管理器运行,可在脚本头添加 // @run-at document-start 配置,让脚本在页面加载初期就触发,避免用户提前看到页面内容
  • 密码明文写在脚本里容易被绕过,可考虑将密码做哈希校验,提升破解成本

内容的提问来源于stack exchange,提问作者TheNeto06

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:48:03