使用 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 <p>這段代碼遍歷所有通過googletag.pubads().getSlots() 獲取到的廣告位,然後使用getSlotElementId() 獲取廣告位的DOM ID,最後通過document.getElementById() 找到對應的DOM 元素,並替換其innerHTML。</p><p><strong>注意事項:</strong></p>
- 此方法僅適用於使用Google Publisher Tag (GPT) 的網站。
- 確保在googletag 對象可用後執行此代碼,通常需要在DOM 加載完成後執行。
替換Adsense 廣告
如果網站使用Adsense 投放廣告,可以使用不同的方法來定位廣告位。通常,Adsense 廣告會被包裹在一個ins.adsbygoogle 元素中。
var adsenseBlocks = document.querySelectorAll('ins.adsbygoogle'); for (i = 0; i <p>這段代碼首先使用document.querySelectorAll('ins.adsbygoogle') 找到所有Adsense 廣告的ins 元素,然後獲取其父元素的ID,最後通過document.querySelector() 找到對應的DOM 元素,並替換其innerHTML。</p><p><strong>注意事項:</strong></p>
- 此方法假設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>"] }] }</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 yourcustomInnerHTML'; } } //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 函數。
使用方法:
- 將上述代碼保存到不同的文件中,確保文件名與代碼中的引用一致。
- 在Chrome 瀏覽器中打開chrome://extensions/。
- 啟用"開發者模式"。
- 點擊"加載已解壓的擴展程序",選擇包含上述文件的文件夾。
現在,當您訪問包含Google 廣告的網頁時,擴展程序會自動將廣告替換為您自定義的內容。
總結:
通過上述方法,您可以有效地定位並替換網頁中的Google 廣告。根據網站使用的廣告服務(Google Ad Manager 或Adsense),選擇合適的方法來定位廣告位。通過Chrome 擴展程序,您可以將這些方法集成到瀏覽器中,實現自動化的廣告替換功能。請務必注意,修改他人網站的內容可能涉及法律和道德問題,請謹慎使用。
以上是使用 Chrome 擴展替換 Google Ads的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

TypeScript的高級條件類型通過TextendsU?X:Y語法實現類型間的邏輯判斷,其核心能力體現在分佈式條件類型、infer類型推斷和復雜類型工具的構建。 1.條件類型在裸類型參數上具有分佈性,能自動對聯合類型拆分處理,如ToArray得到string[]|number[]。 2.利用分佈性可構建過濾與提取工具:Exclude通過TextendsU?never:T排除類型,Extract通過TextendsU?T:never提取共性,NonNullable過濾null/undefined。 3

Microfrontendssolvescalingchallengesinlargeteamsbyenablingindependentdevelopmentanddeployment.1)Chooseanintegrationstrategy:useModuleFederationinWebpack5forruntimeloadingandtrueindependence,build-timeintegrationforsimplesetups,oriframes/webcomponents

要獲取JavaScript數組的長度,可以使用內置的length屬性。 1.使用.length屬性可返回數組中元素的數量,例如constfruits=['apple','banana','orange'];console.log(fruits.length);//輸出:3;2.該屬性適用於包含字符串、數字、對像或數組等任何類型數據的數組;3.length屬性會自動更新,當添加或刪除元素時其值隨之變化;4.它返回基於零的計數,空數組的length為0;5.可手動修改length屬性來截斷或擴展數組,

varisfunction-scoped,canbereassigned,hoistedwithundefined,andattachedtotheglobalwindowobject;2.letandconstareblock-scoped,withletallowingreassignmentandconstnotallowingit,thoughconstobjectscanhavemutableproperties;3.letandconstarehoistedbutnotinitial

Proxy和ReflectAPI是JavaScript中用於攔截和自定義對像操作的強大工具;1.Proxy通過包裝目標對象並定義“陷阱”來攔截如get、set等操作,實現如日誌、驗證、只讀控制等功能;2.Reflect提供與Proxy陷阱對應的方法,確保默認行為的一致性和正確性,提升代碼可維護性;3.實際應用包括Vue3響應式系統、數據驗證、調試日誌、不可變對象和API模擬;4.使用時需注意性能開銷、內置對象的複雜行為、this綁定問題及嵌套對象需遞歸代理;5.合理使用可構建高效、可調試、反應式

本文深入探討瞭如何為“雙巧克力”(Double-Choco)謎題遊戲自動生成可解謎題。我們將介紹一種高效的數據結構——基於2D網格的單元格對象,該對象包含邊界信息、顏色和狀態。在此基礎上,我們將詳細闡述一種遞歸的塊識別算法(類似於深度優先搜索),以及如何將其整合到迭代式謎題生成流程中,以確保生成的謎題滿足遊戲規則,並具備可解性。文章將提供示例代碼,並討論生成過程中的關鍵考量與優化策略。

可選的(?。)InjavascriptsafelyAcccessesnestedPropertiesByRoturningUndUndEfendEfinefinefinefineFanifThainisNullOrundEffined,deskingruntimeErrors.1.itallowssafealowssafeccesstodeeplynestedobjectedobjectproperties

使用JavaScript從DOM元素中刪除CSS類最常用且推薦的方法是通過classList屬性的remove()方法。 1.使用element.classList.remove('className')可安全刪除單個或多個類,即使類不存在也不會報錯;2.替代方法是直接操作className屬性並通過字符串替換移除類,但易因正則匹配不准確或空格處理不當引發問題,因此不推薦;3.可通過element.classList.contains()先判斷類是否存在再刪除,但通常非必需;4.classList
