Google Chromeは、検索エンジンのリストにWebサイトを自動的に追加しますか?


121

特定のWebサイト(Stack Exchangeサイト、Dellなど)が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 Shorterという拡張機能が1つしかインストールされていません。


33
@サティア、なぜ?無効にする柔軟性が必要です。あなたの質問がこのようなものを無効にする理由である場合:検索エンジンを編集するためのインターフェースは特に良くありません、そしてリストが大きくなるにつれて、手動で追加した検索エンジンと自動で追加された検索エンジンがわかりにくくなります。また、大きなリスト内で特定のエントリを見つけることも困難です。
アメリオバスケスレイナ

16
@Sathya-多くの理由:*利便性:サイト上ではなくサイトについて検索したい場合があります。*一貫性:新しい「検索エンジン」をランダムかつ静かに追加すると、アドレスバーで予期しない動作が発生します。*プライバシー:Chromeは、新しい「検索エンジン」を追加することを決定したときにユーザーに通知せず、閲覧履歴を消去しても消えません。*一般的な礼儀:この「機能」を有効にするか、それとも失敗した場合に少なくともChromeがサイトの追加を決定したときに通知を受け取るように選択できないので、この決定を打ち消すことができますか?
フェリー

1
私のブラウザが認識すべき検索エンジンを自分で決める価値はないようです。
アンデルスリンデン

回答:


34

@ 10basetomのコードと@shthedに触発されたおかげで、まさにそれを行うカスタム検索エンジン Chrome拡張機能を追加しないでくださいをリリースしました。

ソースコードはこちらにあります

どう考えているか教えてください!


1
@ O'Rooneyありがとう!いくつかのサイトは時々拡張機能をすり抜けますが、ほぼ完全な毎週の「パージ」を行うよりも、1か月でいくつかの検索エンジンを一掃する方がはるかに優れています。
グレッグサデツキー16

4
実際にはもう機能しません。多くのカスタム検索エンジンがまだ追加されています。
onnodb

1
@onnodbはメモをありがとう、残念ながら拡張機能を更新するのに十分な時間がありませんでした。
グレッグサデツキー

1
@ onnodb、Greg、このフォークを試してみてください(または他の興味のある人)。チェックアウトしてから、.../src解凍された拡張機能としてロードします。それがどうなるか教えてください。ありがとう!
cxw

3
多くの貢献者からの多くの努力のおかげで、拡張機能が大幅に改善された検出/ブロックアルゴリズムで更新されたという小さな注意!以前にうまく機能していなかった場合は、前にそれを与えてください。乾杯
グレッグサデツキー

61

これは私を絶対に狂気にさせていたので、問題に対するハック的で効果的な解決策を見つけました。

Chromeは、検索エンジンを単純なsqlite3データベースに保存します。クロムがデータベース挿入ステートメントを無視させる検索エンジンを追加するときにトリガーを作成できることがわかりました。
検索エンジンはまだメモリに保持されているため、ブラウザが再起動されるまでリストに表示されます。ただし、常にクリアする必要はないため、独自の検索エンジンを追加する場合は、誤って削除することを心配する必要はありません(はい、検索エンジンを手動で追加しても機能します)。

まず、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 Webサイトには、さまざまなオペレーティングシステム用のコマンドラインユーティリティがプリコンパイルされたダウンロードページがあります。ただし、sqlite3データベースを操作できるエディターは機能します。

コマンドラインユーティリティの場合、次のようなコマンドを使用します(ファイル名のスペースをエスケープまたは引用符で囲むことを忘れないでください)。

sqlite3 /path/to/Web\ Data

トリガーを追加します。

CREATE TRIGGER no_auto_keywords BEFORE INSERT ONキーワードWHEN(NEW.originating_urlはNULLではなく、NEW.originating_url!= '')BEGIN SELECT RAISE(IGNORE); 終わり;

できました。エディターを閉じて、クロムのバックアップを開始します。


動作方法は、chromeがkeywordsテーブルに検索エンジンを自動的に追加するときに、chromeは元originating_urlのWebサイトにフィールドを設定することです。トリガーは基本的に、空でないoriginating_urlフィールドを持つ挿入を探しRAISE(IGNORE)、ステートメントをサイレントにスキップするを発行します。
手動で追加された検索エンジンにはがないoriginating_urlため、トリガーを使用して追加できます。


2
いくつかのエディターを試した後、SQLiteStudioが私のお気に入りです。私はこの製品とはまったく関係ありません。いくつかの検索後に見つけた便利なツールです。
mateuscb

1
これは素晴らしく、機能します。ただし、私にとっては、Chromeはデータベースではなく別のフォルダー「同期データバックアップ」に検索エンジンを追加しました。Windows / Linuxでそのフォルダの書き込み権限を無効にすると、永久に失われます。
マーティンハンセン

少なくとも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 TRIGGERChromeが開いているときにコマンドを実行しようとすると、Error: database is locked最初にChromeを終了します。クローム一度/が閉鎖された4は、これはデータベースが正常に働いていた開かれた:/Volumes/Macintosh\ HD/Applications/sqlite3 ./Web\ Data(でTerminal、ときに指定したディレクトリにある)HTH
sming

id> 2のキーワードから削除しようとしました。Googleはサーバーからそれらを同期します。すでに何千もの検索エンジンをインストールした後、手遅れだと思います。
チーファン

34

これを行うには2つの方法があります。

  1. このユーザースクリプトをTamper Monkeyに追加します。

    var elOpenSearch = document.querySelector('[type="application/opensearchdescription+xml"]');
    if (elOpenSearch) elOpenSearch.remove();
  2. 通常のTamper Monkeyユーザーではなく、この目的でTamper Monkey拡張機能をロードするために15〜20 MBのRAMを無駄にしたくない場合は、メモリを消費しない独自の超軽量拡張機能を使用できます。 。手順を以下に示します。

独自の拡張機能を作成してOpenSearch <link>タグを削除し、Chromeが検索エンジンを自動追加しないようにする方法:

  1. 拡張ファイルを配置するフォルダーを作成します。

  2. このフォルダー内に、以下に示すコードmanifest.jsoncontent.js含む2つのテキストファイルを作成します。

    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で作成したフォルダーを選択して、「OK」をクリックします。

おめでとうございます!これで、Google Chromeの使用が少し面倒になるはずです:-)。

制限:このソリューションは100%信頼できるものではありません。検索パラメーターを含むURL(例:https://cdnjs.com/#q=fastclick)にアクセスすると、まれにカスタム検索エンジンが追加されます。これは<link>、ユーザースクリプトまたは拡張機能がDOMからタグを削除する前にChromeがOpenSearch タグを解析できるためだと思われます。


2
誰もこれを公式の拡張としてストアに投稿していないことに驚いています、それは人気があるようです。理想的には、検索エンジンを追加する前に拡張機能を要求するか、アドレスバーにRSSフィードのように追加できるアイコンを追加するようにします。
ライアンモンク

7
すばらしいコードと@shthedのインスピレーションに感謝します!それを行うGoogle Chrome拡張機能をリリースしました。ここで見つけることができます。ソースコードはこちら。どう考えているか教えてください!:-)
グレッグサデツキー

@GregSadetskyこれを回答として投稿してください。投票できます:)
オルーニー

24
  1. はい、これは仕様によるものです
  2. ノー、ありません何のための方法を無効にこれを。

2
私はこの答えが大好きです。これは簡単ですが有益です
-nXqd

8
しかし、他の答えが説明するように、それを無効にする方法があります:)
エンリコ

6
「はい、これは仕様によるものです。」ユーザーが問題について入力することなく、システムに自動的に物事を追加するのは、貧弱で不適切な設計です。悪意のあるWebサイトはこれを簡単に利用できます。「いいえ、これを無効にする方法はありません。」明らかに、それがソフトウェアである場合、常に方法があります。怠zyであり、そうではないと言うことは解決策ではありません。この回答は削除する必要があり、ライターは警告しました。
アレックスサマーズ

キャッシュをクリアすると、カスタム検索エンジンが失われました。いくつかのサイトを何時間もオープンしましたが、これらのエンジンは戻りませんでした。それらを取り戻す方法を知っていますか?(手動で追加したくない、多すぎます)
ミスリル

この間違った答えは支持されます。削除したり、修正するために編集してはいけませんか?
サントロペドロ

10

ここでややハックな回避策は私にとってはうまく機能します。検索エイリアスの名前を"§$%!/()&/"のような不可解な名前に変更するだけです。検索エンジンがまだ存在している間は、再び表示されることはありません。「ジェンキンス」をグーグルで検索できない場合、クロムはジェンキンスで検索するように強制するため、かなり面倒です。


真剣に-クレイジー迷惑。ヒントをありがとう。
TJビドル

2
それはのために私にこれを行いjenkinsjiraconfluenceそれは私がこれらの3に関連する何のための私のアドレスバーからの一般的な検索を開始することはできませんことを私は絶対に狂わせます- 。これは、私が見てきた中で最高で唯一の回避策です。乾杯。
マットクラーク

1
@MattClark jiraまさに!私はジラではなく、ジラについて検索したい!
エリック

あなたの場合はどうですか?私にとって、サイトで検索をトリガーするには、そのキーワードをオムニバーに入力してTabを押す必要があります。次に、オンサイト検索に変わり、検索文字列を入力し続けることができます。キーワードまたはキーワードを含む文字列のみを検索する場合は、キーワードSpace、検索文字列の残りの部分を入力し、Enterキーを押します。デフォルトの検索エンジンを使用して検索しています。したがって、互いに干渉しません。デフォルトの検索エンジンを使用して検索するにはキーワードの後にスペースを使用し、サイトで検索するにはタブを使用します。
ダウィド・フェレンツィ・ロゴジャン

@DawidFerenczy:それは私たちのほかの人にとってはうまくいかない方法です。スペースはまだその検索エンジンを使用しています。を入力しgit、次にスペースを入力すると、gitの検索エンジンを使用するように即座に変更されます(これは何度も削除しました)。
ジェラート

9

このシンプルなユーザースクリプトを使用してみてください:

// ==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]);
    }
}

1
このスクリプトはどこに追加しますか?またはそれを実行しますか?
mateuscb

2
@mateuscb ここから入手できます。次に、Chromeの拡張機能設定ページchrome:// extensions /にスクリプトをドロップします。
ビクターヘックヴィスト

この。です 驚くばかり。私はダミーを作成する必要がありましたmanifest.jsonこのSOの回答に従って、開発モードで(アンパックされた拡張機能として)インストールしましたが、それ以外は
おやつ

1
または、Tamper Monkeyで使用できます。あなたがウェブサイトに変更を加えることに慣れているなら、TMは必須のアドオンであるべきです。
JasonXA 14

このワンライナーを使用することもできますdocument.querySelector('[type="application/opensearchdescription+xml"]').remove();(以下の私の回答を参照)。
-thdoan

9

多数の検索エンジンをすばやく削除するには、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);
        });
    });

すべてをクリアするには、これを数回貼り付けて実行する必要がある場合があります。


私が持っていた100以上のエントリを削除するには、これを約10回dev-consoleにコピー/ペーストする必要がありました。私はそれをシングルクリックのブックマークレットに変える方法を知っていた。
ジグガンジャー

1
上から下に向かって作業すると、エントリが削除されるたびに値がリセットされるため(通常、現在のリストの約半分のみを削除するため)、リストを逆順(modelIndexに基づいて)にソートするように変更しました。下から上に作業する場合、この問題は発生しません。
アルコール

私が最初に見たのは、これを一度に実行できることです!称賛。
ブニーランド

Chromeバージョン64.0.3282.186(公式ビルド)(64ビット)のWindows 10バージョン1709インストールで1回実行しました。
ジョセフハリオット

7

あなたが正しく説明していることを理解しているなら、これはウェブサイトが何もしているわけではありません。むしろ、Chrome自体がWebサイト上の検索ボックスを識別し、それをオムニバーの検索オプションのリストに追加します。

A1:はい、これはデフォルトの動作ですが、Webサイトが自分自身を追加するのではなく、ChromeがWebサイトを追加します。

A2:この動作を無効にできるとは思いませんが、ツールメニュー-> [オプション]-> [検索エンジンの管理]に移動して検索エンジンを削除できます。「その他の検索エンジン」の下に表示されます。削除するときに再追加しないように指定できる場合がありますが、この機能が気に入ったので、削除しようとはしません。


@Kromeyに感謝します、それは良い点です。あなたのコメントを反映するために質問を更新しました。
アメリオバスケスレイナ

1
この答えは間違っています。ウェブサイトは、OpenSearch description documentと呼ばれるものを使用してChromeが自分のウェブサイトの検索エンジンをChromeのブラウザのインターフェースとなる検索エンジンのリストに追加できるようにするため、Chromeに効果的に追加されます。
マルセル

@Marcel OpenSearch 、サイトに検索機能を説明させるだけです。それでも、ブラウザはそれに基づいて動作する必要があります。したがって、これは間違っていません。「... [特定]ウェブサイト上の検索ボックス...」に使用されている技術仕様を答えに含めませんでした。 -ブラウザが検索ボックスを見つける正確なメカニズムは、平均的なユーザーには関係なく、追加したいウェブマスターにのみ関係します。
クローミー

7

私が見つけた回避策の1つは、すべての検索をスペースで開始する習慣を身に付けることです。あなたが入力した場合・Splunk median(ここで、空白文字を表します)、Chromeは上のGoogle検索を実行しますSplunk median


2
疑問符(?)で検索を開始すると、デフォルトの検索エンジンも使用されます。
アリ

いいね!私はスペースよりもそれが好きです。
ジュンダイベイツ-小橋川

1
私にとってはうまくいきませんでした。Chrome 39、Win 7では、spacekeywordを入力しても検索インターフェイスが表示されませんでした。ただし、ソリューションは他の場所の名前付けに役立ちました。定義済みの検索を自動検索の上に表示したい場合は、名前とプレストの前にスペースを1つ入れます。すべての自動化された検索エンジンは以下に進み、それらの管理/削除がより簡単になりました。
JasonXA 14

ctrl + kを押すと、その動作が得られます。
ジグガンジャー

6

<-背景->

私はここであなたに代わる、より邪魔にならないアイデアを持っています(少なくともあなたが広告ブロッカーを実行しているなら、私たちの多くは私たち自身の正気/安全のためです)。既存の拡張機能/スクリプトを可能な限り使用して、1つの機能だけで拡張機能全体の肥大化を回避するのが好きなので(最悪のシナリオ)、このソリューションはこの原則の下で機能します。

Adblockとその亜種/後継者(uBlockは私が選んだ武器です)には、<link>OpenSearch Descriptions(OSD)の自動検出に使用される要素を含むWebページ要素、自動を許可する情報を含む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」にラベルを付けました(パワーユーザーの無効化オプション/フラグが複数回要求されました)。機能は「一般的に有用」であり、開発者がすべての気まぐれに対応するために無数のフラグなどを追加するのではなく、拡張機能またはサードパーティのスクリプトによってニッチの問題を解決する必要があるというスタンスです。彼らの好みに沿って、それを素晴らしく、管理しやすい状態に保ちます。

幸運を祈ります!他の誰かがこれを試してみたら、私たちに教えてください!


1
これはうまくいきませんでした(cdnjs.comで検索してみてください)。100%信頼できるソリューションはないという結論に達しました:
thdoan

これも私には機能しません-4inkjets.comで検索すると、検索エンジンとして追加されます(奇妙なことapplication/opensearchdescription+xmlに、ページにリンクが見つかりません。)
Ivan Kozik
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.