拦截外链脚本——js.allow 白名单与脚本屏蔽
为什么需要拦截外链脚本
现代网页大量使用第三方 JavaScript:
- Google Analytics、百度统计等追踪脚本
- DoubleClick、AdSense 等广告脚本
- Facebook Pixel、Twitter SDK 等社交分享脚本
- 字体加载、CDN 库、错误上报等
这些脚本不仅影响加载速度,还会在后台收集用户行为数据。拦截它们可以:
- 大幅提升页面加载速度
- 减少数据收集和隐私泄露
- 减少 CPU 占用(某些广告脚本持续运行动画和定时器)
开启方式
- 长按 设置按钮
- 选中"拦截外链脚本"
- 强制清空后台重启 uWeb
开启后,网页中引用自外部域名的 <script> 标签将被阻止加载。
什么是"外链脚本"
外链脚本指 <script src="..."> 中 src 指向的域名与当前页面域名不同的脚本。例如:
当前页面是 https://example.com/page.html:
<script src="/js/main.js">— 同一域名,不会被拦截<script src="https://cdn.example.com/lib.js">— 不同域名,会被拦截<script src="https://www.google-analytics.com/...">— 不同域名,会被拦截
js.allow 白名单
拦截外链脚本后,有些网站功能可能需要第三方脚本才能工作(如 Google 登录、PayPal 支付、reCAPTCHA 验证等)。js.allow 文件用于白名单放行:
格式
每一行一个信任的域名:
accounts.google.com
www.gstatic.com
paypal.com
www.google.com
工作机制
开启"拦截外链脚本"时:
- 所有外链脚本默认被阻止
- js.allow 里列出的域名不被阻止
- 同一域名的主站资源始终不受影响
推荐的白名单配置
| 场景 | 应该放行的域名 |
|---|---|
| Google 登录 | accounts.google.com, www.gstatic.com |
| reCAPTCHA | www.google.com (recaptcha), www.gstatic.com |
| PayPal | paypal.com |
| 国内常用 | cdn.bootcdn.net, cdnjs.cloudflare.com, cdn.jsdelivr.net, unpkg.com |
| 字体(如果需要) | fonts.googleapis.com, fonts.gstatic.com |
排查网站异常
拦截外链脚本后如果某些网站功能异常:
- 在普通浏览器打开同网站,打开开发者工具 → Network → 筛选 JS
- 对比被拦截和放行的脚本
- 找出网站正常运行需要的第三方域名
- 添加到 js.allow
- 强制清空后台重启 uWeb
与 sitejs 的关系
拦截外链脚本是"网络层面阻止",与 sitejs/ 目录里的用户脚本不冲突:
- sitejs/ 里的用户脚本是 uWeb 自己注入的,不受外链拦截影响
- 被拦截的第三方脚本如果是广告脚本,用户脚本可以绕过它自己实现类似功能
- 某些"反广告"检测脚本就是第三方脚本,拦截后检测失效,sitejs 的脚本就能正常执行
配合长按 ☰ 的额外操作
长按底部工具栏 ☰ 菜单按钮可以对页面做更多清理:
- 隐藏浮动信息 — 隐藏 position:fixed 的元素(悬浮广告、粘性弹窗)
- 移除横幅 — 移除 banner 类元素
- 清空定时器 — clearTimeout/clearInterval 防止广告弹窗定时触发
- 中断可疑事件 — stopPropagation 防止广告用户交互触发
- 等待 — 防止延迟触发
这些操作是"即时"的,不需要配置文件,在你觉得当前页面广告特别多时临时使用。