使用 Chrome 扩展替换 Google Ads

使用 Chrome 扩展替换 Google Ads

本文介绍如何通过 chrome 扩展程序,利用 Google Publisher Tag (gpt) 和 Adsense 的特性,定位并替换网页中的 Google 广告。教程详细讲解了如何通过 JavaScript 代码实现广告位的查找与替换,并提供了完整的 Chrome 扩展程序示例,包括 manifest.JSon、service-worker.js 和 pageScript.js 的代码,帮助开发者快速构建自定义广告替换功能。

替换 Google Ad Manager 广告

如果网站使用 Google Ad Manager (以前的 DoubleClick for Publishers) 来投放广告,那么可以使用 googletag API 来定位和替换广告位。

for (i = 0; i < googletag.pubads().getSlots().length; i++) {     var slotdomId = googletag.pubads().getSlots()[i].getSlotElementId();     document.getElementById(slotDomId).innerhtml = 'yourcustominnerHTML'; }

这段代码遍历所有通过 googletag.pubads().getSlots() 获取到的广告位,然后使用 getSlotElementId() 获取广告位的 DOM ID,最后通过 document.getElementById() 找到对应的 DOM 元素,并替换其 innerHTML。

注意事项:

  • 此方法仅适用于使用 Google Publisher Tag (GPT) 的网站。
  • 确保在 googletag 对象可用后执行此代码,通常需要在 DOM 加载完成后执行。

替换 Adsense 广告

如果网站使用 Adsense 投放广告,可以使用不同的方法来定位广告位。通常,Adsense 广告会被包裹在一个 ins.adsbygoogle 元素中。

var adsenseBlocks = document.querySelectorAll('ins.adsbygoogle'); for (i = 0; i < adsenseBlocks.length; i++) {     var slotDomId = adsenseBlocks[i].parentNode.id;     document.querySelector('#' + slotDomId).innerHTML = 'yourcustomInnerHTML'; }

这段代码首先使用 document.querySelectorAll(‘ins.adsbygoogle’) 找到所有 Adsense 广告的 ins 元素,然后获取其父元素的 ID,最后通过 document.querySelector() 找到对应的 DOM 元素,并替换其 innerHTML。

注意事项:

  • 此方法假设 Adsense 广告位被包含在一个具有 ID 的父元素中。
  • 确保在 Adsense 广告加载完成后执行此代码,否则可能无法找到广告位。

Chrome 扩展程序示例

为了在 Chrome 扩展程序中执行上述代码,需要将脚本注入到目标网页的 DOM 中。以下是一个完整的 Chrome 扩展程序示例:

manifest.json

{   "name": "Your Extension Name",   "action": {},   "manifest_version": 3,   "version": "0.1",   "description": "blablabla",   "permissions": [         "activeTab",         "webNavigation",         "scripting"     ],   "host_permissions": [     "https://*/"   ],   "background": {     "service_worker": "service-worker.js"   },   "web_Accessible_resources": [{         "resources": ["pageScript.js"],         "matches": ["<all_urls>"]   }] }

service-worker.js

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {  function insertScript() {     var s = document.createElement('script');     s.src = chrome.runtime.getURL('pageScript.js');     s.onload = function() { this.remove(); };     (document.head || document.documentElement).appendChild(s); }    chrome.webNavigation.onCompleted.addListener((tab) => {     chrome.scripting.executeScript(       {         target: { tabId: tabId },         func : insertScript       });   });  });

pageScript.js

function customHTML() {    for (i = 0; i < googletag.pubads().getSlots().length; i++) {         var slotDomId = googletag.pubads().getSlots()[i].getSlotElementId();         document.getElementById(slotDomId).innerHTML = '<h1>yourcustomInnerHTML</h1>';       }     }   //add GPT Eventlisteners to detect refresh & lazyloaded ads  googletag.pubads().addEventListener("slotOnload", (event) => {       const slot = event.slot;       customHTML();     });

代码解释:

  • manifest.json: 定义了扩展程序的元数据,包括名称、版本、权限等。permissions 字段声明了扩展程序需要的权限,例如 activeTab、webNavigation 和 scripting。host_permissions 字段指定了扩展程序可以访问的域名。web_accessible_resources 字段允许网页访问扩展程序中的资源,例如 pageScript.js。
  • service-worker.js: 是一个后台脚本,用于监听网页的加载事件。chrome.tabs.onUpdated.addListener 监听标签页的更新事件,并在网页加载完成后执行 insertScript 函数。insertScript 函数创建一个 <script> 元素,并将 pageScript.js 的 URL 设置为 src 属性,然后将该元素添加到网页的 <head> 或 <html> 元素中。</script>
  • pageScript.js: 包含了实际的广告替换代码。customHTML 函数实现了替换广告位的逻辑。googletag.pubads().addEventListener(“slotOnload”, (event) => { … }); 添加 GPT 事件监听器来检测刷新和懒加载的广告,确保在广告加载后执行 customHTML 函数。

使用方法:

  1. 将上述代码保存到不同的文件中,确保文件名与代码中的引用一致。
  2. 在 Chrome 浏览器中打开 chrome://extensions/。
  3. 启用 “开发者模式”。
  4. 点击 “加载已解压的扩展程序”,选择包含上述文件的文件夹。

现在,当您访问包含 Google 广告的网页时,扩展程序会自动将广告替换为您自定义的内容。

总结:

通过上述方法,您可以有效地定位并替换网页中的 Google 广告。根据网站使用的广告服务(Google Ad Manager 或 Adsense),选择合适的方法来定位广告位。通过 Chrome 扩展程序,您可以将这些方法集成到浏览器中,实现自动化的广告替换功能。请务必注意,修改他人网站的内容可能涉及法律和道德问题,请谨慎使用。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享