盒子网_电视盒子网_盒子刷机网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2262|回复: 3

(转载)常见的软路由去广告原理及避坑指南

[复制链接]

5

主题

5

回帖

690

积分

版主

Rank: 7Rank: 7Rank: 7

积分
690
发表于 2022-3-26 15:45:08 | 显示全部楼层 |阅读模式
互联网广告无处不在,也是很多站点的收入来源,良性的广告环境有利于站点,用户。需要抵制的是恶意,强制观看,隐私窃取类的恶性广告。
使用去广告技术的用户大多会问这样问题:
  • 为什么启动了去广告还是可以看到广告
  • 为什么有些站点显示不了了
  • 现在都是https了,去广告技术没用了
去广告常见技术实现方式
  • DNS过滤(典型:AdGuardHome)
    • 把广告相关的DNS请求禁止,只允许非广告请求通信
    • 拦截发生在网络请求开始之前
    • 适合于路由器等设备,一次设置,全家庭内网生效
    • 无需对接入家庭内网设备有特殊设置
    • 仅能通过域名进行广告识别,对于广告域名与内容域名相同的无能为力,无法针对页面内容过滤
  • 浏览器插件(典型:AdBlock)
    • 根据浏览器发出的请求地址、返回页面内容过滤广告
    • 拦截发生在网络请求开始之前与请求结束之后
    • 仅适用于网页浏览器,其他非浏览器应用无效
    • 每个设备,每种浏览器都需要额外安装插件
    • 可以对域名,请求,网页内容进行广告识别
  • 流量过滤(典型:KoolProxyR)
    • 类似一个全局过滤器,全网流量都通过这个过滤器。针对加密请求(如https等),需要采用类似中间人攻击(MIMT)方式进行拦截。
    • 拦截发生在请求开始之前、之后
    • 适合于路由器等设备,一次设置,全家庭内网生效
    • 需要为客户端安装假证书(实现MIMT解密流量)
    • 可以对域名、请求,页面内容进行广告识别

以上所有技术方式,拦截时机及识别点越多,理论效果越好。但还有一个最为重要的内容没有提到——规则库。
类似于杀毒软件,杀毒效果依赖于核心病毒库的质量,去广告效果也依赖于其规则库的质量。
维护去广告规则库,其难度相比于病毒库难度高很多,病毒产生速度相对稳定,但广告不是。全球几千万站点,每天上百亿次广告展现,频繁变更的广告植入方式,规则库维护难度是十分巨大的。
另外,互联网的核心思路是羊毛出在猪身上。站点运营需要成本,不在用户身上收钱,站点只能依靠其他方向获取收入,广告就是其中的主要来源。因此,对于去广告技术,几乎所有站点都是抵制的(典型地,KoolShare论坛就是禁止类似技术讨论的)。为了保证收益,它们会根据去广告技术的发展不断变更广告插入方式,从而规避去广告软件的运作。所以,广告与去广告一直是在不断斗争中发展的。因为广告植入方式发生变化,一个有效的屏蔽规则很可能在一夜之间完全失效,或者某些站点可以让你即使屏蔽了广告展示,仍然要等待固定时间才能获取内容(典型视频站点)。
从长远来说,广告有利于现在互联网站点的生存,对用户是有利的(如果所有站点都赚不到钱,最终只能关门,利益受损的还是最终用户)。对于笔者自己,我认为需要屏蔽的实际上是恶意的,带有强迫,诱导性质的广告,木马钓鱼链接,隐私收集类的垃圾信息。对那些对日常生活,娱乐,学习帮助很大的站点,能出资支持,或者主动点击广告表达支持,帮助站点发展更好,才是双赢的做法。
去广告技术原理
​ 上网过程,从技术上来说是浏览器通过HTTP协议从远程服务器传回内容并显示的过程。浏览器需要建立TCP连接与服务器相连,连接通常有很多。广告请求与我们普通请求在传输方式上并没有区别,混杂在正常请求中。
​ 如何拦截广告?分两步
  • 识别
  • 拦截
​ 识别就是从HTTP请求中识别出那些是广告请求。目前我们还不能很简单的通过返回内容来判断,这个HTTP请求是不是一个广告(AI成熟后应该有可能)。现行的技术只能从请求地址上做文章。上网请求URL(地址)中包含域名及具体访问资源的路径,现在可以比较容易的通过域名及访问资源路径判断这个请求的性质,目前可见的类似方式都是走这个识别思路。
​ 识别出来了,接下来就是拦截了。拦截分两种:
​ (1)域名方式。上网请求实际分两步,第一步,通过DNS解析域名返回目标服务器IP,第二步,通过IP建立到远程服务器的TCP连接,使用HTTP传送内容。域名方式就是在DNS做文章,发现请求是广告请求就直接返回域名不存在或者一个无效IP,阻止TCP连接建立。这种方式优点在于简便,快速,不介入正常TCP连接。缺点是DNS只能获得域名,却不能获得完整的URL地址,因此无法对一些URL特征进行过滤。好在现在广告普遍都是植入式,也就是普通站点嵌入一个指向广告的链接,通常广告都有相对清晰的域名(通常广告域名与访问站点域名不通),所以可以取得不错的效果。这也是现在绝大多数方案的原理。
​ (2)流量过滤方式。典型的如著名的koolProxyR。相当建立了一个TCP代理,所有流量走代理,代理可以拿到所有请求的URL,根据规则决定是否放行这些请求。 优点是这种方式有可能获取完整请求,可以进行超过域名的过滤,甚至等AI成熟后识别内容。但也有缺陷,性能损失是一个,但绝对不是大问题。最大问题是现在网站基本上都是HTTPS请求,浏览器会校验目标网站证书,判断是否连接到了真正的地址。这也使得传统的HTTP劫持几乎没有生存余地了,即使强行让浏览器连接到假网站地址,但假网站也造不出真网站的证书,浏览器也会报警。目前日益普及的HTTPS严重影响了koolProxyR类似过滤方案,因为它代理了浏览器发起的请求,它只是一个到真正服务器的中转,因为连接内容完全是加密的,它无法看懂,甚至连网址都无法获得,导致它无法进行拦截。
​ 当然,koolProxyR类似方案可以通过为每个目标网站制造一个假证书的方式,伪装成浏览器想访问的真网站,从而对URL及内容进行过滤,但这里会造成额外问题。
  • 需要为所有网站伪造证书,伪造证书的根证书比如放到每个浏览器的信任根里。通常家里会有很多设备上网,PC还好,平板,手机,家用摄像头、PS4、XBOX等等就麻烦了。当然,还可以为这些设备设置白名单,就是不过滤,但无形中还是增加了维护难度。
  • 某些应用不接受伪造证书。典型金融类应用,各种支付,网银,银行应用,部分电商,它们会严格校验服务器的证书链,伪造证书根本不被接受。这类应用在koolProxyR之类环境下是无法工作的。
​ 所以,流量过滤方式不再是一个去广告的优选方式了,基于域名的方案已经成为主流。
​ 当然,还有一些基于浏览器插件的方案,也很有效,浏览器插件可以做到对域名,URL,甚至页面内容精细化过滤。但问题是只能适用于浏览器,通常还是PC端,并不能像DNS方案一样,应用于整个家庭网络。
​       软路由固件采用AdGuardHome作为去广告方案,基于DNS技术实现。DNS技术特征是对请求的域名进行过滤,过滤的核心是规则文件。类似于杀毒软件的病毒库,AdGuardHome中可以挂载各类广告规则库。其准确度取决于规则库。
​ 现在回顾一下开篇的问题。
  • 为什么启动了去广告还是可以看到广告
​ 规则库中没有屏蔽你看到的广告,或者这个广告和站点正文域名相同,AdGuardHome根本无法去掉。
​ 广告升级了,目前规则库中并没有收录,无法屏蔽。
  • 为什么有些站点显示不了了规则库误伤了一些"正常站点",或者是规则库认为你访问的是广告,而你自己不认为(其实你之前一直认为是正常内容其实是广告链接)
  • 现在都是https了,去广告技术没用了基于DNS去广告方案,与使用协议无关。即使其他协议只要涉及到DNS解析也可以工作。
遇到访问不正常时怎么办
如果遇到站点访问不正常,想确认是否和去广告有关,怎么做?
打开AdGuardHome管理界面(路由IP请根据实际情况修改)
首页,左上角接近Logo处,有”禁用保护“字样,点击即可禁用广告过滤,再次点击开始启用去广告功能。或者在过滤器-自定义过滤规则,把浏览不正常的网站添加到排除规则。
另外DNS缓存也可能会影响站点访问,任何人都可以胜任的清除方法:断开网络接口重连,重启电脑,重启路由。

回复

使用道具 举报

4

主题

29

回帖

253

积分

中级会员

Rank: 3Rank: 3

积分
253
发表于 2022-4-6 07:28:43 来自手机 | 显示全部楼层
搞起来!
回复 支持 反对

使用道具 举报

0

主题

2

回帖

2135

积分

金牌会员

Rank: 6Rank: 6

积分
2135
发表于 2022-4-6 20:36:06 | 显示全部楼层
很有用!感谢!!!!
回复 支持 反对

使用道具 举报

1

主题

11

回帖

47

积分

新手上路

Rank: 1

积分
47
QQ
发表于 2022-5-11 15:11:04 | 显示全部楼层
很有用!感谢!!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|盒子网 ( 粤ICP备2022074510号-1 ) 粤公网安备44190002006514号 .

GMT+8, 2024-5-5 00:54 , Processed in 0.058232 second(s), 23 queries .

Powered by Discuz! X3.4