学习广告过滤



1 Adblock plus rules

1.1 Filter rules

  1. Hardcoded rule,直接写个网址,可以使用wildcasts.

  2. exception rules: “@@http://example.com”,这个网站的所有内容都不block

  3. 标记规则的开头和结尾:|, “swf|”, 匹配结尾是swf的url.

  4. “abc” 等价于“*abc*”

  5. 过滤特定域名的内容:“||example.com/banner.gif”可以过滤http://www.example.com/banner.gif,http://example.com/banner.gif,https://example.com/banner.gif.

  6. 分割符,^, 可以表示:Separatorcharacter is anything but a letter, a digit, or one of thefollowing: _-.%. In the following example all separator charactersare shown in red:http://example.com:8000/foo.bar?a=12&b=%D1%82%D0%B5%D1%81%D1%82

  7. 注释:!

  8. Filter options

    格式:“规则$option1,option2”

  • script — external scripts loaded via HTML scripttag

  • image —regular images, typically loaded via HTML img tag

  • stylesheet —external CSS stylesheet files

  • object —content handled by browser plugins, e.g. Flash or Java

  • xmlhttprequest —requests started by the XMLHttpRequestobject

  • object-subrequest —requests started plugins like Flash

  • subdocument —embedded pages, usually included via HTML frames

  • document —the page itself (only exceptionrules can be applied to the page)

  • elemhide —for exception rules only, similar to document but onlydisables elementhiding rules on the page rather than all filter rules

  • other — types of requests not covered inthe list above

  • domain restriction, domain=xxx.com|yyy.com, 规则只应用在指定的domain.

  • Third-party 或者first-party: 规则应用于本方或者第三方的资源

  • inversed option: ~option,相当于反义词。

  1. 规则部分

    可以使用正则表达式,但是鉴于效率,最好少用。



1.2 hidding rules

用来隐藏文档中的原素而不是一个独立的可下载资源

  1. 基本格式

    ##element_name.class_name 限定元素名和class名

    ##element_name 只指定元素名

    ##element_name#id_name 限定元素名和id

    ##*.class_name 只限定class名

  2. 指定domain

    domain1.com,domain2.com,domain3.com##*.sponsor

    可以隐藏多个domain的class是sponsor的元素。

    ~domain.com可以屏蔽该domain

  3. 通过attribute选择元素

    ##table[width="80%"]

    ##div[title*="adv"] title包含adv

    ##div[title^="adv"][title$="ert"]title以adv开头,以ert结尾

    ##table[width="80%"][bgcolor="white"]

  4. exception rule

    规则1:##div.textad

    规则2:example.com#@#div.textad

    上述2者等价于:

    ~example.com##div.textad

1.3 如何让一个网站完全不被filter和hidenrules影响

Filter rules可以使用@@example.com

hidden rules:问题是上述靠@@指定的例外规则是否也会阻止hiddenrules.?搭服务器测试一下。

发现过滤规则文件里:

a.jpg并不能在第一次加载时把a.jpg给过滤掉,debug一下。

Http://10.2.0.13/a.jpg也不起作用。

难道是资源被预加载了?log里发现广告过滤没有起作用。试着写一个简单的abp.txt测试一下原因。

发现,a.jpb被预加载了,说明oracle里面有他的记录。在第一次加载这个网页时,不应该加载他,也不应该把它写入到oracle记录里。看一下。广告过滤的检查和向oracle里面report数据的顺序,按道理说应该是广告过滤在先吧。

结果发现在进行adblock检查之前a.jpb就被加入了oracle。当下回加载网页的时候,就会首先预加载a.jpg,并且因为此时没有document实例,所以也没法对预加载的资源进行adblock检查,于是该资源就被成功加载到memcache里了。当html下载完成后,解析发现需要a.jpg于是又发现memcache里面有,就可以直接使用了,不会走到resourceloader里面,也就不会进行adblock检查了。导致的结果是这个图片被加载了而且被显示出来了。结论:第一次没有预加载数据的情况下加载网页时,应该先进行adblock检查。检查通过的资源,才记录到oracle数据库里。

  • 广告过滤触发点:ResourceLoader::start()里

  • 保存资源下载记录到oracle的触发点:ResourceFetcher::requestResource(Resource::Typetype, FetchRequest& request)





2 代码分析

2.1 构造规则

每个规则占用一行字符串,拿出来解析,解析的流程:

  • 字符串解析得到原始的规则信息

    比如是否是exception规则,是否包含domain限制等。最后会得到一个regularexpression,它和其他规则相关的信息可以用于后来的规则匹配。

  • 根据domain,shortcuts等信息,把规则分类

    domain mapped rules. 该规则对应某domain

    Shortcuts mapped rules. 该规则有某关键字

    Unmapped rules,剩下的规则

    分类的目的在于进行规则检查时尽两减少需要匹配的规则量。查找时间缩短为log级别。使用map

2.2 规则检查

先根据资源的url,domain,shortcuts从所有规则里挑出一些可能相关的规则,然后用着写规则去检查这个资源。

在若干各规则匹配的时候,每个规则检查的结果分三种情况:

passed, 这个规则允许该资源,优先级最高

filtered, 这个规则禁止该资源,还得看是否有规则允许该资源。

NA, 无关的

具体每个规则的匹配流程:

ABPFilterRule::shouldBeFiltered(const KURL& baseUrl, constKURL& rawResourceUrl, ElementType type)

这个函数一步一步判断本规则的某些原则是否可以应用于这个资源地址,判断是有顺序的:

一个规则,可能有自己的限定范围,即只对满足特定要求的网址产生效果,比如他可能只对第三方的网址,或者只对image类型的元素产生作用。那么如果资源网址和网站是同一方的,或者这个资源不是图片,那么就不用再针对这个原则继续分析这个资源。因为这个原则对于这个资源来说没有意义。

  1. 先判断本规则的firstparty/third party原则是否和这个资源相符,如果本规则应用于thirdparty, 恰巧这个资源是thirdparty资源,那么目前看来是match的。可以继续分析,如果不match,就直接matched= false. 这样函数就返回NA了。

  2. 然后判断elementtype,image? Css? Script?...

  3. 然后判断domain的限制,是否必须是某个domain?...

  4. 最后判断正则表达式是否匹配.

    这几个原则,有一个不匹配,那么本原则就无法应用于这个资源。就返回NA,如果本规则可以通过上述检查,那么本规则对这个resource具有影响,要么passed,要么filtered.

2.3 规则检查时机

ResourceFetcher::requestResource()

ResourceLoader::start()

都可以。但是resourceFetcher较前一些,可以提前决定是否过滤。如果需要过滤,那么就可以不用建立resourceLoader.而且也不会把这个资源加入资源预测的数据库里。如果加入了资源预测的数据库里就会导致下一次加载时,会在document建立之前直接预加载应该被过滤掉的资源。所以推荐在ResourceFetcher里加入检查点。

借助AI提升电商广告效果的策略 在当今数字化的时代,电商行业呈现出爆炸式的增长。电商平台上的商品琳琅满目,竞争异常激烈。为了在众多的竞争对手中脱颖而出,吸引更多的潜在客户,电商广告成为了关键的营销手段。然而,传统的广告投放方式往往存在着精准度不高、成本效益低等问题。本文章的目的在于深入探讨如何借助AI技术来提升电商广告的效果,范围涵盖了从核心概念的阐述、算法原理的分析到实际项目的应用,以及未来发展趋势的展望等多个方面。本文共分为十个部分。第一部分是背景介绍,阐述了文章的目的、预期读者和文档结构概述,以及相关术语的定义。 阅读详情

相关推荐

Python广告推荐与营销分析

Python在广告推荐和营销分析方面有着广泛的应用,它可以帮助企业了解消费者的行为、优化营销策略、提高广告投放效果和提升用户体验。协同过滤是一种常用的推荐算法,它基于用户的历史行为和偏好,为其推荐相似的产品或广告。在广告推荐中,可以根据用户的行为和喜好,开发定制化的推荐算法,从而提高推荐的准确性。Python的速度快,可以快速处理大量数据。广告推荐是指根据用户的个人喜好和行为,为其推荐个性化的广告,从而提高广告点击率和转化率。基于深度学习的推荐系统可以通过分析用户的历史行为和喜好,为其推荐相关的广告。

吃不胖. 344

【技巧】屏蔽百度搜索热点和相关软件推荐等(提高注意力)

一、起因 原本觉得,通过百度“热点搜索”可以了解一些近期发生的热点事件,能够拓宽下知识面(同样的想法也出现在对待登录QQ时的腾讯迷你新闻上),也是挺好的,所以一直以来任由其在我的网页上出现。 然而,在信息爆炸的社会里,太多的“知识”(信息)都过于碎片化过于没营养了,而且在知道这些乱七八糟的“花边新闻”的同时,牺牲了注意力,降低的学习工作的效率,明显是得不偿失的!!! 而且,活着互联网时代,我们根本...

○( ^皿^)っHiahiahia…的博客 2039

基于网络爬虫的智能广告推荐

《基于网络爬虫的智能广告推荐》 关键词: 网络爬虫、智能广告推荐、协同过滤、内容推荐、混合推荐、深度学习。 摘要: 本文章深入探讨了基于网络爬虫的智能广告推荐系统。首先介绍

AI天才研究院 1466

Chrome插件精选 — 广告拦截插件

Adblock Plus 是一款广告拦截插件,可以在用户浏览网页时自动过滤掉大部分的广告。它的主要功能包括:自动拦截广告:Adblock Plus 能够自动识别网页上的广告内容,并将其过滤掉,让用户不再被广告干扰。允许合法广告:为了不影响网站的正常运营,Adblock Plus 允许一些合法的广告,比如 Google Adwords 等。自定义过滤规则:用户可以根据自己的需要添加和删除广告过滤规则,让 Adblock Plus 适应不同的网站。

skyunlin的专栏 6837

超强过滤广告正则表达式---by闻仲

广告过滤正则式 来自闻仲 可以和大家交流一下

Linux内存压力测试工具【memtester】详且精

对Linux下的压力测试工具memtester有一个比较人性化的概述,以及避坑心得。

weixin_44118923的博客 1万+

AdGuard Home规则极简配置指南:精准过滤广告的终极方案

广告过滤规则真的越多越好?超过100万条过滤规则的AdGuard Home规则集如何帮你打造无广告网络环境?本文将带你深入了解这套强大规则的部署方法、场景化应用和系统优化技巧,让你轻松掌握广告拦截的核心技术,实现网页加载速度提升30%以上的畅快体验。无论你是网络新手还是技术达人,都能通过这份AdGuard Home规则配置指南找到适合自己的广告过滤优化方案。 ## 核心价值:为什么选择这套AdG...

gitblog_01106的博客 3248

大模型微调框架之TRL

近年来,大语言模型(LLMs)的快速发展推动了下游应用的繁荣,但如何高效地对这些模型进行对齐和微调,依然是研究与应用的热点。Hugging Face 开源的 TRL(Transformer Reinforcement Learning) 框架,提供了基于强化学习的语言模型训练方法,并支持 SFT(监督微调)、PPO(近端策略优化)、DPO(直接偏好优化)等多种方式,是目前对齐和微调 LLM 的重要工具。

和大家一起涨芝士 905

亲测超有用C盘清理攻略

小番茄这款软件支持全盘清理,扫描分类很全面,操作都是一键式的,电脑清理不太熟悉的,推荐使用,简单!重点是清理风险低,不会误删数据。这是一款免费的快速搜索软件,我也比较喜欢,而且可以用它来查。重点:需要会员,可以去咸鱼几毛钱买一天!然后再选择右上角这三个点,再点击下载设置。进入下载设置页面后就看见了。

2503_92841558的博客 5928

PIV实验流场流速云图(MALAB contour函数用法)

clear;clc; for k=1:5 str1=['filename1']; str2=['filename2']; str3=['filename3']; str=eval(['str',num2str(k)]); load(str); [m n]=size(y); y=flipud(y); v=-v; x=x-x(1,...

Nick_Cui的博客 3224

创建可视化机房

(3)窗户位置创建好以后需要对窗户的墙面镂空位置进行修补,具体操作为,选中镂空位置的顶点(这里必须是选择一个平面的顶点,不要跨平面选择),实际操作如下图:选择点以后,鼠标右键,选择【从顶点创建边/面】,或者按F键,随后对其他镂空位置进行相同操作;(2)将【物体模式】修改为【编辑模式】,选中-x对应面的所有顶点,移动顶点位置,其他放小调整按照同理,找到选中对应面的所有顶点,移动位置即可;调整动画事件轴上的线,选中关键帧的时间,调整模型的位置或者旋转角度,具体根据插入关键帧菜单选择的项进行模型的相关调整。

SmileBu丿㦌的博客 2072

Cline Protobuf 开发指南:从 .proto 定义到 Webview gRPC 调用的四步强类型通信层工作流

本篇基于 Cline 仓库自带的 Protobuf 开发指南([.clinerules/protobuf-development.md](https://link.gitcode.com/i/fc3957b5b362574f6a7285f20a0fbdad)),完整讲解如何在 Cline 中新增一个 webview(前端)与 extension host(后端)之间通信的 gRPC 端点:包括 `

gitblog_00567的博客 975

SystemRDL:从寄存器描述到自动化生成的完整指南

本文详细介绍了SystemRDL如何通过“一份描述,多处生成”的理念,彻底解决芯片与FPGA设计中手动维护寄存器带来的不一致与低效问题。文章提供了从语言快速上手、核心组件讲解到使用PeakRDL工具链实现自动化代码与文档生成的完整实战指南,帮助硬件工程师构建高效、可靠的寄存器开发流程。

weixin_29243279的博客 664

鸿蒙0基础学习【使用Web组件的广告过滤功能】ArkUI

ArkWeb提供广告过滤功能,支持两种过滤方式:拦截广告资源下载或通过CSS隐藏广告元素。主要特性包括: 支持云端推送easylist默认规则或应用自定义规则; 提供Web实例级开关和网站级例外管理; 规则配置持久化,支持优先级管理(allowlist>disallowlist); 开放拦截回调接口,便于应用获取拦截信息。 典型使用场景:应用可开启全局过滤后,针对特定域名设置例外规则,或通过文件选择器导入自定义过滤规则。规则采用easylist语法,支持URL拦截、元素隐藏等多种匹配方式。

zhenggaoxiao232的博客 586

用FPGA在HDMI上显示自定义字符:从COE文件到OSD叠加的保姆级教程

本文详细介绍了如何在FPGA上实现HDMI视频流的OSD字符叠加技术,从COE文件生成到动态区域控制的完整流程。通过Verilog代码示例和实战技巧,帮助开发者掌握字符ROM设计、像素坐标追踪和动态混合等核心技术,适用于视频监控、系统状态显示等应用场景。

weixin_28720767的博客 231

android 14.0 去掉usb授权提示框 默认给予权限

在14.0的系统rom产品开发中,在进行iot关于插入usb设备的开发过程中,在插入usb设备时会弹出usb授权提示框,也带来一些不便, 这个需要默认授予USB权限,插拔usb都不弹出usb弹窗所以这要从usb授权相关管理页默认给与usb权限,接下来分析下 相关的实现功能流程

安卓兼职framework和app工程师的博客 2263

Android 应用广告过滤几种方式,价值2000元的Android学习资源泄露

但是一个app是怎么能够对整个手机的流量进行过滤的呢? 其实很简单,AdBlockPlus自动对手机设置了代理,代理到本机的2020端口,然后建立了一个简单的代理服务器,将所有的网络请求都统一通过这个代理来处理,从而达到全局的广告过滤效果。当然,当使用数据流量的时候,需要root权限,在4.0版本以上的wifi下的代理设置,也需要root权限,或者手动进行设置。我们先不管AdBlockPlus的代理服务器那部分功能,只看其核心的部分,也就是下载并读取规则文件,然后根据规则文件来判断url是否应该被过滤。如果

m0_66145114的博客 339

android 9.0Settings休眠时间项(屏幕超时)添加永不休眠功能

在9.0的系统产品开发中,系统中默认息屏时间为1分钟,可以通过在Setting中的息屏时间选项设置对应的息屏时间,但是在开发平板类的产品中,需要实现永不休眠的功能,所以需要在Settings中的息屏时间中添加永不休眠时间这一项来实现这个功能,接下来看息屏时间的相关功能,来添加这个功能

安卓兼职framework和app工程师的博客 2056

七牛ufop广告过滤服务上线,7-10月免费用

  从基于网络互联的Web1.0时代到基于社交的Web2.0时代,再到基于移动的Web3.0时代,个人不再是互联网信息被动的接收者,而是作为互联网的编织者、使用者和传播者。更迭的交互方式虽然解决了内容产生的问题,但每天产生的海量内容中却充斥着大量垃圾广告。这些广告严重影响了互联网产品的用户体验,给产品的运营带来巨大难度,甚至会严重到宣告社交项目的终结。打造健康的社交生态,需要高效准确地鉴别和...

JCcccccc的博客 254

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

傲游3的广告过滤自定义规则【Mark一下】对CSS语法学习还是挺不错了~~可定义站点样式

! site 556677.net ! author guest ! date 2012-05-23 */images/t*.js */static/js/tt.js !##div[id^='ad'] *.ze5.com/* ##div#left_area{width: 100% !important;} ##div#head{width: 95% !important;} ##

king_xing的专栏 1940

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

谷歌浏览器安装去除网页广告插件

目标: 上网搜索学习资料时,网页的广告太多,还一闪一闪的影响学习与工作。 通过给谷歌浏览器安装插件,过滤掉广告。 事件: 我上网搜索“ORA-12547:TNS:丢失连接”问题为例,这个问题很难解决,查看了几十个网站,被广告烦的不行不行的。 过滤广告的效果: 同一个网页,未使用本插件时的效果,页面中广告很多。 同一个网页安装插件后去除广告后的效果,这才是世界的本来面目。 安...

蔡龙的技术交流站 3389

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android 应用广告过滤几种方式

如果你看过其安卓源码,你就会惊讶的发现,里面居然是用jni实现的,再仔细看的话,会发现jni的代码只是封装了静态链接库里面的内容,真正干活的部分都在静态链接库里,至于静态链接库里面的源码,就得装上git,hg,然后按照使用说明,才能同步下来整个代码库。:对于一个应用如果数据来源于指定的服务器,只需要我们在指定的服务器里控制好资源请求与分发即可,那么对于移动应用来说去广告的效率更好,因为资源的过滤运算均在服务器,而不在移动端,相对来说更可维护,但这样的对服务器的任务又是一个问题了。

Y1567409的博客 1141

Chrome浏览器广告拦截终极指南:三步打造纯净上网体验

你是否曾经在浏览网页时被各种弹窗广告、视频前贴片和侧边栏推广内容打扰?想要享受无干扰的上网环境却不知道如何开始?Adblock Plus作为一款专业的广告拦截工具,能够帮助你彻底告别这些烦恼,让浏览器回归纯净本质。 ## 🎯 快速搭建广告拦截环境的方法步骤 想要开始使用Adblock Plus拦截广告,首先需要获取项目源码并进行本地构建: ```bash git clone https:/

gitblog_00192的博客 915

社交媒体广告分析:跨界学习与借鉴

1.背景介绍 社交媒体广告分析是一种非常重要的在线广告方式,它利用社交媒体平台上的用户数据和行为特征,为目标用户推荐个性化的广告内容。随着数据规模的不断扩大,传统的广告分析方法已经无法满足业务需求,因此需要借鉴和学习其他领域的技术和方法来提高广告分析的效率和准确性。本文将从以下几个方面进行探讨: 社交媒体广告分析的背景和发展 核心概念和联系 核心算法原理和具体操作步骤以及数学模型公式详细讲解...

AI天才研究院 809

探索Adbyby:一款创新的广告拦截工具

探索Adbyby:一款创新的广告拦截工具 adbyby路由版adbyby相关辅助脚本项目地址:https://gitcode.com/gh_mirrors/ad/adbyby 项目简介 是一个开源的广告拦截软件,旨在为用户提供更清爽、无干扰的网络浏览体验。它采用了先进的算法和高效的过滤规则,能够有效屏蔽网页中的各种广告,包括弹窗、横幅、视频插播等。 技术分析 Adbyby的核心在于其智能过滤机制...

gitblog_00025的博客 1634

【推荐与广告】积累与发现

新坑 推荐算法 入门与科普 推荐算法入门 5类系统推荐算法,非常好使,非常全 推荐系统中使用ctr预估模型的发展 协同过滤 协同过滤推荐算法的原理及实现 基于用户的协同过滤:给相似的人推荐相同的物品;基于物品的协同过滤:把相似的物品推荐给相同的人。人与人之间的相似性通过给相同的物品的打分情况来判定,因为如果两个人都人为某一个物品好,那么这两个人就相似;物品与物品的相似性通过被相同的人的打分情况来...

dominic_z的博客 1262
上一篇: Introduction to algorithms 3rd 阅读总结和部分习题分析
下一篇: 学习预测加载
csshell2002
博客等级 码龄11年 30粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值