教你编写百度搜索广告过滤的chrome插件
1 前言
目前百度搜索列表首页里,广告5条正常内容是10条,而且广告都是前1到5条的位置,与正常内容的显示样式无异。对于我们这样有能力的开发者,其实可以简单的实现一个chrome插件,在百度搜索页面里执行一些我们自己的javascript,删除掉这些广告条目。
2 插件简介
Chrome插件逻辑主体为两部分组成,一是在目标文档(比如www.baidu.com页面)运行的js和css,叫content_scripts;一部分是在chrome外壳上加载与显示的内容(比如图标和设置界面)叫browser_action,这些都需要在一个manifest.json的文件里描述。
2.1 插件结构
manifest.json
scripts
--jquery-1.7.1.min.js
--include.js
images
--icon16.png
--icon32.png
其中,scripts下的js是content_scripts需要的,images下的图片是叫browser_action需要的。
3 百度搜索的广告特征
3.1 文档结构特征
<div id="content_left">
<div>
<div>广告1</div>
<div>广告2</div>
<div>广告3</div>
<div>广告4</div>
</div>
<div>搜索记录1</div>
<div>搜索记录2</div>
<div>
<div>广告5</div>
</div>
</div>
- 广告可以分首尾两个地方显示,也可能只有在首部显示
- 多个广告可能被一个div包住,此div与搜索记录平行,但有时候广告与搜索记录直接平行
3.2 样式特征
- 广告条目的class名称是动态的,每次刷新都得到不一样的class名
- 广告条目使用了内联样式,用于保证广告的显示属性不受样式表的影响
3.3 自保护特征
在文档加载完成的两秒之内,广告条目的dom受到保护,试图修改广告的内联样式或直接删除广告的dom,都会触发生成新的不一样广告,插入搜索记录前面。
4 广告过滤思路
由于百度搜索在反反广告上做了很多措施,基于css级别的隐藏广告思路是不太可行了,我们可以基于jQuery,监测document的元素插入事件,在里面搜索广告条件,进而删除。虽然百度有自保护特征,但终究插入新广告也是触发到测document的元素插入事件。
4.1 include.js代码
; (function () {
$(document).bind("DOMNodeInserted", function (e) {
$("#content_left div[data-click] span:contains('广告')")
.parents("#content_left div[data-click]")
.remove();
});
})();
$("#content_left div[data-click] span:contains('广告')")可以将广告标识选择出来,向上选择到#content_left div[data-click],就是广告条目,然后把它删除。删除之后,百度会自动插入新的广告,新广告也符合这个选择器,所以会二次运行我们的去广告代码逻辑。
4.2 插件和源代码
源代码已经放到github上,把里面有一个已打包好的BaiduAdBlock.crx,将其拖曳到chrome内核的浏览器上,勾选“允许访问敏感页面”就完成安装。
github链接
https://github.com/xljiulang/BaiduAdBlock
教你编写百度搜索广告过滤的chrome插件的更多相关文章
- Chrome 百度搜索热点过滤插件 - 开源软件
学习时,为了搜集最全的中文资料,有时候不得不使用Baidu搜索引擎.在你还是个小菜鸡的时候你可能会花费大量时间在百度上! 但是,时间久了你会发现,你总会被网络上一些奇奇怪怪或者有趣的事情吸引过去而逐渐 ...
- 使用Tampermonkey(油猴) 插件,重新实现了,百度搜索热点过滤功能
昨天晚上,花了点时间学习了Chrome插件的制作方法,并书写了<Chrome 百度搜索热点过滤插件 - 开源软件>这一文章,简单地介绍自己实现的百度搜索热点过滤神器的原理和使用方式,并进行 ...
- 写个屏蔽百度搜索广告的Chrome插件
工作生活都用百度比较多,毕竟它是目前为止感觉最好的国内PC搜索引擎.我纵使已经差不多炼成了一眼过滤广告的眼力,但始终觉得碍眼,感觉还是写个插件把它屏蔽了吧.这个插件开发的门槛其实非常低,只是一开始做不 ...
- 【项目】百度搜索广告CTR预估
-------倒叙查看本文. 6,用auc对测试的结果进行评估: auc代码如下: #!/usr/bin/env python import sys def auc(labels,predicted_ ...
- 用less编写百度搜索静态效果
效果图 html页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- jquery 仿百度搜索下拉框的插件
转载地址:http://www.open-open.com/lib/view/open1420624048437.html 今天写了个下拉插件分享出来 效果: , 可以搜素,也可以使用上下键选择匹配出 ...
- Chrome谷歌浏览器屏蔽百度搜索右侧广告推荐方法
先上图百度广告,其实屏蔽广告很简单 主要分成以下三步: 下载Adblock Plus插件 安装Adblock Plus插件 开启屏蔽 一.下载Adblock Plus插件(官网离线版) 二.安装Adb ...
- 搜索引擎广告过滤Chrome插件
搜索广告屏蔽Chrome插件:自动过滤:百度,360,搜狗,google,bing的搜索广告,让魏则西的悲剧不再重演.珍爱生命,远离搜索广告! 下载:FuckAd.zip 安装:方法自行百度. 关闭百 ...
- 百度搜索 “Java面试题” 前200页(面试必看)
前言 本文中的题目来源于网上的一篇文章<百度搜索 "Java面试题" 前200页>,但该文章里面只有题目,没有答案.因此,我整理了一些答案发布于本文.本文整理答案的原则 ...
随机推荐
- 【bzoj 1414】对称的正方形 单调队列+manacher
Description Orez很喜欢搜集一些神秘的数据,并经常把它们排成一个矩阵进行研究.最近,Orez又得到了一些数据,并已经把它们排成了一个n行m列的矩阵.通过观察,Orez发现这些数据蕴涵了一 ...
- poj3352添加多少条边可成为双向连通图
Road Construction Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13311 Accepted: 671 ...
- 如何解析C语言的声明
一个声明:int *p[] 分为四部分: (1)p (2)p右面的符号(可以什么都没有) (3)p左面的符号(可以什么都没有) (4)最左面的类型说明符 解读一个声明先从p开始,然后的顺序是:右左右左 ...
- shell简明教程
shell的格式 shell可以在直接在命令行下输入,也可以保存成shell脚本文件运行.当命令简单并且不需要重复使用,在命令行输入直接执行即可,否则就写成脚本.shell脚本默认文件扩展名为.sh. ...
- 从壹开始前后端 [vue后台] 之一 || 权限后台系统 1.0 正式上线
缘起 哈喽各位小伙伴周三好,春节已经过去好多天了,群里小伙伴也各种催搞了,新年也接了新项目,比较忙,不过还是终于赶上这个二月的尾巴写了这篇文章,也把 vue 权限后台上线了(项目地址:http://1 ...
- Flannel工作原理
flanneld程序启动会有一个参数叫做-etcd-prefix和-iface.前者是指定flanneld程序使用etcd的哪个节点来存储数据,-face是指定flanneld使用网络是使用宿主机哪个 ...
- FreeSql v0.5.x 功能介绍
弱类型 之前在操作实体时,必须传统泛型参数,现在可以实现弱类型实体的操作.以 Repository 为例: var repos = fsql.GetGuidRepository<object&g ...
- 从PRISM开始学WPF,Prism7更新了什么
当时我在搬运Prism6.3的sample代码的时候,就是因为网上的资料太老旧,万万没想到这给自己挖了一个坑,因为我在做笔记的时候,prism已经在更新7.0了 现在已经是7.2了,(lll¬ω¬), ...
- 第11章 创建请求URLs - IdentityModel 中文文档(v1.0.0)
该RequestUrl是创建与查询字符串参数,例如URL的帮手: var ru = new RequestUrl("https://server/endpoint"); // pr ...
- QLabel播放gif
mv = new QMovie(strIconPath + "justake.gif"); mv->setScaledSize(QSize(,)); ui->label ...