「我想要製作一個擴充功能來自訂搜尋結果……」雖然我早就有這樣的想法,但我並沒有那麼高的技術能力。
不過最近,我突然想到「如果使用AI,這不是很簡單嗎?」
這次,我將介紹我實際使用AI製作「從Google搜尋結果中阻擋贊助廣告/特定網域的擴充功能」的步驟。
製作時間大約需要20到30分鐘。雖然我無法將程式碼直接貼在文章中,但我認為只要有心,任何人都可以做到,真心建議大家試試。
首先,我們簡單決定想要的功能。
這次的目標有以下兩個。
簡單來說,就是一個不讓廣告或惱人的網站出現的Chrome擴充功能。
最近AI生成的內容空洞的文章很多,因此這對於阻擋這類量產型文章的網站非常有用。
Chrome擴充功能最基本需要以下檔案。
manifest.json
content.js
domains.json
(定義想要阻擋的網域)當我把想做的事用隨便的提示告訴ChatGPT時,它自動生成了所需的檔案結構和代碼。
當然,一次就成功是不太可能的,所以這篇文章會介紹幾次生成結果中的部分程式碼。
整體程式碼加起來也不到100行,非常簡潔。
manifest.json
{
"manifest_version": 3,
"name": "Google Search Cleaner",
"version": "1.0",
"description": "從Google搜尋結果中隱藏特定網域和廣告",
"permissions": [
"activeTab",
"scripting"
],
"content_scripts": [
{
"matches": [
"https://www.google.com/*"
],
"js": ["content.js"],
"run_at": "document_start"
}
]
}
在manifest中,matches部分設定了攔截的範圍。這次由於是想從搜尋結果中排除,所以設定為「https://www.google.com/*
」。
如果把這設定成yahoo的話,可能在yahoo也能阻擋。我不使用也就沒有這樣做。
我選擇不直接在程式碼中寫入要阻擋的網域,而是將其整理在外部的domains.json
中進行管理。
這樣的格式,只需要更改設定檔,即可輕鬆更改阻擋對象。
domains.json
{
"blockedDomains": [
"example.com",
"spam-site.com",
"test-site.net"
]
}
當進行搜尋時,最上面顯示的通常是標註為「贊助商」的廣告。
大約一年前,這裡甚至會出現詐騙網站,混亂不堪,不過最近都改善了不少,看起來整體變得好很多。
那麼,我們直接開始阻擋吧。按下F12查看類別或ID等信息,可以發現贊助廣告的ID為「#taw
」。
對於這個#taw,我們可以使用CSS設定「display:none !important
」,使其即使再顯示回來也不會被覆蓋。
處理流程如下。
這樣的處理由ChatGPT創建。
順便說一下,這裡使用的是ChatGPT-5 mini版本。
最初,我指定Google搜尋結果的類別(.yhQgZb等),並設定如果目標網域存在於該類別內便隱藏,但這個類別是根據頁面自動生成的,因此當我們移動頁面時,封鎖就失效了。
因此最終我決定不使用類別,而是解析搜尋結果區塊中的連結,若包含特定網域則隱藏其父元素。
處理流程如下。
這樣,即使Google的HTML結構稍作變動,也能穩定運作。這個流程也是ChatGPT幫我想的,真的是非常優秀。
雖然我想介紹最終完成的JavaScript,但這樣與正常分發擴充功能並無二致,因此我將不貼出實際程式碼。
(根據規定,若要分發給不特定的人,必須通過Chrome Web Store發佈)
簡單概括處理內容如下。
讀取設定檔
domains.json
並獲取要阻擋的網域清單。隱藏#taw(廣告區域)
#taw
元素隱藏,使用display:none !important
。MutationObserver
監控頁面內的DOM變化,即使用#taw動態生成也能自動隱藏。阻擋特定網域的搜尋結果
display:none !important
隱藏該連結所在的搜尋結果區塊(div[jscontroller]
、div[data-hveid]
、div.g
等)。MutationObserver
來監控動態新增的搜尋結果並套用阻擋。錯誤處理
將創建的檔案整理到一個資料夾中,然後打開Chrome的擴充功能管理頁面(chrome://extensions/
)。
在右上角打開「開發者模式」,然後通過「載入未封裝的擴充功能」來指定資料夾,就可以使用擴充功能了。
首先從正常的搜尋結果開始。在搜尋「iphone」時,可以看到贊助廣告中出現了Apple的官方網站。
啟用擴充功能後,可以看到如下的情況已經消失了。
接下來,我們來看看網域阻擋功能。
這次同樣先查看正常的搜尋結果,我搜尋「rtx5090」。
稍微向下捲就看到了NVIDIA的官方網站。對NVIDIA沒有特別的仇恨,不過我們來試著阻擋一下。
我將「www.nvidia.com
」加入到domains.json中,再次上傳擴充功能。然後重新載入搜尋結果頁面後,
可以看到,的確可以根據網域進行阻擋。這樣,我們就能自由地阻擋大量用AI生成文章的媒體和詐騙網站了!
從此次經驗中我了解到,Chrome擴充功能不需要完全從零開始自己編寫,只要運用AI就幾乎可以透過對話來完成。
當然,這肯定會受到難度的影響,但在像這次這樣,只想將日常的小想法具體化時,實在是非常方便。
原文出處:https://qiita.com/nolanlover0527/items/32d8f4c1b3064eff5ecd