ARTICLE DETAIL

资讯详情

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

Chrome禁用JavaScript完全指南:黑白名单配置与性能优化

Chrome禁用JavaScript完全指南:黑白名单配置与性能优化 我猜不少人都碰过这种局面打开一个网页风扇突然狂转CPU直接拉满弹窗一个接一个或者页面上的按钮怎么点都没反应。这时候大家第一反应往往是“网页是不是中毒了”其实很多时候就是JavaScript脚本在搞事情。反过来也有一种场景——你在调试自己的页面想让JavaScript全部失效看看页面还能不能正常展示结果满世界找不到一个干净的入口。这篇文章就把谷歌浏览器里JavaScript的“允许”“禁止”“黑白名单”这件事一次说透。你不需要懂太多前端知识只要跟着操作就能做到“让可信网站跑脚本让可疑网站闭嘴”。文章会从原理讲到实操再讲到我踩过的坑适合普通用户也适合前端开发和测试同学收藏备用。1. 为什么要管JavaScript这几个场景最典型1.1 安全与隐私JS被滥用时有多烦先搞清楚一个底层认知JavaScript本身不是病毒它是让网页“活”起来的脚本语言。没有它你没法在线填表单、没法看视频、没法用网银但正因为它能动态执行代码也就成了各种灰色操作的入口。我遇到过最典型的案例是打开一个资料下载站页面看起来正常结果任务管理器里浏览器CPU占用一直稳定在99%。我查了一圈发现那个页面偷偷塞了一段挖矿脚本开着网页就是在帮别人“打工”。还有一类更常见的是广告弹窗、强制跳转、剪贴板劫持——你在页面上随便点一下就弹出一堆游戏推广或者APP下载引导。这些都是JavaScript在背后做的。从安全角度讲禁用JavaScript等于把网页的“手脚”捆住让攻击面大幅缩小。承认吧很多恶意行为靠的就是脚本在你眼皮底下悄悄干活你甚至看不到任何异常。你说这不是刚需什么是刚需1.2 性能与兼容性脚本是卡顿的最大嫌疑第二个场景更日常某些网站打开之后页面滚动跟PPT一样卡或者看一会儿视频就发热掉电。现代网页为了追求炫酷效果塞了各种动效库、埋点脚本、实时轮询请求任何一个写得烂的脚本都能让你整个浏览器遭殃。我自己有台老笔记本性能本来就不算好。有一次打开某资讯网站光是首页就加载了三四十个JS请求其中好几个还是第三方统计和广告SDK。禁用JavaScript之后页面秒开CPU占用掉了一大截——当然代价是评论区和登录按钮也没了。所以“全关”不是终点关键是关掉不信任的保留必要的这就引出了黑白名单。1.3 开发调试临时禁一下能少走很多弯路如果你是前端开发者或者经常折腾各种网页还有一个很实际的用途临时禁用JavaScript用来判断页面上的某个元素究竟是HTML写死的还是JS动态渲染出来的。比如你怀疑某个按钮是脚本生成的只需把JS一关刷新页面如果按钮没了那就确认了JavaScript的功劳。我见过很多刚入行的前端排查问题全靠肉眼猜其实Chrome里早就提供了调试级的禁用功能只是藏得比较深。后面我会专门写一节教你怎么用比装扩展快得多。2. Chrome原生能做什么先别急着装扩展2.1 全局开关一句话让所有网页“哑火”Chrome自带一个全局的JavaScript总开关地址在“设置 → 隐私和安全 → 网站设置 → JavaScript”。进去之后你会看到一个开关默认是开启状态写着“网站可以使用 JavaScript”。把它关掉所有网站的脚本都会停止执行。步骤再拆细一点右上角三个点菜单 → 设置 → 左边栏选“隐私和安全” → 点“网站设置” → 往下找“JavaScript” → 把开关关闭。你可能会问这个开关会影响浏览器内部的设置页面吗放心它只管普通网页不影响chrome://开头的浏览器设置、扩展管理这些内部页面也不影响浏览器本身的菜单操作。关掉之后你打开的网页会变成“裸奔状态”——没有弹窗、没有轮播、没有动态加载但也意味着登录、支付、视频播放这些依赖脚本的功能基本全部瘫痪。所以它适合“先全部关掉再逐个放行”的白名单思路不适合长期盲开。2.2 单站例外Chrome自带的黑白名单玩法很多人不知道在刚才那个JavaScript设置页面的下方还有两个列表“允许发送 JavaScript”和“不允许发送 JavaScript”。这两个列表就是浏览器原生的黑白名单。玩法有两种方向全局开启JavaScript把可疑域名加进“不允许发送 JavaScript”列表这就是黑名单模式。全局关闭JavaScript把银行、邮箱、办公系统这些必须用脚本的站点加进“允许发送 JavaScript”列表这就是白名单模式。我日常更推荐后者。原因很简单默认不开脚本出现异常的风险最小只放行你信任的站点体验损失可控。添加域名时有个小技巧如果你输入的是 example.comChrome默认会覆盖该主域名下所有子域比如 www.example.com、mail.example.com它会自动匹配。不过我不建议只填裸域名就让Chrome替你做主某些站点HTTP和HTTPS是两套逻辑最好把协议都加上比如 https://example.com 和 http://example.com避免白名单“看着加了其实没生效”。2.3 DevTools临时禁用调试场景的好帮手如果你想快速验证某个页面不依赖JavaScript时的表现没必要动全局设置更不用装扩展。打开开发者工具按F12或者右键页面里的任意位置选“检查”然后按一下F1进入设置在左侧找“调试器”打开“禁用 JavaScript”就行。这个功能只对当前标签页有效并且要刷新页面之后才生效。它最大的好处是零干扰——你改完一个标签关掉开发者工具页面依然是禁用状态但你打开新标签一切恢复正常。我平时排查脚本冲突问题时用的就是这一招先把脚本禁用看页面渲染是否正常再逐步放行定位是哪一段代码炸了。如果你看到页面地址栏里写着 javascript:void(0)或者你在别人分享的代码里见到类似 javascript:vdocument.querySelector(video);v.style.rotate-90deg 这种片段先记住一个原则不要在地址栏直接粘贴这类代码地址栏并不是执行JavaScript的窗口。想执行就按F12打开控制台再输入或者保存成书签小工具都比地址栏靠谱。3. 黑白名单方案的三种落地思路3.1 原生开关加例外轻量、零依赖第一种方案就是第二节提到的“全局开关站点例外”。它不需要安装任何扩展也不用担心第三方读取你的浏览数据所有规则都保存在浏览器本地。对条理清晰、访问站点数量不多的人来说这已经够用了。缺点也比较明显界面管理效率低。当你积累了二十个白名单域名想临时关掉其中一个得去设置页面翻半天没有搜索也没有分组体验很原始。而且没有办法一键在“全局开”和“全局关”之间快速切换只能手动点开关。如果你只是给家里长辈的浏览器做一次配置规则几年不变这个方案很合适。3.2 多Profile隔离把“关闭JS”做成独立工作环境第二种思路稍微进阶一点利用Chrome的多用户Profile机制。你可以新建一个专门的配置目录在这个Profile里默认关闭JavaScript再单独放行工作必需的站点配合独立的书签、扩展和Cookie。日常浏览器照常用需要“纯净访问”时打开这个专属环境。具体做法是用命令行参数启动Chrome指定一个专用的用户数据目录。Windows下可以在快捷方式的目标后面加上--user-data-dirD:\ChromeProfile\NoJSLinux和macOS也能用相同参数。这样这个窗口里的所有设置、Cookie、扩展都跟主浏览器隔离相当于一台机器上跑了两套完全独立的Chrome。这个方案特别适合做技术支持的场景。我见过不少维护多套浏览器环境的同事就是用这种方式把“调试专用浏览器”和“日常浏览器”分开互不干扰。缺点是每次要启动对应快捷方式日常使用稍显笨重。3.3 扩展接管灵活性和效率的最佳解第三种方案也是最推荐的日常方案装一个浏览器扩展来管理JavaScript开关。扩展能提供工具栏图标、站点级规则、快捷键甚至能跟广告过滤规则联动。你可以在一个页面上快速切换“允许/禁用”规则还能跟着Chrome账号同步换电脑不丢配置。当然扩展也不是没有代价它多了权限控制理论上能读取你访问的页面内容另外Chrome近几年对扩展权限做了很多限制一些老牌扩展已经不能用了选的时候要看更新时间和兼容性。下面一节我把自己实际用过的几个方案拿出来对比一下你可以按需选。4. 几款主流的JS控制扩展实测体验4.1 Quick JavaScript Switcher一键切换的代表Quick JavaScript Switcher这个名字很直白就是一个快速切换JavaScript开关的工具。安装之后工具栏会出现一个图标点击一下就能在当前站点禁用/启用JavaScript默认状态下对全局也生效。它还支持快捷键不用每次都去点图标。它的实现思路其实是去修改Chrome的站点权限设置不是简单地通过脚本注入来屏蔽JS。这样做的好处是更靠近系统级规则稳定不容易被页面上的反调试代码绕过。实际用下来最舒服的一点是它有一个“当前站点”和“全局”的区分。比如我在某个论坛发现脚本写得极烂页面卡死直接点图标把当前站点关掉不影响其他网站的脚本运行。对不熟悉设置入口的小白来说这个扩展基本没有学习成本。不过也有个坑由于Chrome扩展API的限制某些版本下如果你全局关闭了JavaScript再单独给某个网站添加“允许”例外偶尔会遇到刷新后例外不即时生效的情况需要等一两秒或者重新加载页面。遇到这种情况别急着卸载先刷新两次再说。4.2 uBlock Origin广告过滤加禁用JS的组合拳uBlock Origin本来是个广告过滤扩展但它内置了禁用JavaScript的功能。在uBlock的仪表盘面板里有“全局禁用JavaScript”的开关开启之后所有页面都默认不执行JS你还可以用它的动态过滤规则针对特定域名单独放行或阻止脚本。如果你是“又想要广告过滤、又想管JS”的用户uBlock Origin是性价比最高的选择。它一个扩展能同时干两件事而且规则引擎非常强大加载规则的速度比其他同类工具快很多。我日常是拿它做全局的广告规则过滤再配合站点规则禁用某些网站的第三方统计脚本实测下来页面干净程度明显提升。缺点在哪儿呢uBlock的规则语法有一定的学习成本。比如你要放行某个子域名的脚本得在动态规则界面写 allow 相关规则新手第一次看可能会懵。好在绝大多数人用不到那么深只需打开“全局禁用JavaScript”开关再偶尔把某个信任站点加入白名单就行了。4.3 NoScript最硬核的白名单方案提到JavaScript白名单就绕不开老牌经典NoScript。它默认对绝大部分网站都关闭JavaScript只有当你显式点击扩展图标把某个站点加入“临时信任”“永久信任”之后脚本才会运行。你可以细致到按域名逐个子域放行非常符合安全优先的理念。用NoScript的前提是你能接受它的“折腾”。很多页面之所以显示异常不是因为框架挂了而是因为它加载了来自CDN、统计、第三方登录等多个域名的脚本。你得在NoScript面板里把这些域名都放行页面才能完全恢复。这个过程刚开始挺烦习惯之后反而能对“页面依赖哪些外部资源”了解得一清二楚。我个人的建议是普通用户不要一上来就选NoScript它更适合安全敏感、愿意为隐私付出操作成本的进阶玩家。如果只是想让某个网站别跑脚本原生例外或者Quick JavaScript Switcher就够用了。4.4 油猴脚本不开关但治标不治本用Tampermonkey油猴管理JavaScript思路跟前面几个完全不同——它不是“关掉所有JS”而是通过用户脚本去精准拦截或者改写某些特定的JavaScript行为。比如某个网站总有弹窗你可以写一行脚本把弹窗相关的函数覆盖掉页面其他功能全部保留。这个方案的优点是颗粒度极细几乎不会误伤正常功能缺点是门槛更高。你得会一点JavaScript基础至少能看懂别人写的脚本结构。而且油猴本身不解决“全局禁止JS”的问题它甚至依赖JavaScript运行你把JS关了油猴自己也就废了。所以油猴适合“不想全禁、只想针对特定行为做手术”的用户。如果你连脚本都想省建议还是回到NoScript或者uBlock Origin的大方向。5. 实战把Chrome配置成“白名单模式”5.1 先梳理你的必用站点清单在动手配置之前我建议先花两分钟列一个“必用站点清单”免得后面逐个试错。拿我举例网银、企业邮箱、在线文档、视频会议这几个是我每天都要用的缺了哪个都影响工作。清单不用太复杂记下域名和用途就够了比如工商银行icbc.com.cn需要登录和转账企业邮箱mail.company.com依赖JS做富文本编辑在线文档docs.example.com纯网页版OfficeJS必不可少视频平台bilibili.com播放器完全依赖script把这些列出来之后后面添加白名单的效率会高很多而且你心里有数哪些网站关掉脚本也能浏览哪些网站必须放行。5.2 全局关闭并逐站放行操作步骤分两段走。第一段是关全局进入“设置 → 隐私和安全 → 网站设置 → JavaScript”把“网站可以使用 JavaScript”开关关掉。关掉之后你刷新任意页面就会发现很多原本的交互元素都消失了只剩静态内容和样式。第二段是添加白名单。还在JavaScript设置页面往下拉找到“允许发送 JavaScript”点右侧的“添加”。输入框里填你之前整理好的站点比如 https://example.com保存后该域名就会出现在允许列表里。注意一个小地方Chrome的例外规则是按“源”处理的也就是“协议域名端口”的组合。如果你只填 example.comChrome通常会给你加一个通配符覆盖所有子域但如果你填了 http://example.com跟 https://example.com 是两条独立规则。对于同时支持两种协议的站点最好两个都加上省得以后莫名失效。添加完白名单之后逐个刷新必用网站测试。如果网站功能正常说明放行成功如果还有些按钮没反应优先看地址栏左侧的“站点设置”图标点开看是不是JavaScript被阻止了如果被阻止就在那里面直接允许或者回JavaScript设置页补加规则。5.3 用开发者工具验证效果配置完之后建议再花一分钟用开发者工具验证一下确保规则生效。按F12打开开发者工具切到“网络”标签刷新页面然后看里面的请求列表。如果JavaScript被禁用正常情况下不会出现.js结尾的文件请求如果出现了说明该站点被放行了。想看具体的报错信息就切到“控制台”标签如果看到类似“Refused to execute script”的提示也能确认JS确实被浏览器拦下了。我见过很多人配置完白名单发现页面功能还是不对就以为是浏览器坏了。其实你只需要打开控制台看一眼大多数问题都能定位。不用怕控制台它就是个信息面板不会弄坏你的电脑。6. 常见问题与排查技巧实录6.1 点击链接没反应状态栏却显示javascript:void(0)这是一个高频问题。很多网站的登录按钮、下载按钮实际就是一个“死链接”地址写的是 javascript:void(0)真正的点击行为是靠JavaScript事件绑定的。所以你一旦禁用JavaScript点击这些按钮自然毫无反应就连地址栏都不动一下。遇到这种情况不要把javascript:void(0)当成链接去猜也不要在地址栏手动输入代码。正确做法是如果这个网站你必须用那就把它加进白名单如果只是临时看一眼用扩展或DevTools临时放行也行。对于页面上其他正常链接比如百度搜索的结果链接禁用JavaScript后点击仍然能跳转因为它们走的是普通a标签的href。另外提醒一句别在地址栏直接粘贴 javascript: 开头的代码。Chrome出于安全考虑不允许地址栏直接执行JavaScript会把你输入的javascript: 自动忽略或当成搜索内容想要手动执行脚本去控制台。6.2 白名单不生效或部分页面失效如果你明明在“允许发送 JavaScript”里添加了站点刷新后页面功能还是不正常优先检查三件事第一全局开关是不是后来又被人改回“允许”了请注意“禁用全部JavaScript”和“只禁用某站点的JavaScript”是两套逻辑如果全局开关是开启状态那你添加的“允许发送JavaScript”列表只是冗余真正要关注的是“不允许发送JavaScript”列表是不是把站点拦了。第二域名协议是不是没匹配上有时你添加的是 http 的但网站自动升级到了 https脚本请求都走 https那原来的规则就管不到了。把两个协议都加上最省事。第三是不是扩展和原生规则冲突了如果你同时装了Quick JavaScript Switcher和uBlock Origin并且都在管理站点规则两者可能会打架。排查方法是先禁用其中一个刷新页面再观察。6.3 扩展“关了”JS却仍然有脚本在跑有朋友问过我明明扩展显示当前站点JavaScript已禁用可F12面板里还能看到脚本执行甚至网络请求里还有.js文件。这并不一定是扩展失灵而可能是扩展的实现方式限制。有些扩展是靠“在页面加载前注入致命错误”来阻止脚本运行这种方式对页面里的大多数脚本有效但遇到某些放在iframe里、或者用特殊方式加载的脚本可能鞭长莫及。更彻底的方式是走Chrome的权限接口也就是原生设置里的JavaScript开关。所以我的建议是遇到顽固脚本直接把站点加入原生“不允许发送 JavaScript”列表别只依赖扩展。6.4 公司电脑被策略锁死怎么办如果你用的是公司或学校发的电脑打开“设置 → 隐私和安全 → 网站设置 → JavaScript”时可能会发现选项是灰色的或者提示“由贵组织管理”。这是因为管理员通过Chrome企业策略锁定了JavaScript权限不允许普通用户修改。这种情况下你不要想着绕过策略毕竟企业网络里对脚本的管控行为有其管理目的。正确做法是看看公司是否有官方的IT支持渠道把正当需求发给管理员由他们调整策略或者给你分配一个不受限的用户Profile。尾记一些实际体会折腾JavaScript开关这件事我前前后后花了很长时间才找到平衡。最开始我是全局关闭结果网银登录、视频会议全都用不了白名单加了一大串管理起来特别累后来换成扩展一键切换虽然方便但偶尔又会出现误关误放的情况。现在我的稳定方案是Chrome原生设置里保持全局开启用uBlock Origin过滤广告再针对少数不信任的站点在原生列表里加黑名单。遇到临时需要验证的页面直接用DevTools的“禁用JavaScript”功能。如果你平时只被一个弹窗网站烦实在没必要搞全套黑白名单直接在地址栏左侧点开站点设置把“JavaScript”权限从“允许”改成“阻止”就好了。权限控制永远是越贴近问题本身越高效这是我处理浏览器问题这些年最深的体会。希望这篇文章能帮你少走一点弯路。
返回列表