題 Google Chrome會自動將網站添加到我的搜索引擎列表中嗎?


我注意到某些網站(例如Stack Exchange網站,戴爾等)會自動添加到我的Google Chrome瀏覽器列表中。

他們甚至為他們的條目添加了鍵盤快捷鍵。這裡有些例子:

  • 戴爾:鍵盤 - > Dell.com
  • Stack Exchange Web主機:鍵盤 - > webmasters.stackexchange.com
  • 路透社:鍵盤 - > reuters.com

Q1: 這是Chrome中的默認行為嗎? (讓網站將自己添加到搜索引擎列表中?)

Q2: 是否可以在Chrome中禁用此行為?

注意:我在Windows 7 64上運行最新版本的Chrome:11.0.696.57,我只安裝了一個擴展程序:Google URL shortener。


105
2018-04-27 15:44


起源


@Sathya,為什麼?我希望能夠靈活地禁用它。如果你的問題是 為什麼我會禁用這樣的東西:編輯搜索引擎的界面不是特別好,隨著列表的增長,很難說我手動添加了哪些搜索引擎,哪些搜索引擎是自動添加的。在大型列表中找到特定條目也更加困難。 - Amelio Vazquez-Reina
@Sathya - 很多原因:*便利性:有時你想搜索一個網站,而不是那個網站。 *一致性:隨機且無聲地添加新的“搜索引擎”會導致多功能框中出現意外行為。 *隱私:Chrome在決定添加新的“搜索引擎”時不會通知您,並且在您清除瀏覽歷史記錄時它們不會消失。 *常見的禮貌:我不應該選擇是否啟用此“功能”,或者 - 失敗 - 至少選擇在Chrome決定添加網站時通知我,這樣我可以反擊這個決定? - phenry


答案:


感謝@ 10basetom的代碼並受到@shthed的啟發,我已經發布了 不要添加自定義搜索引擎 Chrome擴展程序就是這樣做的。

你會找到源代碼 這裡

讓我知道你的想法!


28
2017-07-12 14:08



@ O'Rooney謝謝!我看到一些網站不時會延伸到延伸部分,但是在一個月內清理一些搜索引擎要比幾乎完整的每週“清除”更好......乾杯! - Greg Sadetsky
實際上不再起作用了:許多自定義搜索引擎最終仍然被添加。 - onnodb
@onnodb感謝您的說明,遺憾的是我沒有足夠的時間來更新擴展程序。 - Greg Sadetsky
@onnodb,格雷格,請你(或其他任何感興趣的人)試試 這個叉子?退房,然後加載 .../src 作為解壓縮的擴展。讓我知道事情的後續。謝謝! - cxw
小小的注意,由於許多貢獻者的許多努力,擴展剛剛使用大大改進的檢測/阻塞算法進行了更新!如果它早些時候不適合你,請等一下。乾杯 - Greg Sadetsky


這讓我非常瘋狂,所以我找到了一個解決這個問題的黑客但有效的解決方案。

Chrome將其搜索引擎存儲在一個簡單的sqlite3數據庫中。我發現當chrome去添加導致數據庫插入語句被忽略的搜索引擎時,你可以創建一個觸發器。
請注意,搜索引擎仍保留在內存中,因此 它們仍將顯示在列表中,直到瀏覽器重新啟動。然而,您不必一直清除它們,因此如果您想添加自己的搜索引擎,您將不必擔心意外刪除它們(是的,手動添加搜索引擎仍然可以工作)。

首先你必須找到 Web data 文件。

  • Mac OS X: ~/Library/Application Support/Google/Chrome/Default/Web Data

  • XP: C:\Documents and Settings\<username>\Local Settings\Application Data\Google\Chrome\User Data\Default\Web Data

  • Vista / 7的: C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\Web Data

  • Linux的: ~/.config/google-chrome/Default/Web Data 要么 ~/.config/chromium/Default/Web Data

然後用sqlite3編輯器打開它。

此時必須關閉Chrome。

官方的sqlite網站有一個 下載頁面 使用針對各種操作系統的預編譯命令行實用程序。雖然任何能夠使用sqlite3數據庫的編輯器都可以使用。

對於命令行實用程序,請使用如下命令(不要忘記轉義或引用文件名中的空格):

sqlite3 /path/to/Web\ Data

添加觸發器。

在插入關鍵字之前創建觸發no_auto_keywords WHEN(NEW.originating_url IS NOT NULL AND NEW.originating_url!='')BEGIN SELECT RAISE(IGNORE);結束;

你完成了。關閉編輯器並啟動chrome備份。


它的工作方式是當chrome去添加自動添加搜索引擎時 keywords 表,鉻設置 originating_url 它來自網站的字段。觸發器基本上查找任何非空的插入 originating_url 領域,並發布一個 RAISE(IGNORE) 這導致語句被靜默跳過。
手動添加的搜索引擎沒有 originating_url,因此觸發器允許添加它們。


60
2017-12-14 06:00



在嘗試了幾個編輯後, SQLiteStudio 我的最愛。我無法與此產品相關。只是我搜索後找到的一個有用的工具。 - mateuscb
這很棒,而且很有效。但是,對我來說,Chrome仍然添加搜索引擎,而不是在數據庫中,而是在另一個文件夾“Sync Data Backup”中。在Windows / Linux中禁用該文件夾的寫入權限,它將永久消失。 - Martin Hansen
這似乎不再起作用了,至少在Chrome v47beta中是這樣。重新啟動Chrome後,自動添加的搜索引擎仍在列表中,但鍵入關鍵字不再觸發它。 - thdoan
僅供參考:1 /首先製作此文件的副本以防萬一它崩潰:) 2 / Mac 10.11.4(El Capitan)我無法用sqlitebrowser.app打開文件/數據庫("Error: unable to open database "~/Library/Application Support/Google/Chrome/Default/Web Data": unable to open database file)。 3 /如果你試著運行 CREATE TRIGGER 當Chrome打開時你會得到命令 Error: database is locked 所以先退出Chrome。 4 / Chrome關閉後,打開數據庫成功運行: /Volumes/Macintosh\ HD/Applications/sqlite3 ./Web\ Data (在 Terminal,當在指定目錄中)HTH - sming
我嘗試從id> 2的關鍵字中刪除;和谷歌只是從服務器同步它們。我想已經安裝了數千個searchengines已經太晚了。 - Qi Fan


有兩種方法可以做到這一點:

  1. 添加此用戶腳本 篡改猴子

    var elOpenSearch = document.querySelector('[type="application/opensearchdescription+xml"]');
    if (elOpenSearch) elOpenSearch.remove();
    
  2. 如果您不是常規的Tamper Monkey用戶並且不想浪費15-20 MB的RAM來加載Tamper Monkey擴展用於此目的,那麼您可以滾動自己的超輕量級擴展,不會消耗任何內存。說明如下。

如何創建自己的擴展以刪除OpenSearch <link> 標記並阻止Chrome自動添加搜索引擎:

  1. 創建一個文件夾,放置擴展文件。

  2. 在此文件夾中,創建兩個名為的文本文件 manifest.json 和 content.js 包含下面提供的代碼。

    的manifest.json

    {
      "manifest_version": 2,
      "name": "Disable OpenSearch",
      "version": "1.0.0",
      "description": "Remove the OpenSearch <link> tag to prevent Google Chrome from auto-adding custom search engines.",
      "content_scripts": [
        {
          "matches": ["<all_urls>"],
          "js": ["content.js"]
        }
      ],
      "permissions": [
        "http://*/*",
        "https://*/*"
      ]
    }
    

    content.js

    var elOpenSearch = document.querySelector('[type="application/opensearchdescription+xml"]');
    if (elOpenSearch) elOpenSearch.remove();
    
  3. 在Chrome中,轉到 chrome://extensions/ (將其輸入URL欄)。

  4. 啟用開發者模式。

  5. 單擊“加載解壓縮的擴展名”,選擇您在步驟1中創建的文件夾,然後單擊“確定”。

恭喜!現在谷歌Chrome應該不那麼煩人了:-)。

局限性: 該解決方案不是100%可靠。如果您轉到包含搜索參數的網址(例如, https://cdnjs.com/#q=fastclick),在極少數情況下,仍會添加自定義搜索引擎。我懷疑這是因為Chrome可以解析OpenSearch <link> 用戶腳本或擴展程序之前的標記有機會從DOM中刪除它。


29
2017-11-06 06:10



我很驚訝沒有人發布這個作為商店的官方擴展,似乎它會很受歡迎。理想情況下,我想在添加搜索引擎之前詢問我的擴展程序,或者在地址欄中添加一個圖標,讓我添加它,就像RSS源一樣。 - ryanmonk
感謝偉大的代碼和@shthed感謝您的靈感!我剛剛發布了谷歌Chrome擴展程序。 你可以在這裡找到它。源代碼 這裡。讓我知道你的想法! :-) - Greg Sadetsky
@GregSadetsky發布此作為答案,我們可以投票給它:) - O'Rooney
@ O'Rooney謝謝,剛做了:-) - Greg Sadetsky


  1. 是的,這是設計的
  2. 沒有, 有 沒有 通往 禁用 這個。

22
2018-04-27 16:30



我喜歡這個答案。這很簡單但信息量很大 - nXqd
然而,有其他方法可以禁用它,其他答案解釋:) - Enrico
“是的,這是設計的。”在沒有用戶輸入的情況下自動添加內容到系統是一種糟糕且不合適的設計。惡意網站可以輕鬆利用這一點。 “不,沒有辦法禁用它。”顯然,當它是軟件時,總有一種方法。懶惰,說沒有,不是解決方案。這個答案應該被刪除,作者警告說。 - Alex Summers


這裡有一個有點hacky的解決方案,對我來說很好。只需將搜索別名重命名為類似神秘的內容 “§$%!/()/”。雖然搜索引擎仍在那裡,但你永遠不會再看到它。如果你不能谷歌為“詹金斯”因為鉻迫使你在詹金斯搜索,這很煩人。


9
2018-05-09 13:49



說真的 - 瘋狂煩人。謝謝你的提示。 - TJ Biddle
這對我來說是這樣的 jenkins, jira,和 confluence  - 它讓我絕對瘋狂,因為我無法從我的地址欄中搜索與這三者相關的任何內容。這是迄今為止我見過的最好和唯一的工作方法。乾杯。 - Matt Clark
@MattClark jira 究竟!我想搜索jira,而不是它! - ErikE
你的情況如何表現?對我來說,觸發搜索 現場,我必須在omnibar中鍵入其關鍵字a 按 標籤。然後它變成了 在網站搜索 我可以繼續輸入搜索字符串。如果我只想搜索關鍵字或包含關鍵字的字符串,我輸入關鍵字, 空間,其餘的搜索字符串和 輸入 我正在使用默認搜索引擎進行搜索。所以它不會相互干擾。只需使用 空間 在關鍵字搜索後使用默認搜索引擎和 標籤 在網站上搜索。 - Dawid Ferenczy
@DawidFerenczy:這不是我們其他人的工作方式。空間仍然使用該搜索引擎。我輸入 git,然後一個空格,它立即改變使用git的搜索引擎(我已經刪除了無數次)。 - Gerrat


嘗試使用這個簡單的用戶腳本:

// ==UserScript==
// @name       Block Opensearch XML specs
// @namespace  *
// @version    0.3
// @description  Block opensearch xml links
// @match      *
// @copyright  2012+, Christian Huang
// ==/UserScript==

var i;
var val;
var len;
var opensearches;

opensearches = document.getElementsByTagName('link');
len = opensearches.length;
for (i = 0; i < len;i++) {
    val = opensearches[i].type;
    if ( val == "application/opensearchdescription+xml") {
        opensearches[i].parentNode.removeChild(opensearches[i]);
    }
}

9
2017-09-21 21:41



在哪裡添加此腳本?還是執行它? - mateuscb
@mateuscb你可以從中得到它 這裡。然後將該腳本放在chrome,chrome:// extensions /的擴展程序設置頁面中。 - Victor Häggqvist
這個。是。真棒。我需要創建一個假人 manifest.json (按照 這個答案 並通過開發模式安裝它(作為一個解壓擴展),但除此之外它就像一個款待。 - womble
或者,您可以在Tamper Monkey中使用它。如果您習慣於對網站進行修改,那麼TM應該是必備插件。 - JasonXA
你也可以使用這個單行: document.querySelector('[type="application/opensearchdescription+xml"]').remove(); (見下面的答案)。 - thdoan


要快速刪除大量搜索引擎,請瀏覽到chrome:// settings / searchEngines,按Ctrl-Shift-J(OSX上的Opt-Cmd-J)進入Javascript控制台,然後粘貼:

settings
    .SearchEnginesBrowserProxyImpl
    .prototype
    .getSearchEnginesList()
    .then(function (val) {
        val.others.sort(function (a, b) { return b.modelIndex - a.modelIndex; });
        val.others.forEach(function (engine) {
            settings
                .SearchEnginesBrowserProxyImpl
                .prototype
                .removeSearchEngine(engine.modelIndex);
        });
    });

您可能需要粘貼並運行幾次以清除所有內容。


8
2018-06-15 13:28



我不得不將這個大約10次復制/粘貼到開發控制台中,以刪除我所擁有的100多個條目。希望我知道如何將其變成單擊書籤。 - jiggunjer
我修改它以反向排序列表(基於modelIndex),因為每次條目被刪除時它的值都會被重置(所以你通常最終只刪除當前列表的一半左右)從上到下工作。從下到上工作時,不會發生此問題。 - alcohol
我看到的第一個可以一次完成!榮譽。 - bnieland
在我的Windows 10版本1709安裝Chrome版本64.0.3282.186(官方版本)(64位)上進行了一次運行。 - JosephHarriott


如果我理解你正確描述的是什麼,那麼這不是網站做任何事情。相反,Chrome本身會識別網站上的搜索框,然後將其添加到omnibar中的搜索選項列表中。

A1:是的,這是默認行為,但不是網站自我添加,而是Chrome添加網站。

A2:我不相信你可以禁用這種行為,但你可以通過進入工具菜單 - >選項 - >管理搜索引擎來刪除搜索引擎;它們將出現在“其他搜索引擎”下。您可能能夠指定在刪除它時不應該重新添加它,我不確定 - 我碰巧喜歡這個功能,所以我不打算嘗試刪除它們。


7
2018-04-27 16:30



謝謝@Kromey,這是一個很好的觀點。我剛剛更新了問題以反映您的評論。 - Amelio Vazquez-Reina
這個答案是不正確的,網站有效地將自己添加到Chrome,因為他們使用所謂的 OpenSearch描述文檔 使Chrome能夠將其網站的搜索引擎添加到Chrome瀏覽器可以與之交互的搜索引擎列表中。 - Marcel
@Marcel OpenSearch只允許網站 描述他們的搜索功能。它仍然需要瀏覽器採取行動。因此,這不是不正確的,我只是沒有在我的回答中包含用於“... [識別]網站上的搜索框......”的技術規範,因為我認為這會使一個簡單的事情複雜化 - 瀏覽器如何找到搜索框的確切機制與普通用戶無關,只與希望添加搜索框的網站管理員無關。 - Kromey


我發現的一個解決方法是養成用空格開始所有搜索的習慣。如果你輸入 ・Splunk median(哪裡  表示空間字符),Chrome將執行Google搜索 Splunk median


7
2018-05-04 14:18



使用問號(?)開始搜索也將使用您的默認搜索引擎。 - Ari
太好了!我比空間更喜歡這個。 - Jun-Dai Bates-Kobashigawa
對我來說它不起作用。在Chrome 39,Win 7上,輸入spacekeyword沒有顯示搜索界面。但是,在命名方面,您的解決方案在其他地方很有用。如果我希望我定義的搜索顯示在自動搜索的頂部,名稱和presto前面有一個空格。所有自動搜索引擎都在下面,現在管理/刪除它們更容易。 - JasonXA
只需按ctrl + k即可獲得該行為。 - jiggunjer


< - 背景 - >

我在這裡有一個替代的,不那麼干擾的想法(至少如果你正在運行一個廣告攔截器,因為我們很多人都是為了我們自己的理智/安全)。我喜歡盡可能地使用現有的擴展/腳本來避免僅僅一個功能(最壞情況)的整個擴展的膨脹,因此該解決方案在此原則下工作。

Adblock及其變體/後繼者(uBlock是我的首選武器),能夠阻止網頁元素,包括 <link> 元素,用於自動發現OpenSearch描述(OSD),這些XML文件包含允許自動添加搜索引擎並導致我們頭痛的信息。我說“許可證”,因為它幾乎不是強制性的,因為,就我的研究表明,Firefox只是讀取這些信息並使其可以在搜索引擎下拉框中輕鬆添加,而不是像Chrome那樣安靜地自動添加。

在多個地方的Opensearch規範中描述了該功能的使用:

http://www.opensearch.org/Specifications/OpenSearch/1.1#Autodiscovery_in_RSS.2FAtom  (為了我們的目的,忽略本節的特定小節,因為它只是一個使用它的例子)


< - 解決方案 - >

由於它聲明OpenSearch Descriptions(OSD)具有唯一類型,我們可以使用以下AdblockPlus / uBlock規則對其進行過濾:

##link[type="application/opensearchdescription+xml"]

我測試了這個,規則顯示我的測試網站(filehippo.com等)上的正確匹配,搜索引擎不再自動添加,所以我相信這是一個完整的解決方案。


關於我在這背後發現的歷史的快速說明:Chromium的工程師多年來多次標記這個“WontFix”(多次請求高級用戶禁用選項/標誌),聲稱這被認為是一個利基問題,因為功能“通常很有用”,他們的立場是,利基問題應該通過擴展或第三方腳本解決,而不是開發人員添加無數的標誌等來滿足所有的想法,所以基本上我們在這裡做的只是符合他們的偏好並保持良好和易於管理。

祝你好運!如果其他人嘗試這個讓我們/我知道它是如何工作的!


6
2017-09-20 23:13



這對我不起作用(嘗試搜索 cdnjs.com)。我得出結論,沒有100%可靠的解決方案:( - thdoan
這對我來說也不起作用 - 如果我搜索的話 4inkjets.com 它被添加為搜索引擎(奇怪的是,我找不到一個 application/opensearchdescription+xml 頁面上的鏈接。) - Ivan Kozik