via Twitter;
I. 前序(必看/Mac/Windows/Android/网页广告拦截方案)
选择适合自己的去网页广告方案
安卓用户
macOS/Windows 用户
毒奶去网页广告计划
毒奶去网页广告计划支持平台
使用代理软件或浏览器扩展实现: Quantumult X / Surge /Shadowrocket (Loon的话博主没买,大家可以尝试去移植)或油猴脚本管理器(诸如Userscripts/Stay2/Tampermonkey/安卓手机也是可以安卓油猴脚本的;参阅);
涉及模块: Rewrite/MITM(中间人攻击(英語:Man-in-the-middle attack,缩写:MITM)在密码学和计算机安全领域中是指攻击者与通讯的两端分别建立独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。)
前端知识参阅
https://github.com/limbopro/Adblock4limbo ;
全部代码已放在 Github 仓库,大家可以自行取用,里面有丰富的去网页广告示例;对于前端的学习与Quantumult X/Surge/Shadowrocket 的实操应用(如嵌入脚本/样式)或许也会有一些帮助;值得一提的是,无论 Adguard/Adblock 或油猴脚本,大都是通过嵌入脚本/样式的方式实现对网页中广告元素的移除,Adguard 付费版本提供额外的DNS拦截功能。
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;}
开源技术资源参阅
uBOL-home:https://github.com/uBlockOrigin/uBOL-home;
uBlock Origin Resources Library:https://github.com/gorhill/uBlock/wiki/Resources-Library;
Adguard Scriptlets :https://github.com/AdguardTeam/Scriptlets;
AdGuard 过滤器:https://adguard.com/kb/zh-CN/general/ad-filtering/adguard-filters/;
urlhaus-filter:https://gitlab.com/malware-filter/urlhaus-filter#full-version;https://urlhaus.abuse.ch/;
油猴-Tampermonkey®-技术文档:https://www.tampermonkey.net/documentation.php?locale=zh;
II. 毒奶去网页广告计划(在维护的网站及功能更新日志)10.25.2023
功能一览
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的支持;
在维护的网站列表(看看有没有你需要的)
参阅:在维护的网站列表;如果其中没有你 希望支持去广告的网站,可以在本文 反馈问题/提交新网站 部分,按要求 反馈问题/提交新网站;
III. 反馈问题/提交新网站(重要)
IV. 教程食用说明
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
2.如图所示,打开 QuantumultX App -> 点击右下角三菱按钮 -> 分流 -> 规则资源 - 点击右上角 +号,在资源路径处粘贴刚刚复制的链接 -> 开启 策略偏好 -> 然后再选则 Reject,保存,退至上层分流-规则资源列表页面;P.S. 无论以后是否还会 + 新的分流规则资源,请确保该分流规则资源(此处我们假设命名为Adblock)始终处于分流-规则资源列表的顶部(上图 3个截图的拼图中,第2个截图所示,Adblock始终处于顶部位置);
第二步:重写引用:
https://limbopro.com/Adblock4limbo.conf
Faq(N/A)
近期有用户反馈在使用TG(电报)时,网络日志会出现 MitM fail(www.google.com:80/443 N/A),有App持续频繁的刷新该请求(异常),如下图所示;
-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 - 首页 - 点击左上角 - 进入你的 配置列表 - 编辑 - 外部资源 - 点击 全部更新(这一步很重要,很多时候大家在第一次安装并更新模块完成附带更新外部资源,就再也不手动去更新 外部资源 了,而是等待它自动更新;);
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;
反馈问题/提交新网站:可以在本文 反馈问题/提交新网站 部分,按要求 反馈问题/提交新网站;
食用方法
https://limbopro.com/Adblock4limbo.module
安装模块
第一步:安装模块: 如图所示,打开 Shadowrocket - 配置 - 模块 - 点击 右上角的加号➕ 粘贴上面的链接 - 然后启用该模块;
配置分流
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)
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;
反馈问题/提交新网站:可以在本文 反馈问题/提交新网站 部分,按要求 反馈问题/提交新网站;
订阅转换工具/去广告分流
如何安装油猴脚本?
greasyfork/sleazyfork 版
Sleazyfork版免登陆即可安装:https://sleazyfork.org/zh-CN/scripts/443290-adblock4limbo
Github版(推荐)
https://github.com/limbopro/Adblock4limbo/raw/main/Adguard/Adblock4limbo.user.js
X. 更多去广告分流(可供选择)
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 去广告
NobyDa 去广告分流规则
iPhone/iPad/Mac/Windows/Android浏览器广告屏蔽扩展
XIII. Tips
一些小 Tips
禁止浏览器自动跳转到App
测试
版权属于:毒奶
联系我们:https://limbopro.com/6.html
毒奶搜索:https://limbopro.com/search.html
毒奶导航:https://limbopro.com/daohang/index.html本文链接:https://limbopro.com/archives/12904.html
本文采用 CC BY-NC-SA 4.0 许可协议,转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!