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月27日 -
海外代购销售攻略如何做(怎么做海外代购生意货源怎么找)
代购生意怎么做?十招教你顺利起飞 不要copy别人的朋友圈 以前我也做过这样的事情,就是加几个代购微信,然后转发别人的图片和文字,直接发到自己的朋友圈。这样其实是非常慢的一种方式。…
2023年8月12日 -
直通车2个宝贝推广同一个关键词(直通车智能推广要点技巧怎么做成交量高)
直通车投放的关键词怎么选? 直通车关键词的选择是我们直通车推广的重中之重。 选择什么样的关键词,就会直接影响我们店铺的访客和最终成交量、以及直通车的推广效果,而它也从另一个侧面反映…
2023年7月21日 -
长沙网络营销如何做到优质的推广(做好网络营销关键是要具备什么能力)
营销无处不在,每个人都不陌生,无论你是作为卖产品、卖服务的企业方,还是作为体验产品和服务的消费方,必定都感受到了今天这个时代的营销玩法已发生了深刻改变。 在此之前,传统的营销方式,…
-
淘宝代销怎么做在哪里开店卖东西(淘宝代销有什么风险上家是真的吗)
淘宝店的一件代发是怎么操作的? 没有资金不是更应该选择一件代发吗?!!完全没有囤货的风险呀! 况且一件代发的操作也简单,就算你完全不会,那好好给我看、看完就去操作,分分钟就让你学会…
2023年8月12日 -
域名是什么和ip地址有什么不同(如何理解域名和ip的关系)
对于经常上网的朋友来说,都会听说过域名,但就具体来说却不知道域名是什么,下面将会为您来介绍一下域名,下面将详细解释什么是域名?域名和ip地址关系?以及域名基本知识介绍! 什么是域名…
2023年7月21日 -
品牌化妆品网店代理怎么做(开化妆品网店怎么弄需要哪些流程和东西)
如何代理化妆品 成为代理的步骤 化妆是女人的本性。美丽的外表可以给别人留下好印象。现代女性越来越关注自身的外在美。甚至有许多女性朋友为了拥有一个美丽的外表进行整容手术。美容产业慢慢…
2023年8月5日 -
2024年发家致富好项目有哪些(发家致富项目一年四季不愁销路)
这七个小生意,一年四季都不愁销路 创业一直是人们津津乐道的话题,想要创业就要多了解如何选择项目。有的项目因为季节的原因,有一定的局限性,并不是最佳选择。 下面我就给大家介绍七个没有…
2023年8月12日 -
双十一尾款最晚什么时候付(双十一尾款付了可以退全款吗)
双十一交了定金,忘记付尾款了,定金能要回来吗? 李佳琦、薇娅引领的双十一真是火爆全场!姑娘们纷纷下单!雪花秀套装买一送一哦~买!大眼睛睫毛膏交定金打折扣哦~买!Oh my god!…
2023年7月26日 -
适合农村的小投资办厂什么好做(小本投资办厂好项目有哪些好做的)
农村创业,有哪些项目投资小、风险小、见效快?这几个都不错 这些天收到很多粉丝的咨询,大都是有关创业项目方面的,在当前经济形势下,创业虽然高风险,但却是一个群体想改变命运的唯一途径,…
2023年8月7日
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 87833061@qq.com 举报,一经查实,本站将立刻删除。