Quantumult X去广告效果.jpg

毒奶去广告计划 for Surge_QuantumultX以及油猴脚本使用效果(Android Firefox等).jpg

via Twitter

毒奶去广告计划.png

I. 前序(必看/Mac/Windows/Android/网页广告拦截方案)

选择适合自己的去网页广告方案

安卓用户

macOS/Windows 用户

photo_2023-10-27_19-00-23.jpg

使用广告拦截器违反 YouTube 服务条款你似乎在使用广告拦截器。 除非停用广告拦截器或将 YouTube 列入许可名单,否则将无法播放视频。广告让全球数十亿用户能够使用 YouTube。你可以订阅 YouTube Premium,畅享无广告打扰的体验,而创作者通过你的订阅仍然可以。” 截止目前,Adguard 在屏蔽 Youtube 广告已经失效;ublock Orgin 仍然有效。博主至今已有好几年没见过 YouTube(PC网页版)广告了。10.28.2023 更新

毒奶去网页广告计划

其去广告原理与 Adguard/uBlock Origin 大同小异;本计划开源,源码已同步至 Github - Adblock4limbo,有前端基础知识的小伙伴未来如有需要也可自行制作去广告重写/模块,以满足自己个性化需求;

毒奶去网页广告计划支持平台

支持平台: iOS/Mac/Windows;
使用代理软件或浏览器扩展实现: Quantumult X / Surge /Shadowrocket (Loon的话博主没买,大家可以尝试去移植)或油猴脚本管理器(诸如Userscripts/Stay2/Tampermonkey/安卓手机也是可以安卓油猴脚本的;参阅);
涉及模块: Rewrite/MITM(中间人攻击(英語:Man-in-the-middle attack,缩写:MITM)在密码学和计算机安全领域中是指攻击者与通讯的两端分别建立独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。)

前端知识参阅

JavaScript

window.open-defuser.js ,脚本来自 https://github.com/gorhill/uBlock/wiki/Resources-Library#windowopen-defuserjs- ;可将其追加嵌入网页响应体的 <head> 标签开始之后 或 </body> 标签结束之前,即可打断 弹窗

window.open-defuser.js

function window_open_defuser() {
    'use strict';
    let arg1 = '{{1}}';
    if (arg1 === '{{1}}') { arg1 = ''; }
    let arg2 = '{{2}}';
    if (arg2 === '{{2}}') { arg2 = ''; }
    let arg3 = '{{3}}';
    if (arg3 === '{{3}}') { arg3 = ''; }
    const log = /\blog\b/.test(arg3)
        ? console.log.bind(console)
        : () => { };
    const newSyntax = /^[01]?$/.test(arg1) === false;
    let pattern = '';
    let targetResult = true;
    let autoRemoveAfter = -1;
    if (newSyntax) {
        pattern = arg1;
        if (pattern.startsWith('!')) {
            targetResult = false;
            pattern = pattern.slice(1);
        }
        autoRemoveAfter = parseInt(arg2);
        if (isNaN(autoRemoveAfter)) {
            autoRemoveAfter = -1;
        }
    } else {
        pattern = arg2;
        if (arg1 === '0') {
            targetResult = false;
        }
    }
    if (pattern === '') {
        pattern = '.?';
    } else if (/^\/.+\/$/.test(pattern)) {
        pattern = pattern.slice(1, -1);
    } else {
        pattern = pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
    }
    const rePattern = new RegExp(pattern);
    const createDecoy = function (tag, urlProp, url) {
        const decoy = document.createElement(tag);
        decoy[urlProp] = url;
        decoy.style.setProperty('height', '1px', 'important');
        decoy.style.setProperty('position', 'fixed', 'important');
        decoy.style.setProperty('top', '-1px', 'important');
        decoy.style.setProperty('width', '1px', 'important');
        document.body.appendChild(decoy);
        setTimeout(() => decoy.remove(), autoRemoveAfter * 1000);
        return decoy;
    };
    window.open = new Proxy(window.open, {
        apply: function (target, thisArg, args) {
            log('window.open:', ...args);
            const url = args[0];
            if (rePattern.test(url) !== targetResult) {
                return target.apply(thisArg, args);
            }
            if (autoRemoveAfter < 0) { return null; }
            const decoy = /\bobj\b/.test(arg3)
                ? createDecoy('object', 'data', url)
                : createDecoy('iframe', 'src', url);
            let popup = decoy.contentWindow;
            if (typeof popup === 'object' && popup !== null) {
                Object.defineProperty(popup, 'closed', { value: false });
            } else {
                const noopFunc = (function () { }).bind(self);
                popup = new Proxy(self, {
                    get: function (target, prop) {
                        if (prop === 'closed') { return false; }
                        const r = Reflect.get(...arguments);
                        if (typeof r === 'function') { return noopFunc; }
                        return target[prop];
                    },
                    set: function () {
                        return Reflect.set(...arguments);
                    },
                });
            }
            if (/\blog\b/.test(arg3)) {
                popup = new Proxy(popup, {
                    get: function (target, prop) {
                        log('window.open / get', prop, '===', target[prop]);
                        return Reflect.get(...arguments);
                    },
                    set: function (target, prop, value) {
                        log('window.open / set', prop, '=', value);
                        return Reflect.set(...arguments);
                    },
                });
            }
            return popup;
        }
    });
};

CSS

对于图片/iframe等元素广告,我们可以利用元素选择器配合 !important 使用;将 新样式文件 追加嵌入网页响应体的 <head> 标签开始之后,即可覆盖原广告样式

Adblock4limbo.user.css (举例命名)

.ad_img,img[class*=\"ad_img\"], iframe[src*=\"ads\"], img[href*='.gif'] {display:none ! important; pointer-events: none !important;}

开源技术资源参阅

II. 毒奶去网页广告计划(在维护的网站及功能更新日志)10.25.2023

导航使用操作视频;

功能截图 - 页面右下角按钮.png
功能截图 - 导航详情页.png

功能一览

毒奶去网页广告计划支持时间线
10.25.2023 最新Feature、导航使用指南及常见FAQ -> https://t.me/Adblock4limbo/21
10.13.2023 为去网页广告计划新增导反馈/建议按钮,同时也起到导航左右;(P.S. 不需要使用到导航的用户可以点击进入导航页面,选择隐藏;)
08.27.2023 已在服务器部署多端自动化适配脚本,未来维护会更加轻松;
08.27.2023 新增对 Shadowrocket 的支持(移植自QuantumultX);
04.13.2022 新增对 油猴的支持(按油猴的格式重写了用户脚本);
03.21.2022 新增对 Surge的支持(移植自Quantumult X);
28.10.2020 新增对 Quantumult X的支持;

在维护的网站列表(看看有没有你需要的)

目前去网页广告计划支持约30+网站:涵盖在线影视/电子漫画/XXXX;
参阅:在维护的网站列表;如果其中没有你 希望支持去广告的网站,可以在本文 反馈问题/提交新网站 部分,按要求 反馈问题/提交新网站

III. 反馈问题/提交新网站(重要)

如你经常访问的网站,它上面的广告影响了你的使用体验且你正在使用 Surge Quantumult X 或 Shadowrocket 或 你的浏览器安装有 油猴 - Tampermonkey

New issue.png

1.如果 在维护的网站列表 里没有你 希望支持去广告的网站,你可以 点此提交新网站;2.然后按照后文的 配置教程 部分安装去广告分流/模块/重写/或油猴脚本;(如无意外,你提交的网站较有价值的话,24h内会完成去广告支持);3.在日常使用过程中你的反馈很重要,如果 在维护的网站列表 里的网站换了域名,或又出现了广告,请点此反馈问题 为我们提供相关信息;

反馈问题/提交新网站 需包含信息:网站域名/广告出现页面网址/广告类型如(GIF|弹窗|底部横幅|...),你使用的代理软件(如QuantumultX/Shadowrocket/Surge)或 浏览器扩展 油猴-Tampermonkey...;

IV. 教程食用说明

毒奶去网页广告计划已适配 QuantumultX/Surge/Shadowrocket/Loon/油猴-Tampermonkey/油猴 - Tampermonkey,请根据自己常用的代理软件按步骤操作即可

(Chrome/Firefox(for Mac/Windows)等 桌面浏览器用户 以及 Android 用户 请直接查看本文 for 油猴 - Tampermonkey 部分);

V. 毒奶去广告计划(for QuantumultX)

致力于通过 Quantumult X 去除网页上的广告内容(包括横幅、JS弹出广告等等);

毒奶去网页广告计划仓库
https://github.com/limbopro/Adblock4limbo
在维护的网站列表https://github.com/limbopro/Adblock4limbo/blob/main/Adblock4limbo.weblist
讨论群组https://t.me/Adblock4limbo/21
反馈问题/提交新网站:可以在本文 反馈/问题提交新网站 部分,按要求 反馈问题/提交新网站
Quantumult X 技术参考文档
https://github.com/crossutility/Quantumult-X/blob/master/rewrite.md
过滤器参考:AdGuard 过滤器及 Adblock
https://adguard.com/zh_cn/blog/adguard-filters.html / https://easylist.to/

食用方法

第一步:分流引用

1.复制链接

https://limbopro.com/Adblock4limbo.list

Quantumult X - 引用分流规则 - 策略偏好操作图示.png

2.如图所示,打开 QuantumultX App -> 点击右下角三菱按钮 -> 分流 -> 规则资源 - 点击右上角 +号,在资源路径处粘贴刚刚复制的链接 -> 开启 策略偏好 -> 然后再选则 Reject,保存,退至上层分流-规则资源列表页面;P.S. 无论以后是否还会 + 新的分流规则资源,请确保该分流规则资源(此处我们假设命名为Adblock)始终处于分流-规则资源列表的顶部(上图 3个截图的拼图中,第2个截图所示,Adblock始终处于顶部位置);

第二步:重写引用

https://limbopro.com/Adblock4limbo.conf

iOS 屏蔽网站广告的方法大抵有两种,一种是使用 专为 Safari 设计的 内容拦截器(见附注),更专业,涉及网站更全面;另一种就是本计划所使用到的 网络调试工具(代理工具),通过改写网络请求实现其屏蔽广告的目的;毒奶去广告计划会带大家更深入的了解 Quantumult X 的一些功能,如中间人攻击(英語:Man-in-the-middle attack,缩写:MITM);屏蔽网页广告的一些原理(理论基础,前端知识如CSS/HTML/JavaScript);如果你是QuantumultX用户,且喜欢用 Chrome(Safari同样奏效;当你了解到屏蔽广告的实质的后,你会明白这一点;),那么毒奶计划会非常适合你。

Faq(N/A)

近期有用户反馈在使用TG(电报)时,网络日志会出现 MitM fail(www.google.com:80/443 N/A),有App持续频繁的刷新该请求(异常),如下图所示;

QuantumultX - www.google.com:80/443 N/A.jpg

除了卸载奇怪的电报外,另外一个折中的解决方法是:打开 Quantumult X - 设置页 - MitM - MitM 主机名 - 添加一行主机名如下:
-www.google.com

用于排除代理软件对域名 www.google.com 的中间人攻击;

以上。

VI. 毒奶去广告计划(for Surge)

致力于通过 Surge 去除网页上的广告内容(包括横幅、JS弹出广告等等);

毒奶去网页广告计划仓库
https://github.com/limbopro/Adblock4limbo
在维护的网站列表https://github.com/limbopro/Adblock4limbo/blob/main/Adblock4limbo.weblist
讨论群组https://t.me/Adblock4limbo/21
反馈问题/提交新网站:可以在本文 反馈问题/提交新网站 部分,按要求 反馈问题/提交新网站
Surge 官方技术参考文档https://wiki.surge.community/https://surge.mitsea.com/scripting/http-response
过滤器参考:AdGuard 过滤器及Adblock
https://adguard.com/zh_cn/blog/adguard-filters.html / https://easylist.to/

食用方法

https://limbopro.com/Adblock4limbo.sgmodule

第一步:安装模块:Surge - 首页 - 模块 - 安装新模块 - 粘贴下面的链接 - 好的;(如何 更新模块?:左滑 模块的名称 - 点击 更新;);

https://limbopro.com/Adblock4limbo_surge.list

第二步:配置分流Surge - 首页 - 出站模式 - 规则分流 - 代理规则 - 新增 - 增加新规则集 - 外部规则集 - 策略选择 - Reject - 粘贴 如下 URL

第三步: 更新 外部资源Surge - 首页 - 点击左上角 - 进入你的 配置列表 - 编辑 - 外部资源 - 点击 全部更新(这一步很重要,很多时候大家在第一次安装并更新模块完成附带更新外部资源,就再也不手动去更新 外部资源 了,而是等待它自动更新;);

模块引用后记得更新外部资源,并开启 Rewrite、MitM,脚本的 开关,配置并信任证书;

额外的配置MitM - 配置根证书 - 选项 - 开启 “跳过服务端证书验证” 以及 “用于TCP连接”,正常情况下无需开启;

如何更新模块与外部资源(脚本/分流/重写等)?:模块安装好后,可点击 - 模块 - 找到 安装的模块 ,左滑 想要更新的模块 - 点击 更新 ;返回 Surge - 首页 - 点击左上角的 配置文件名称 - 找到 编辑 - 外部资源 - 全部更新

Faq(N/A)

目前(Surge)暂未发现因本计划造成的其他影响;

VII. 毒奶去广告计划(for Shadowrocket)

致力于通过 Shadowrocket 去除网页上的广告内容(包括横幅、JS弹出广告等等);

毒奶去网页广告计划仓库
https://github.com/limbopro/Adblock4limbo
在维护的网站列表https://github.com/limbopro/Adblock4limbo/blob/main/Adblock4limbo.weblist
讨论群组https://t.me/Adblock4limbo/21
反馈问题/提交新网站:可以在本文 反馈问题/提交新网站 部分,按要求 反馈问题/提交新网站

食用方法

Shadowrocket - 小火箭安装模块的方法.png

https://limbopro.com/Adblock4limbo.module

安装模块

第一步:安装模块: 如图所示,打开 Shadowrocket - 配置 - 模块 - 点击 右上角的加号➕ 粘贴上面的链接 - 然后启用该模块

Shadowrocket - 编辑配置文件 - 分流规则.png

配置分流

https://limbopro.com/Adblock4limbo.list

第二步:配置分流:复制上面的链接,打开 Shadowrocket - 配置 - 找到正在使用的配置文件 - 点击 i 进入编辑页面 - 点击 右上角的加号➕ - 添加规则 - 类型选择 RULE-SET - 策略选择 REJECT - 规则集URL处粘贴刚刚复制的链接 - 保存;

配置解密(MitM)

第三步:配置解密:打开 Shadowrocket - 配置 - 找到正在使用的配置文件 - 点击 i 进入编辑页面 - 找到并进入 HTTPS解密 - 开启 HTTPS 解密开关 - (如未安装证书? 请先安装证书) - 证书授权 - 点击 证书 - 生成新的CA证书 - 安装证书 - 提示“已下载描述文件” - 进入 iPhone的 设置 - 找到 已下载描述文件(一般在飞行模式上面) - 点击并输入密码完成安装;

第四步:安装完成后,你需要去设置 ->通用->关于本机一>证书信任设置 信任 Shadowrocket 证书;

OK,大工告成!

VIII. 毒奶去广告计划(for Loon)

博主未曾购买Loon(也不打算购买),故可能需要花点时间看下文档 ...

IX. 毒奶去广告计划(for 油猴 - Tampermonkey)

注意!如果你是 iPhone/iPad 用户,装有代理软件如 QuantumultX/Surge/Shadowrocket/Loon/Stash 其一,且代理软件处于正常使用状态,请优先按本文之前 相应代理软件配置 的使用说明在代理软件上进行操作,操作完成后无论是使用 Chrome/Safari/Edge,还是 Firefox 都可以得到无差别的去相应网站网页广告体验,无需再使用第三方用户脚本管理器(如Stay)为 Safari 安装用户脚本;本去网页广告计划优先支持代理软件

专为 油猴 - Tampermonkey 浏览器扩展打造(更多的是 Chrome/Firefox 桌面浏览器用户(Windows/Mac)/Firefox for Android 用户),致力于通过 Tampermonkey 引入 JS/CSS 文件的方式去除网页上的广告内容(包括横幅、JS弹出广告等等); Android -> Firefox -> 附加组件 -> 安装 Tampermonkey -> 安装用户脚本 / iOS -> Safari -> 安装 Stay /或其他用户脚本管理器 -> 安装用户脚本;详细步骤可参阅后文;

使用操作视频;

功能截图 - 页面右下角按钮.png
功能截图 - 导航详情页.png

相较于iOS 用户,桌面浏览器用户安装油猴脚本后将额外享受一些 特性(...因为手机没有快捷键可用):

安装油猴脚本后,浏览器打开任何网页右下角都将出现一个导航按钮,相对于iOS用户,你可以使用ESC键快速操作一些功能

1.ESC键的妙用:
1.1 当页面右下角导航按钮消失后,按ESC键可快速唤出;
1.2 当页面右下角出现导航按钮时,此时再按一次ESC键可唤出导航详情页; 1秒内(具体是500ms内)连续按 2次 ESC 键可唤出 导航详情页;
1.3 当处于导航详情页时,按ESC可退出导航详情页;
1.4 当处于导航详情页时,按G键或空格键 可快速唤出搜索框,可快速进行搜索操作(同时会退出导航页);

2.成人保护模式
2.1 当你浏览成人网站时,但因为其他事离开了当前页面:返回时,页面将会模糊化;此时按 ESC 键/点击屏幕/上下滑动都可以解除模糊;
2.2 当你浏览成人网站,看着看着睡着了,页面将会在10分钟后模糊;(未来按需会加锁🔐),再看。

3.锁屏模式
3.1 导航详情页新增锁屏按钮;需要时可模糊/锁定当前网页内容,如需查看页面需输入密码;
3.2 PC端油猴用户可 连按3次ESC键 快速模糊/锁定当前页面;GreasyFork 晚些时候同步更新;

毒奶去网页广告计划仓库:
https://github.com/limbopro/Adblock4limbo
在维护的网站列表https://github.com/limbopro/Adblock4limbo/blob/main/Adblock4limbo.weblist
讨论群组https://t.me/Adblock4limbo/21
反馈问题/提交新网站:可以在本文 反馈问题/提交新网站 部分,按要求 反馈问题/提交新网站

订阅转换工具/去广告分流

需要注意的是,较之于使用 Surge/QuantumultX/Loon/Shadowrocket等iOS代理App ,安卓用户(如使用Clash的用户)/ 以及使用油猴脚本管理器(如Stay/tampermonkey)的用户仍需对部分广告域名进行拦截才能使得网页上的广告得以完美去除;去广告分流规则放在Github上:Adblock4limbo.list/Adblock4limbo_surge.list

greasyfork/sleazyfork 版及 Github版,两个版本请择一使用,同时使用将可能导致未知冲突;

如何安装油猴脚本?

greasyfork/sleazyfork 版

阉割版:不同于 Github 版,我们将按 GreasyFork 规范“阉割”后再同步至 GreasyFork;一些 Feature 碍于步骤繁琐,无法便捷移植至 GreasyFork;如果你喜欢尝鲜,可以选择 Github 版,Github 每次更新都会有记录,每次代码更新均可审计;

毒奶去广告计划油猴 - TamperMonkey版https://greasyfork.org/zh-CN/scripts/443290-adblock4limbo (成人脚本限制,需登录greasyfork账号);
Sleazyfork版免登陆即可安装https://sleazyfork.org/zh-CN/scripts/443290-adblock4limbo

Github版(推荐)

未阉割:引入更多 uBlock Origin 原生脚本(如万能弹窗移除),匹配更多网站;测试功能优先体验;

尝鲜:位于 Github 仓库,每次代码更新均可审查;https://github.com/limbopro/Adblock4limbo/raw/main/Adguard/Adblock4limbo.user.js
https://github.com/limbopro/Adblock4limbo/raw/main/Adguard/Adblock4limbo.user.js

如果你是安卓或Mac/Windows 用户,则可以在相应浏览器上安装油猴(用户)脚本管理器扩展:诸如 TampermonkeyChromium、Firefox(Firefox Nightly for Developers) 和 Safari 都支持安装);Stay for Safari(iPhone)、userscripts for Safari(iPhone);

安卓用户:下载 Firefox(Firefox Nightly for Developers) -> 安装完成后打开 Firfox,打开 Tampermonkey for Firefox Browser ADD-ONS -> 安装完成后打开 GreasyFork 即可安装毒奶去广告计划油猴脚本;其他同理;

安卓用户,且使用 Clash 客户端的用户可使用博主自主维护的订阅转换,自带上述去广告域名;

如觉得好用,请登录 GreasyFork ,并给我们的脚本好评! -> https://greasyfork.org/zh-CN/scripts/443290-adblock4limbo

请不要以差评的方式反馈问题。博主大多数时候(除需更新代码外)不会专门登录 Greasyfork 看评论;可以通过 Github issue 或群组提交反馈。

截屏2023-02-05 21.34.21.png

X. 更多去广告分流(去广告增强)

这里需要再次强调的是,Adblock4limbo.list 内包含的规则很少,仅适用于当前在 维护的网站,如果你需要更强大的分流规则支持,可按需添加如下分流,并将策略偏好设置为 Reject;

更多去广告分流位于https://github.com/limbopro/Adblock4limbo/tree/main/rule

EasyList/EasyListChina/BanAD 介绍

以下分流, QuantumultX 和 小火箭 可直接引用,策略偏好选 Reject;Surge 用户:https://github.com/limbopro/Adblock4limbo/tree/main/rule/Surge ,在这里就不过多介绍;

BanAD.list 针对广告联盟的去广告分流

https://raw.githubusercontent.com/limbopro/Adblock4limbo/main/rule/QuantumultX/BanAD.list

Peter_Lowe_adservers.list 各式各样都有

https://raw.githubusercontent.com/limbopro/Adblock4limbo/main/rule/QuantumultX/Peter_Lowe_adservers.list

easylist.list 针对国外网站的去广告分流

https://raw.githubusercontent.com/limbopro/Adblock4limbo/main/rule/QuantumultX/easylist.list

easylistchina.list 针对中国大陆的网站的去广告分流

https://raw.githubusercontent.com/limbopro/Adblock4limbo/main/rule/QuantumultX/easylistchina.list

XI. Faq(常见问题与解答)

Faq(常见问题与解答)参阅:https://t.me/Adblock4limbo/21

关于内容安全策略以及一些解决办法

使用iOS上的一些代理软件可以轻易做到绕过CSP;如果你尝试通过代理软件在一些网站的网页插入 JS,但未成功,可能该网站开启了CSP,可以参阅上文解决;

一些额外可能会需要知道的小知识:CSP,内容安全策略;关于如何绕过CSP,目前PC端并没有很好的办法,所以去网页广告计划可能无法直接在全部网站投入使用完整功能;(其中的导航功能涉及引入 function.js;部分网站(如Twitter)由于开启了CSP,所以无法直接引用JS;),如你特别需要,可以再额外安装 function.js 对应的用户脚本:function.user.js ,之所以使用.user.js 后缀,是因为用户脚本管理器有这样的约定,用于识别与安装它们;需要注意的是,不能让 adblock4limbo.user.js / function.user.js 在一个没有内容安全策略的网站同时生效,也就是说,你应稍微配置一下 function.user.js ,使其只 match 有内容安全策略的网站;

XII. 其他去广告教程(YouTube App...)

YouTube app 去广告

使用 QuantumultX/Surge/Shadowrocket/Loon/Stash 去除 YouTube app 视频播放页加载广告,方案实现来自神机规则;

NobyDa 去广告分流规则

为避免产生大量重复,如已添加 Adblock4limbo.list ,可不用再添加 NobyDa 去广告分流规则;

ND-AD https://github.com/NobyDa/ND-AD;(For QuantumultX & Surge)
如何使用:自行参阅 Readme 文档; 已很长时间不再维护;

iPhone/iPad/Mac/Windows/Android浏览器广告屏蔽扩展

XIII. Tips

一些小 Tips

禁止浏览器自动跳转到App

测试

新窗口打开

最后修改:2024 年 03 月 12 日 02 : 21 PM