playzip.com 禁止跳转广告油猴脚本
playzip.com 会在页面里偷偷加载一个广告脚本(abcd.js),当你在页面上任意点击时,它就会弹出一个广告窗口把你带到别的网站。更隐蔽的是:
本脚本在页面加载最早时刻(document-start)介入,把这条广告链路彻底掐断,不影响网站任何正常功能(看视频、点按钮、站内导航)。
第 1 层 脚本阻断
广告 js 文件在插入页面瞬间被直接移除,根本不执行
↓ 若站点换了文件名
第 2 层 注册拦截
即使广告脚本执行了,它想注册的点击监听器 handleAdClick 会被原地拦截
↓ 若站点换了函数名
第 3 层 出口兜底
即使前两层都被绕过,弹广告的最后一步 window.open
会命中广告域名黑名单被直接拦下,未知域名记录日志放行
三层互相独立,站点想穿透必须同时改掉文件名、函数名和全部广告域名。脚本还内置了对抗现代浏览器沙箱隔离的双通道注入与延迟拆除机制,不依赖加载时机。
dist/local_build.js 内容粘贴进 Tampermonkey 新建脚本)@require file:// 引用产物(见 README.md 的部署一节)安装后访问 playzip.com 即自动生效,无需任何配置。
打开 DevTools 控制台(F12),可以看到带 [mk-playzip] 前缀的日志:
| 日志 | 含义 |
|---|---|
脚本已加载, readyState: xxx |
脚本已在该时机执行 |
页面世界补丁注入成功 |
已逃逸沙箱,补丁作用于页面 |
已阻断广告脚本: .../abcd.js |
第 1 层命中 |
已拦截 handleAdClick 注册 |
第 2 层命中 |
已拦截广告弹窗: <广告网址> |
第 3 层命中 |
window.open 放行: <网址> |
网站的正常弹窗被放行(用于观察有无误伤) |
实测广告是否还会弹:控制台执行 localStorage.removeItem('lastAdTimestamp') → 点一下页面 → 等 90 秒以上 → 再点一下 → 不应有任何新窗口。
Q:为什么我装了脚本,别人却没见过这个广告?
广告脚本只对 navigator.language 为 zh-cn 的浏览器激活,中文用户专属。
Q:会不会误伤网站正常功能?
拦截条件全部精准定向:脚本文件名、handleAdClick 函数名、四个已知广告域名。网站自身的任何 window.open(如分享、登录)不在黑名单内一律放行,且放行记录在控制台日志里可查。
Q:控制台提示注入未确认怎么办?
说明页面 CSP 拦截了内联注入,但 eval 兜底通道通常已生效;若广告仍会弹出,请反馈该条日志。
Q:站点改版后又弹广告了? 广告换域名 / 换脚本名后需要更新脚本内的黑名单,详见 README.md 的维护一节。
https://github.com/hgztask/mk-playZip-BanJumpingAds
欢迎在仓库中反馈问题(广告域名更新、站点改版失效、误伤等),也欢迎 Star / PR。