您现在的位置是:热点 >>正文
搜索引擎去广告的代码
热点5327人已围观
简介搜索引擎的广告位越来越丧心病狂了。百度首页前五条全是“推广”标签,谷歌也学会了在购物结果里塞赞助商链接。我写了个油猴脚本,专治这种视觉污染。 核心思路就一句话:用CSS选择器把广告节点藏起来。别想得太 ...
搜索引擎的搜索广告位越来越丧心病狂了。百度首页前五条全是引擎“推广”标签,谷歌也学会了在购物结果里塞赞助商链接。去广我写了个油猴脚本,代码专治这种视觉污染。搜索
核心思路就一句话:用CSS选择器把广告节点藏起来。引擎别想得太复杂,去广不需要机器学习,代码不需要图像识别,搜索广告商再怎么换皮,引擎DOM结构里总有规律可循。去广
拿百度举例。代码广告链接的搜索class名常常带`ec_`或`result-op`,而自然结果统一带`result c-container`。引擎我写的去广第一版脚本长这样:
// ==UserScript== // @name 百度去广告 // @match https://www.baidu.com/* // ==/UserScript== const adSelectors = [ '#content_left div[class*="ec_"]', '#content_left div[data-tools*="ad"]', 'div[class*="result-op"]' ]; adSelectors.forEach(sel => { document.querySelectorAll(sel).forEach(el => el.remove()); }); 跑起来效果立竿见影。但问题是百度会动态加载新广告——你滚动页面,AJAX又拉来一批。所以得配个`MutationObserver`监听DOM变化,一旦有广告节点插入就立刻拔掉。这就像打地鼠,但地鼠刚冒头就被锤。
谷歌更狡猾。广告链接的href里藏着`url?q=`跳转参数,自然结果直接指向目标网站。所以除了看class,还得检查链接特征。我写了个正则:
function isAdLink(a) { const href = a.href || ''; return href.includes('/url?q=') || href.includes('googleadservices') || a.getAttribute('data-snf') === 'x'; } 然后遍历所有`h3`标题下的`a`标签,命中就往上找父节点,把整个搜索条目删掉。实测准确率大概95%,偶尔误伤一个正常结果——但为了清净,误伤就误伤吧。
有个细节很多人忽略:广告位不只在结果列表里。百度右侧的“相关搜索”栏、谷歌顶部的购物广告框、甚至“百度知道”的推广卡片,全是重灾区。我的脚本里专门维护了一份`adContainerSelectors`,覆盖这些边角料区域。
写到第三版时遇到个头疼问题。有些广告用了`position: sticky`吸顶,像狗皮膏药一样粘在视口顶部。直接`remove()`倒是干净,但页面布局会抖动——因为广告占位被抽走了,下面内容往上跳。解决办法是给广告容器加上`visibility: hidden !important; height: 0 !important;`,保留占位但不显示。丑是丑了点,但浏览体验流畅。
还有个反直觉的坑:某些搜索引擎(比如必应)的广告节点不带任何特殊标识,纯粹靠`data-index`排序。前三个是广告,后面才是自然结果。这种只能写死逻辑:`document.querySelectorAll('#b_results > li').slice(0, 3).forEach(el => el.style.display = 'none')`。简单粗暴,但有效。
最后提醒一句:别把脚本写成针对某个网站的硬编码。搜索引擎改版是常事,今天能用的选择器明天就失效。我把选择器都抽成配置数组,每次页面加载时重新匹配,失效了就自己改配置,不用动主逻辑。
这套脚本我用了快两年,搜索体验干净得像回到了2005年。广告商和反广告的猫鼠游戏永远不会停,但只要DOM还存在结构化特征,这场仗就有的打。
Tags:
相关文章
自动发卡网站搭建
热点昨天帮朋友修一台服务器,发现他居然还在用人工发卡——客户付款后等半小时才收到卡密,退款纠纷一堆。我直接甩了个开源发卡系统给他,半小时装完,现在他每天省出两小时打游戏。自动发卡网站这东西,说白了就是把 ...
【热点】
阅读更多案例图片素材
热点做设计这行十几年,最怕听到的一句话就是“随便找张图配一下”。说这话的人不知道,一张合适的案例图片素材,能顶得上三页文案。上周给一个做民宿的客户改PPT,他原本用的是网上随便扒的酒店大堂照,灰蒙蒙的,沙 ...
【热点】
阅读更多渗透检测操作
热点工件表面那道肉眼几乎看不见的裂纹,在紫外灯下会发出刺眼的黄绿色荧光。这就是渗透检测的厉害之处——它专门对付那些藏在表面开口的缺陷,比如裂纹、气孔、折叠。铸件、锻件、焊缝,甚至陶瓷,都能用这法子查。 操 ...
【热点】
阅读更多