我注意到 Adblock Plus 注入了一些隐藏广告的 CSS,但我认为它的作用不止于此——例如阻止 HTTP 请求。
Adblock Plus 如何阻止网络上的广告?
我注意到 Adblock Plus 注入了一些隐藏广告的 CSS,但我认为它的作用不止于此——例如阻止 HTTP 请求。
Adblock Plus 如何阻止网络上的广告?
Adblock Plus 有两种机制来阻止网站上的内容:
元素隐藏:在网站中注入一个 CSS 片段,以隐藏应该被阻止的元素。这样,广告就完全从呈现的页面中删除,因此原本用于广告的区域现在将用于网页的实际内容,甚至是网页本身的一部分的内容(如文字广告)也可以被阻止。但是,这并不能阻止资源首先加载。
请求阻塞:用于检索本应被阻塞的资源的 HTTP 请求将被阻止加载。这将使页面加载更快,减少流量,甚至可以阻止从 Flash 中加载的内容,例如 YouTube 上的视频广告。
隐藏在给定网站上的元素和要阻止的 URL 都由过滤器列表控制。默认情况下,Adblock Plus 将使用 EasyList。但是您可以自由设置自己的过滤规则或配置其他过滤列表。
这是如何完成的:https ://adblockplus.org/en/faq_internal#elemhide
他们只是使用他们在用户代理样式表中拥有的 id 列表禁用广告块,即在您的浏览器级别使用其 JS。
他们在这里简要介绍一下:http: //chromeadblock.org/extensions/adblock-for-chrome/
但是没有真正的细节。我认为他们所做的是检查 css 类和 id 是否有坏词,例如:广告、广告、赞助......此外,他们将拥有主要广告服务器(如 AdWords 等)的列表,并简单地阻止这些 IP/域从被加载。之后,它似乎会计算已删除广告的尺寸并用空白 CSS 填充它。
也许他们不是那样做的,但我就是这样做的。