google提供的广告怎么关闭(屏蔽谷歌广告的软件怎么设置)
个人更喜欢用google进行搜索,然后抽空的时候可以看看百度热搜,来回切换总有点不方便,所以编写一个的油猴脚本,实现谷歌搜索去广告,然后右侧展示百度搜索结果和热搜,先看下使用前效果
脚本运行后的效果
api介绍
先放一个官方文档地址,下面介绍下这次用到的脚本Api
1 |
@match 脚本运行在哪个网页 |
例子:@match
https://www.google.com.hk/*
1 |
@grant 申请GM_*函数和unsafeWindow权限 |
例子:@grant GM_xmlhttpRequest 可以实现跨域请求,在访问谷歌页面的时候请求百度页面,然后将热搜缝合在右侧
1 |
@require 可以引用外部的js脚本 |
例子:@require
https://libs.baidu.com/jquery/2.1.4/jquery.min.js 引入jquery脚本
分析
谷歌搜索页
访问网页,按f12打开控制台,发现广告在id为taw的div下面
右侧的内容在id为rhs的div下面,有时候不存在右侧内容,可以将热搜结果放在#rcnt下
百度搜索页
右侧的热搜是放在class为toplist1-tr*的下面,网页其实是把30条热搜全部加载完成之后,点击切换通过控制css display: none; 来显示和隐藏。所以可以通过正则 /<div class=”toplist1-tr([\s\S])*?<\/div>/g 将他们全部取出来
顺便也可以把搜索的结果展示在右侧,通过 /<h3 class=”c-title t t tts-title”>/g 来获取所有结果。匹配之后发现一个issue,百度自家的搜索结果没匹配上,正好这些结果没啥用。
核心代码
在页面加载完成后执行脚本,获取百度结果,然后拼接,开始以为点击搜索是异步请求,结果是前后端不分离的,整个页面刷新,所以每次搜素后都会执行这个脚本,就不用hook一些点击事件、请求、dom发生变化之类的东西,执行就ok。
去除谷歌广告
1 2 3 4 5 |
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">delGoogleAd</span>() </span>{ $(<span class="hljs-string">"#taw"</span>).remove(); $(<span class="hljs-string">"#bottomads"</span>).remove(); } |
获取百度搜索结果
1 2 3 4 5 6 7 8 |
<span class="hljs-selector-tag">GM_xmlhttpRequest</span>({ <span class="hljs-attribute">method</span>: <span class="hljs-string">"get"</span>, url: <span class="hljs-string">"https://www.baidu.com/s?wd="</span> + searchKey, onload: function (r) { console.<span class="hljs-built_in">log</span>(r); } }) |
完整代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
<span class="hljs-comment">// ==UserScript==</span> <span class="hljs-comment">// @name test</span> <span class="hljs-comment">// @namespace http://tampermonkey.net/</span> <span class="hljs-comment">// @version 0.1</span> <span class="hljs-comment">// @description try to take over the world!</span> <span class="hljs-comment">// @author You</span> <span class="hljs-comment">// @match https://www.google.com.hk/*</span> <span class="hljs-comment">// @grant GM_xmlhttpRequest</span> <span class="hljs-comment">// @require https://libs.baidu.com/jquery/2.1.4/jquery.min.js</span> <span class="hljs-comment">// ==/UserScript==</span> (<span class="hljs-function"><span class="hljs-keyword">function</span> () </span>{ <span class="hljs-string">"use strict"</span>; <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">delGoogleAd</span>() </span>{ $(<span class="hljs-string">"#taw"</span>).remove(); $(<span class="hljs-string">"#bottomads"</span>).remove(); } <span class="hljs-keyword">async</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">addBdResult</span>() </span>{ <span class="hljs-built_in">console</span>.log($(<span class="hljs-string">`#tsf input`</span>).value, $(<span class="hljs-string">`#tsf input.gLFyf.gsfi`</span>).val()); <span class="hljs-keyword">const</span> [str, hotRes] = <span class="hljs-keyword">await</span> getBdResult($(<span class="hljs-string">`#tsf input.gLFyf.gsfi`</span>).val()); <span class="hljs-comment">// 处理百度热搜</span> <span class="hljs-keyword">const</span> hotHtml = handleHot(hotRes); <span class="hljs-keyword">const</span> rhs = $(<span class="hljs-string">"#rhs"</span>); <span class="hljs-keyword">if</span> (rhs.length) { rhs.html(str).append(hotHtml); } <span class="hljs-keyword">else</span> { $(<span class="hljs-string">"#rcnt"</span>) .append(<span class="hljs-string">`<div id="rightBar" style="margin-left:20px;"><span class="hljs-subst">${str}</span></div>`</span>) .find(<span class="hljs-string">"#rightBar"</span>) .append(hotHtml); } } <span class="hljs-keyword">async</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">getBdResult</span>(<span class="hljs-params">searchKey</span>) </span>{ <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> <span class="hljs-built_in">Promise</span>(<span class="hljs-function">(<span class="hljs-params">reslove, reject</span>) =></span> { GM_xmlhttpRequest({ <span class="hljs-attr">method</span>: <span class="hljs-string">"get"</span>, <span class="hljs-attr">url</span>: <span class="hljs-string">"https://www.baidu.com/s?wd="</span> + searchKey, <span class="hljs-attr">onload</span>: <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">r</span>) </span>{ <span class="hljs-keyword">if</span> (r.status === <span class="hljs-number">200</span> && r.readyState === <span class="hljs-number">4</span>) { <span class="hljs-comment">//解析搜索结果</span> <span class="hljs-keyword">let</span> resReg = <span class="hljs-regexp">/<h3 class="c-title t t tts-title">([\s\S])*?<\/h3>/g</span>; <span class="hljs-keyword">let</span> result = <span class="hljs-string">""</span>, temp; <span class="hljs-keyword">while</span> ((temp = resReg.exec(r.responseText)) != <span class="hljs-literal">null</span>) { result += temp[<span class="hljs-number">0</span>]; } <span class="hljs-comment">// console.log("result===>", result);</span> <span class="hljs-keyword">let</span> str = result .replace( <span class="hljs-regexp">/<h3 class="c-title t t tts-title">/g</span>, <span class="hljs-string">`<h4 style="margin: 6px 0;">`</span> ) .replace(<span class="hljs-regexp">/<\/h3>/g</span>, <span class="hljs-string">"</h4>"</span>); <span class="hljs-comment">// 解析百度热搜</span> <span class="hljs-keyword">let</span> hotReg = <span class="hljs-regexp">/<div class="toplist1-tr([\s\S])*?<\/div>/g</span>; <span class="hljs-keyword">let</span> hotRes = [], tempRes; <span class="hljs-keyword">while</span> ((tempRes = hotReg.exec(r.responseText)) != <span class="hljs-literal">null</span>) { <span class="hljs-comment">// console.log(tempRes);</span> hotRes.push( tempRes[<span class="hljs-number">0</span>].replace(<span class="hljs-string">`href="`</span>, <span class="hljs-string">`href="https://www.baidu.com`</span>) ); } reslove([str, hotRes]); } <span class="hljs-keyword">else</span> { reject(r.responseText); } }, }); }); } <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">handleHot</span>(<span class="hljs-params">hotRes = []</span>) </span>{ <span class="hljs-keyword">const</span> hotPage1 = hotRes.splice(<span class="hljs-number">0</span>, <span class="hljs-number">15</span>); <span class="hljs-keyword">const</span> hotPage2 = hotRes; <span class="hljs-keyword">let</span> toggleShow = <span class="hljs-literal">true</span>; <span class="hljs-keyword">return</span> $( <span class="hljs-string">`<div><div id="toggle" style="cursor: pointer; margin-bottom: 10px;">切换</div></div>`</span> ) .append(<span class="hljs-function"><span class="hljs-params">()</span> =></span> { <span class="hljs-keyword">return</span> $( <span class="hljs-string">`<div id="page1" style="display: <span class="hljs-subst">${toggleShow ? "none" : ""}</span>"><div/>`</span> ).append(hotPage2.join(<span class="hljs-string">""</span>)); }) .append(<span class="hljs-function"><span class="hljs-params">()</span> =></span> { <span class="hljs-keyword">return</span> $( <span class="hljs-string">`<div id="page2" style="display: <span class="hljs-subst">${toggleShow ? "" : "none"}</span>"><div/>`</span> ).append(hotPage1.join(<span class="hljs-string">""</span>)); }) .find(<span class="hljs-string">"#toggle"</span>) .on(<span class="hljs-string">"click"</span>, <span class="hljs-function"><span class="hljs-keyword">function</span> () </span>{ toggleShow = !toggleShow; <span class="hljs-built_in">console</span>.log($(<span class="hljs-keyword">this</span>).next()); $(<span class="hljs-keyword">this</span>) .next() .css(<span class="hljs-string">"display"</span>, toggleShow ? <span class="hljs-string">"none"</span> : <span class="hljs-string">""</span>) .next() .css(<span class="hljs-string">"display"</span>, toggleShow ? <span class="hljs-string">""</span> : <span class="hljs-string">"none"</span>); }) .end(); } <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">hookListener</span>() </span>{ <span class="hljs-keyword">let</span> oldadd = EventTarget.prototype.addEventListener; EventTarget.prototype.addEventListener = <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">...args</span>) </span>{ <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"addEventListener"</span>, <span class="hljs-keyword">this</span>); oldadd.call(<span class="hljs-keyword">this</span>, ...args); }; } <span class="hljs-comment">// hookListener();</span> <span class="hljs-comment">// $(()=>{</span> <span class="hljs-comment">// })</span> delGoogleAd(); addBdResult(); })(); |
本文来自投稿,不代表本站立场,转载请注明:https://www.qingyangmei.com/99710.html
相关推荐
-
微信群营销的核心是进行圈子营销(微信群营销方案与技巧有哪些)
微信群运营其实不是简单的,作为群管理员有责任和有义务把这个群管理好,运营好,让群成员有归属感,让入群新人有信任感。那么怎样才能消除他们的疑虑,真正感受到归属感呢?下面小编就给大家具…
2023年7月22日 -
千元投资办厂,一个人办场千元投资
在大城市里面呆腻了,都想回到自己的农村里面创业,但是不少人苦思冥想也都不知道该做什么东西,其实回老家办厂,这个成本并不是太高,效益也还不错,如果做得成功的话,基本上就是钱多事少离家…
-
抖音自动字幕的图标没有了
抖音自动字幕的图标消失了,这是一个令人感到惊讶的问题。这可能是因为用户更新了抖音软件,导致自动字幕功能被取消。 首先,在抖音上使用自动字幕的功能是为了帮助用户更好地分享自己的视频。…
-
网络推广专员岗位职责和任职要求(网络推广专员工资高吗一般是多少)
网络推广这个职业太火了,好多人都想跻身到网络营销的潮流中来。面对来势汹汹的竞争压力,我们不得不提升自己的硬实力,保证能够在行业中长期立足。 关于这份职业的内情,你该提早知道。希望能…
2023年7月21日 -
搜索引擎营销的具体方法包括哪些(常见的营销方式和渠道有哪些)
常见的6种网络营销推广方法,你的企业选对了吗? 关于网络推广大家都知道方法有很多种,那么对于为什么要做网络推广,是个什么概念很多企业老板却不是很清楚,其实通常来讲,网络推广是以企业…
2023年7月19日 -
google网站推广渠道有哪些(谷歌推广效果怎么做才算好)
怎么做google海外推广?谷歌推广有哪些方式? 广州聚米网络科技有限公司是一家精于外贸全网营销的专业网络营销服务商,成功为数万家公司成功打开国际市场,得到合作伙伴的高度认可。广州…
2023年7月27日 -
什么是水货手机有什么不好(水货手机和行货正品手机质量有差别吗)
水货:IPhone的水货可不是大家普遍理解的那种什么都是假的那种“水货”,这里的IPhone“水货”的意义是指国外版本的手机,销售地点不在国内,而我们经常听到的港行、港版也是水货的…
2023年8月11日 -
抖音个人简介怎么写才吸引人
我叫XXX,今年XX岁,是一名XX大学XX专业在读大学生,性格开朗,热爱生活,有着旺盛的求知欲和活力,有一颗不断探索的心,对未知的世界充满好奇。 我的技能十分丰富,有一定的心理学知…
-
外卖新手一天能送几单,外卖新手一个月能挣多少钱
其实我们知道不管做什么样的事情都是从无到有,从小到大,从陌生到熟悉的这样的一个过程,就好像现在在街上送外卖的那些外卖小哥一样,最开始的时候也显得笨拙一些,但是随着他的业务熟练程度越…
-
seo与sem的区别有哪些分类(seo站内优化最主要的是什么)
SEO和SEM的区别有哪些呢? 在我们熟悉的网站优化营销中,许多人会联想到两个含义十分相似的词:SEO和SEM。但许多人不能区分它们之间的关系,因为他们的内容有时会重叠,仔细分析却…
2023年7月19日
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 87833061@qq.com 举报,一经查实,本站将立刻删除。