一种广告过滤方法及装置技术领域
本发明涉及广告过滤技术领域,尤其涉及一种广告过滤方法及装置。
背景技术
现有技术的移动终端可安装多种应用,而这些应用往往会推送或者显示广告。现
有技术的过滤步骤是,首先通过VPN服务接管移动终端上的所有网络请求,并使用匹配算法
对请求进行过滤,从而达到过滤广告的目的。但是,现有技术的广告过滤方法,广告拦截应
用的VPN网络管理使用Java语言实现,使得代码执行效率低。此外,广告拦截匹配带来的性
能损耗是目前广告拦截应用的主要问题之一。一个重要原因是因为目前已有的广告拦截应
用使用Java或Javascript语言实现匹配算法,这种解释性的语言执行效率相比较编译型语
言而言要低很多。
发明内容
本发明实施例提供一种广告过滤方法,以解决现有技术的广告过滤方法的效率低
的问题。
本发明实施例提供一种广告过滤装置,已解决现有技术的广告过滤装置的效率低
的问题。
第一方面,提供一种广告过滤方法,由C++层实现,所述方法包括:从JAVA层获取
VPN服务建立的网络连接;接收应用发送的网络请求;提取所述网络请求的URL中的第一关
键字;将所述网络请求的URL中的第一关键字与预设的广告过滤规则匹配;若匹配成功,则
过滤所述网络请求。
第二方面,提供一种广告过滤装置,由C++层实现,所述装置包括:获取模块,用于
从JAVA层获取VPN服务建立的网络连接;接收模块,用于接收应用发送的网络请求;第一提
取模块,用于提取所述网络请求的URL中的第一关键字;匹配模块,用于将所述网络请求的
URL中的第一关键字与预设的广告过滤规则匹配;过滤模块,用于若匹配成功,则过滤所述
网络请求。
这样,本发明实施例中,在C++层通过VPN进行网络连接以及将网络请求的URL中的
第一关键字与广告过滤规则进行匹配,可以提高广告过滤的效率,使每个请求平均在5毫秒
内过滤完成。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所
需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施
例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图
获得其他的附图。
图1是本发明第一实施例的广告过滤方法的流程图;
图2是本发明第二实施例的广告过滤方法的流程图;
图3是本发明第三实施例的广告过滤方法的流程图;
图4是本发明第四实施例的广告过滤方法的流程图;
图5是本发明第五实施例的广告过滤方法的流程图;
图6是本发明第六实施例的一种广告过滤装置的结构框图;
图7是本发明第六实施例的另一种广告过滤装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发
明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获取的所有其他实施
例,都属于本发明保护的范围。
第一实施例
本发明第一实施例公开了一种广告过滤方法。该方法由C++层实现。优选的,该方
法优选应用于安卓系统。如图1所示,该方法包括如下的步骤:
步骤S101:从JAVA层获取VPN服务建立的网络连接。
通过该步骤可使C++层接管网络数据。C++层从Java层获取VPN服务建立的网络连
接后,可使用lwip和libevent技术实现网络数据的收发。因此,本实施例的方法JAVA层只是
负责VPN服务的建立,后续的步骤也不需要JAVA层参与,可避免在JAVA层与C++层之间来回
切换,从而提高了广告过滤的效率。
步骤S102:接收应用发送的网络请求。
应用可发送网络请求。该网络请求可能是广告。
步骤S103:提取网络请求的URL中的第一关键字。
网络请求的URL包含了一些重要信息,因此通过提取网络请求的URL中的第一关键
字可用于判断该网络请求是否是广告。
步骤S104:将网络请求的URL中的第一关键字与预设的广告过滤规则匹配。
该广告过滤规则用于过滤网络请求。将第一关键字与广告过滤规则匹配可判断该
网络请求是否是广告。应当理解的是,该匹配过程也是通过C++语言来实现的。
步骤S105:若匹配成功,则过滤网络请求。
若网络请求的URL中的第一关键字与预设的广告过滤规则匹配成功,表明该网络
请求为广告,则过滤该网络请求,达到拦截广告的目的。
综上,本发明第一实施例的广告过滤方法,在C++层通过VPN进行网络连接以及将
网络请求的URL中的第一关键字与广告过滤规则进行匹配,可以提高广告过滤的效率。
第二实施例
本发明第二实施例公开了一种广告过滤方法。该方法由C++层实现。优选的,该方
法优选应用于安卓系统。如图2所示,该方法包括如下的步骤:
步骤S201:设置广告过滤规则。
其中,该广告规则包括:标准规则和自定义规则。标准规则一般可采用
AdblockPlus广告规则库的规则。该广告规则库的规则全面并且更新及时。自定义规则可由
用户根据自身需求定义相应的规则,以实现过滤特定广告的效果。应当理解的是,该广告过
滤规则通过C++语言编写。
优选的,对于上述的广告过滤规则,为了提高广告过滤规则的有效性,减少无用的
广告过滤规则的数量,在设置了广告过滤规则后可对广告过滤规则进行训练,进一步优化
广告过滤规则。具体的,该训练的步骤如下:
第一步:对设置的广告过滤规则进行训练。
该训练所用的匹配算法与实际过滤广告所用的匹配算法相同,从而可确保训练的
针对性。该训练周期可以为天。
第二步:保留训练中满足置信度的所有广告过滤规则。
该置信度可由用户设定。一般来说,可以采用实际过滤广告的标准,将训练中未匹
配到的广告过滤规则删除,表明这些广告过滤规则不适用于需要过滤的广告。每天训练后
的满足置信度的广告过滤规则都保存用于实际进行的过滤广告的过程中。具体应用该广告
过滤规则时,可每天更新该广告过滤规则。经过训练后的广告过滤规则的数量能够减少10
倍以上,若该方法应用在移动终端中,可使移动终端的内存占用量在1MB以内。
步骤S202:从JAVA层获取VPN服务建立的网络连接。
通过该步骤可使C++层接管网络数据。C++层从Java层获取VPN服务建立的网络连
接后,可使用lwip和libevent技术实现网络数据的收发。因此,本实施例的方法JAVA层只是
负责VPN服务的建立,后续的步骤也不需要JAVA层参与,可避免在JAVA层与C++层之间来回
切换,从而提高了广告过滤的效率。
步骤S203:接收应用发送的网络请求。
应用可发送网络请求。该网络请求可能是广告。
步骤S204:提取网络请求的URL中的第一关键字。
网络请求的URL包含了一些重要信息,因此通过提取网络请求的URL中的第一关键
字可用于判断该网络请求是否是广告。
步骤S205:将网络请求的URL中的第一关键字与预设的广告过滤规则匹配。
该广告过滤规则用于过滤网络请求。将第一关键字与广告过滤规则匹配可判断该
网络请求是否是广告。应当理解的是,该匹配的过程也是通过C++语言来实现的。
步骤S206:若匹配成功,则过滤网络请求。
若网络请求的URL中的第一关键字与预设的广告过滤规则匹配成功,表明该网络
请求为广告,则过滤该网络请求,达到拦截广告的目的。
综上,本发明第二实施例的广告过滤方法,在C++层进行,通过预先设置标准规则
和自定义规则,然后通过VPN进行网络连接以及将网络请求的URL中的第一关键字与广告过
滤规则进行匹配,使得对广告的过滤全面并具有针对性,提高广告过滤的效率。
第三实施例
本发明第三实施例公开了一种广告过滤方法。该方法由C++层实现。优选的,该方
法优选应用于安卓系统。如图3所示,该方法包括如下的步骤:
步骤S301:设置广告过滤规则。
其中,该广告规则包括:标准规则和自定义规则。标准规则一般可采用
AdblockPlus广告规则库的规则。该广告规则库的规则全面并且更新及时。自定义规则可由
用户根据自身需求定义相应的规则,以实现过滤特定广告的效果。应当理解的是,该广告过
滤规则通过C++语言编写。
步骤S302:在广告过滤规则中添加第二关键字。
其中,该第二关键字用于指示使用广告过滤规则进行过滤的应用。优选的,第二关
键字一般为pkg(安装包配置)关键字。通过该第二关键字可限定特定的应用发送的网络请
求需要与该广告过滤规则进行匹配,避免将该特定应用的网络请求与过多的不会涉及的广
告过滤规则匹配,可提高匹配的效率。应当理解的是该步骤也通过C++语言实现。
步骤S303:从JAVA层获取VPN服务建立的网络连接。
通过该步骤可使C++层接管网络数据。C++层从Java层获取VPN服务建立的网络连
接后,可使用lwip和libevent技术实现网络数据的收发。因此,本实施例的方法JAVA层只是
负责VPN服务的建立,后续的步骤也不需要JAVA层参与,可避免在JAVA层与C++层之间来回
切换,从而提高了广告过滤的效率。
步骤S304:接收应用发送的网络请求。
应用可发送网络请求。该网络请求可能是广告。
步骤S305:提取网络请求的URL中的第一关键字。
网络请求的URL包含了一些重要信息,因此通过提取网络请求的URL中的第一关键
字可用于判断该网络请求是否是广告。
步骤S306:获取发送网络请求的应用的包名。
具体的,该网络请求的应用的包名可通过socket套接字获取。通过该步骤获取包
名可用于与广告过滤规则中的第二关键字匹配。
步骤S307:将发送网络请求的应用的包名与广告过滤规则中的第二关键字匹配。
通过该步骤,可判断发送网络请求的应用的包名与广告过滤规则中的第二关键字
是否匹配。若匹配成功,则表明该应用需要与该广告过滤规则进行匹配。若匹配不成功,则
表明该应用不需要与该广告过滤规则进行匹配。
步骤S308:若匹配成功,则将匹配成功的广告过滤规则与网络请求的URL中的第一
关键字匹配。
若发送网络请求的应用的包名与广告过滤规则中的第二关键字匹配成功,则该广
告过滤规则用于过滤该应用的网络请求,因此,将该广告过滤规则与网络请求的URL中的第
一关键字匹配以判断该网络请求是否是广告。
步骤S309:若匹配成功,则过滤网络请求。
若网络请求的URL中的第一关键字与广告过滤规则匹配成功,表明该网络请求为
广告,则过滤该网络请求,达到拦截广告的目的。
综上,本发明第三实施例的广告过滤方法,在C++层进行,通过在广告过滤规则中
添加第二关键字,从而可限定特定的应用发送的网络请求需要与特定的网络规则进行匹
配,然后通过VPN实现网络连接以及将网络请求的URL中的第一关键字与特定的广告过滤规
则进行匹配,避免将该特定应用的网络请求与过多的不会涉及的广告过滤规则匹配,减少
匹配次数,提高匹配的效率。
第四实施例
本发明第四实施例公开了一种广告过滤方法。该方法由C++层实现。优选的,该方
法优选应用于安卓系统。如图4所示,该方法包括如下的步骤:
步骤S401:设置广告过滤规则。
其中,该广告规则包括:标准规则和自定义规则。标准规则一般可采用
AdblockPlus广告规则库的规则。该广告规则库的规则全面并且更新及时。自定义规则可由
用户根据自身需求定义相应的规则,以实现过滤特定广告的效果。应当理解的是,该广告过
滤规则通过C++语言编写。
步骤S402:提取每一广告过滤规则的第三关键字。
由于有大量的广告过滤规则,因此,要与所有的广告过滤规则都进行匹配会使效
率降低。因此,通过该步骤以便将广告过滤规则分类。该第三关键字可以是广告过滤规则的
领域、形式、作用等等。
步骤S403:根据广告过滤规则的第三关键字,将广告过滤规则分类。
具体的,将相似第三关键字的广告过滤规则分为一类。例如,可以按照广告的不同
形式将广告过滤规则分类。
步骤S404:建立每类广告过滤规则的索引。
该索引用于表示该类广告过滤规则的相同点,可以是第三关键字,也可以是对第
三关键字的进一步总结。该索引使得在匹配规则的时候,可以先匹配索引,从而可减少匹配
的次数,提高效率。
应当理解的是,上述的步骤可通过C++语言实现。
步骤S405:从JAVA层获取VPN服务建立的网络连接。
通过该步骤可使C++层接管网络数据。C++层从Java层获取VPN服务建立的网络连
接后,可使用lwip和libevent技术实现网络数据的收发。因此,本实施例的方法JAVA层只是
负责VPN服务的建立,后续的步骤也不需要JAVA层参与,可避免在JAVA层与C++层之间来回
切换,从而提高了广告过滤的效率。
步骤S406:接收应用发送的网络请求。
应用可发送网络请求。该网络请求可能是广告。
步骤S407:提取网络请求的URL中的第一关键字。
网络请求的URL包含了一些重要信息,因此通过提取网络请求的URL中的第一关键
字可用于判断该网络请求是否是广告。
步骤S408:遍历索引,将网络请求的URL中的第一关键字与索引匹配。
通过该步骤,可先与索引匹配,从而确定该网络请求属于哪一类网络请求,以便减
少匹配的次数,提高效率。
步骤S409:若匹配成功,则将匹配成功的索引对应的一类广告过滤规则与网络请
求的URL中的第一关键字匹配。
若网络请求的URL中的第一关键字与索引匹配,则表明该网络请求与该类广告过
滤规则可能匹配成功,只需要将该网络请求与该类广告过滤规则进行匹配即可,无需再与
其他广告过滤规则匹配,从而可减少匹配次数。
步骤S410:若匹配成功,则过滤网络请求。
若网络请求的URL中的第一关键字与该类广告过滤规则中的至少一条广告过滤规
则匹配成功,表明该网络请求为广告,则过滤该网络请求,达到拦截广告的目的。
综上,本发明第四实施例的广告过滤方法,在C++层进行,先将广告过滤规则进行
分类,然后通过VPN实现网络连接以及先将网络请求的URL中的第一关键字与一类广告过滤
规则的索引匹配,若匹配成功,再将该第一关键字与该类广告过滤规则中的广告过滤规则
匹配,避免将该网络请求与过多的不会涉及的广告过滤规则匹配,减少匹配次数,提高匹配
的效率。
第五实施例
本发明第五实施例公开了一种广告过滤方法。该方法由C++层实现。优选的,该方
法优选应用于安卓系统。该方法可将第三实施例和第四实施例的方法融合在一起应用,对
于网络请求可先判断是否有特定的广告过滤规则进行匹配,若有,则直接匹配相应的广告
过滤规则;若没有,则将网络请求与不同类的广告过滤规则的索引匹配。如图5所示,该方法
包括如下的步骤:
步骤S501:设置广告过滤规则。
其中,该广告规则包括:标准规则和自定义规则。标准规则一般可采用
AdblockPlus广告规则库的规则。该广告规则库的规则全面并且更新及时。自定义规则可由
用户根据自身需求定义相应的规则,以实现过滤特定广告的效果。应当理解的是,该广告过
滤规则通过C++语言编写。
步骤S502:在广告过滤规则中添加第二关键字。
其中,该第二关键字用于指示使用广告过滤规则进行过滤的应用。优选的,第二关
键字一般为pkg(安装包配置)关键字。通过该第二关键字可限定特定的应用发送的网络请
求需要与该广告过滤规则进行匹配,避免将该特定应用的网络请求与过多的不会涉及的广
告过滤规则匹配,可提高匹配的效率。应当理解的是该步骤也通过C++语言实现。
步骤S503:提取每一广告过滤规则的第三关键字。
由于有大量的广告过滤规则,因此,要与所有的广告过滤规则都进行匹配会使效
率降低。因此,通过该步骤以便将广告过滤规则分类。该第三关键字可以是广告过滤规则的
领域、形式、作用等等。
步骤S504:根据广告过滤规则的第三关键字,将广告过滤规则分类。
具体的,将相似第三关键字的广告过滤规则分为一类。例如,可以按照广告的不同
形式将广告过滤规则分类。
步骤S505:建立每类广告过滤规则的索引。
该索引用于表示该类广告过滤规则的相同点,可以是第三关键字,也可以是对第
三关键字的进一步总结。该索引使得在匹配规则的时候,可以先匹配索引,从而可减少匹配
的次数,提高效率。
应当理解的是,上述的步骤可通过C++语言实现。
步骤S506:从JAVA层获取VPN服务建立的网络连接。
通过该步骤可使C++层接管网络数据。C++层从Java层获取VPN服务建立的网络连
接后,可使用lwip和libevent技术实现网络数据的收发。因此,本实施例的方法JAVA层只是
负责VPN服务的建立,后续的步骤也不需要JAVA层参与,可避免在JAVA层与C++层之间来回
切换,从而提高了广告过滤的效率。
步骤S507:接收应用发送的网络请求。
应用可发送网络请求。该网络请求可能是广告。
步骤S508:提取网络请求的URL中的第一关键字。
网络请求的URL包含了一些重要信息,因此通过提取网络请求的URL中的第一关键
字可用于判断该网络请求是否是广告。
步骤S509:获取发送网络请求的应用的包名。
具体的,该网络请求的应用的包名可通过socket套接字获取。通过该步骤获取包
名可用于与广告过滤规则中的第二关键字匹配。
步骤S510:将发送网络请求的应用的包名与广告过滤规则中的第二关键字匹配。
通过该步骤,可判断发送网络请求的应用的包名与广告过滤规则中的第二关键字
是否匹配。若匹配成功,则表明该应用需要与该广告过滤规则进行匹配,进行步骤S511。若
所有广告过滤规则的第二关键字与包名均匹配不成功,则表明该应用需要与所有广告过滤
规则进行匹配,进行步骤S512和S513。
步骤S511:将匹配成功的广告过滤规则与网络请求的URL中的第一关键字匹配。
若发送网络请求的应用的包名与广告过滤规则中的第二关键字匹配成功,则该广
告过滤规则用于过滤该应用的网络请求,因此,将该广告过滤规则与网络请求的URL中的第
一关键字匹配以判断该网络请求是否是广告。若匹配成功则进行步骤S514。
步骤S512:遍历索引,将网络请求的URL中的第一关键字与索引匹配。
通过该步骤,可先与索引匹配,从而确定该网络请求属于哪一类网络请求,以便减
少匹配的次数,提高效率。
步骤S513:若匹配成功,则将匹配成功的索引对应的一类广告过滤规则与网络请
求的URL中的第一关键字匹配。
若网络请求的URL中的第一关键字与索引匹配,则表明该网络请求与该类广告过
滤规则可能匹配成功,只需要将该网络请求与该类广告过滤规则进行匹配即可,无需再与
其他广告过滤规则匹配,从而可减少匹配次数。若匹配成功,则进行步骤S514。
步骤S514:过滤网络请求。
若网络请求的URL中的第一关键字与该类广告过滤规则中的至少一条广告过滤规
则匹配成功,表明该网络请求为广告,则过滤该网络请求,达到拦截广告的目的。
综上,本发明第五实施例的广告过滤方法,在C++层进行,先在广告过滤规则中添
加第二关键字并将广告过滤规则进行分类,然后通过VPN实现网络连接,先将网络请求的
URL中的第一关键字与广告过滤规则的第二关键字进行匹配,若匹配成功,则只与该特定的
广告过滤规则进行匹配;若匹配不成功,则再将网络请求的URL中的第一关键字与一类广告
过滤规则的索引匹配,若匹配成功,将该第一关键字与该类广告过滤规则中的广告过滤规
则匹配;避免将该网络请求与过多的不会涉及的广告过滤规则匹配,减少匹配次数,提高匹
配的效率。
第六实施例
本发明第六实施例提供了一种广告过滤装置。该装置由C++层实现。优选的,该装
置优选应用于安卓系统。如图6所示,该装置包括如下的具体结构:
获取模块601,用于从JAVA层获取VPN服务建立的网络连接。
接收模块602,用于接收应用发送的网络请求。
第一提取模块603,用于提取网络请求的URL中的第一关键字。
匹配模块604,用于将网络请求的URL中的第一关键字与预设的广告过滤规则匹
配。
过滤模块605,用于若匹配成功,则过滤网络请求。
如图7所示,在一优选的实施例中,该装置还包括:
设置模块606,用于从JAVA层获取VPN服务建立的网络连接的步骤之前,设置广告
过滤规则。
其中广告规则包括:标准规则和自定义规则。
在一优选的实施例中,该装置还包括:
添加模块607,用于设置广告过滤规则的步骤之后,在广告过滤规则中添加第二关
键字。
其中,第二关键字用于指示使用广告过滤规则进行过滤的应用。
则匹配模块604包括:
获取子模块6041,用于获取发送网络请求的应用的包名。
第一匹配子模块6042,用于将发送网络请求的应用的包名与广告过滤规则中的第
二关键字匹配。
第二匹配子模块6043,用于若匹配成功,则将匹配成功的广告过滤规则与网络请
求的URL中的第一关键字匹配。
在一优选的实施例中,该装置还包括:
第二提取模块608,用于设置所述广告过滤规则的步骤之后,提取每一广告过滤规
则的第三关键字。
分类模块609,用于根据广告过滤规则的第三关键字,将广告过滤规则分类。
建立模块610,用于建立每类广告过滤规则的索引。
则匹配模块604还包括:
第三匹配子模块6044,用于遍历所述索引,将网络请求的URL中的第一关键字与索
引匹配。
第四匹配子模块6045,用于若匹配成功,则将匹配成功的索引对应的一类广告过
滤规则与网络请求的URL中的第一关键字匹配。
在一优选的实施例中,该装置还包括:
训练模块611,用于设置所述广告过滤规则的步骤之后,对设置的广告过滤规则进
行训练。
保留模块612,用于保留训练中满足置信度的所有广告过滤规则。
本发明实施例中,在C++层通过VPN进行网络连接以及将网络请求的URL中的第一
关键字与广告过滤规则进行匹配,可以提高广告过滤的效率,使每个请求平均在5毫秒内过
滤完成。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关
之处参见方法实施例的部分说明即可。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各
示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些
功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业
技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应
认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、
装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的
方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为
一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或
者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互
之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连
接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显
示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个
网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目
的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以
是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以
存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说
对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计
算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个
人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码
的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何
熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵
盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。