Google Chrome автоматично додає веб-сайти до мого списку пошукових систем?


121

Я помітив, що певні веб-сайти (наприклад, сайти Stack Exchange, Dell тощо) автоматично додаються до мого списку пошукових систем у Google Chrome.

Вони навіть додають комбінацію клавіш до свого вступу. Ось кілька прикладів:

  • Dell: Клавіатура -> Dell.com
  • Веб-майстри стека обміну: Клавіатура -> webmasters.stackexchange.com
  • Reuters: Клавіатура -> reuters.com

Q1: Це поведінка за умовчанням у Chrome? (щоб веб-сайти могли додати себе до списку пошукових систем?)

Q2: Чи можна відключити цю поведінку в Chrome?

Примітка. У мене працює остання версія Chrome: 11.0.696.57 в Windows 7 64, і в мене встановлено лише одне розширення: Google Shortterner.


33
@ Сатья, чому? Я хочу мати можливість відключити її. Якщо у вас запитання, чому я б відключив щось подібне : інтерфейс для редагування пошукових систем не особливо хороший, і в міру зростання списку важко сказати, які пошукові системи я додав вручну, а які додані автоматично. Також важче знайти певний запис у великому списку.
Амеліо Васкес-Рейна

16
@Sathya - Багато причин: * Зручність: Іноді ви хочете шукати ПРО САЙТ, а не ВКЛ. * Послідовність: Довільне та мовчазне додавання нових "пошукових систем" викликає несподівану поведінку в універсальному вікні. * Конфіденційність: Chrome не повідомляє вас, коли він вирішить додати нові "пошукові системи", і вони не зникнуть, коли ви очистите історію веб-перегляду. * Загальна ввічливість: чи не можу я вибрати, чи ввімкнено цю "функцію", або - якщо цього не зробити - принаймні вибрати, щоб її повідомили, коли Chrome вирішить додати сайт, тож я можу протидіяти цьому рішенню?
ferry

1
Здається, я не гідний вирішувати, які саме пошукові системи повинен знати мій браузер.
Андерс Лінден

Відповіді:


34

Завдяки коду @ 10basetom та натхненному @shthed, я випустив не додавати розширення Chrome для користувальницьких пошукових систем, яке робить саме це.

Ви знайдете вихідний код тут .

Дайте мені знати, що ви думаєте!


1
@ O'Rooney Дякую! Я бачу, що деякі сайти час від часу проскакують, але набагато краще за місяць очистити кілька пошукових систем, ніж робити майже повну тижневу "чистку" ... Будьте здорові!
Грег Садецький

4
Насправді вже не працює: багато корисних пошукових систем все ще додаються.
onnodb

1
@onnodb дякую за замітку, у мене, на жаль, не вистачило часу на оновлення розширення.
Грег Садецький

1
@onnodb, Грег, будь ласка (чи будь-хто інший зацікавлений) будь ласка, спробуй цю вилку ? Перевірте, а потім завантажте .../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 має сторінку завантаження з попередньо складеною утилітою командного рядка для різних операційних систем. Хоча будь-який редактор, здатний працювати з базами даних sqlite3, буде працювати.

Для утиліти командного рядка використовуйте таку команду, як:

sqlite3 /path/to/Web\ Data

Додайте тригер.

Створіть TRIGGER no_auto_keywords ПЕРЕД ВСТАВИТИ ключові слова, КОЛИ (NEW.origining_url НЕ НУЛЬНИЙ ТА НОВИЙ. КІНЧ;

Ви закінчили. Закрийте редактор і почніть хромувати резервну копію.


Як це працює, це те, що, коли Chrome переходить до автоматичного додавання пошукової системи в keywordsтаблицю, chrome встановлює originating_urlполе для веб-сайту, з якого він прийшов. Тригер в основному шукає будь-які вставки з незаповненим originating_urlполем і видає a, RAISE(IGNORE)що призводить до того, що оператор мовчки пропускається.
Пошукові системи, що додаються вручну, не мають originating_url, і тому тригер дозволяє їх додавати.


2
Спробувавши кілька редакторів, SQLiteStudio мій улюблений. Ні в якому разі я не пов'язаний з цим продуктом. Просто корисний інструмент, який я знайшов після деяких пошуків.
mateuscb

1
Це чудово, і це працює. Однак для мене Chrome все ж додав пошукові системи не в базу даних, а в іншу папку "Sync Data Backup". Вимкніть дозволи на запис для цієї папки в Windows / Linux, і це піде назавжди.
Мартін Хансен

Схоже, це більше не працює, принаймні, у Chrome v47beta. Після перезавантаження Chrome пошукова система автоматично додається до списку, хоча введення ключового слова більше не викликає.
thoan

FYI: 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\ DataTerminal, коли знаходиться у вказаному каталозі) HTH
sming

Я спробував видалити з ключових слів, де id> 2; а Google просто синхронізує їх із сервера. Я думаю, що вже пізно після того, як у мене вже встановлені тисячі пошукових систем.
Фанат Ци

34

Є два способи зробити це:

  1. Додайте цей сценарій користувача до Tamper Monkey :

    var elOpenSearch = document.querySelector('[type="application/opensearchdescription+xml"]');
    if (elOpenSearch) elOpenSearch.remove();
  2. Якщо ви не звичайний користувач Tamper Monkey і вам не здається витрачати 15-20 МБ оперативної пам’яті просто для того, щоб завантажити розширення Tamper Monkey для цієї мети, тоді ви можете згорнути власне надлегке розширення, яке не затребує жодної пам'яті . Інструкції наведені нижче.

Як створити власне розширення, щоб видалити <link>тег OpenSearch та запобігти автоматичному додаванню пошукових систем 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, і натисніть "ОК".

Вітаємо! Тепер Google Chrome має бути трохи менш прикро використовувати :-).

Обмеження: Це рішення не є 100% надійним. Якщо ви перейдете до URL-адреси, яка містить параметр пошуку (наприклад, https://cdnjs.com/#q=fastclick ), то в рідкісних випадках користувацька пошукова система все одно буде додана. Я підозрюю, що це тому, що Chrome може проаналізувати <link>тег OpenSearch, перш ніж користувацький сценарій або розширення матиме шанс видалити його з DOM.


2
Я здивований, що ніхто не розмістив це як офіційне продовження магазину, схоже, це було б популярно. В ідеалі я хотів би, щоб розширення запитало мене перед тим, як додати пошукову систему чи мати піктограму в адресному рядку, яка дозволяє мені її додати, як і RSS-канали.
ryanmonk

7
Дякую за чудовий код та @shthed дякую за натхнення! Щойно я випустив розширення Google Chrome, яке робить саме це. Ви можете знайти його тут . Вихідний код тут . Дайте мені знати, що ви думаєте! :-)
Грег Садецький

@GregSadetsky Опублікуйте це як відповідь, і ми могли б проголосувати за нього :)
O'Rooney

24

2
Я люблю цю відповідь. Це просто, але інформативно
nXqd

8
І все ж є способи відключити це, як пояснюють інші відповіді :)
Енріко

6
"Так, це за задумом". Це поганий і неправильний дизайн, щоб автоматично додавати речі до системи без вкладень користувачів з цього питання. Зловмисні веб-сайти легко скористаються цим. "Ні, немає способу відключити це." Очевидно, що, коли це програмне забезпечення, завжди є спосіб. Лінуватися і говорити, що немає, це не є рішенням. Цю відповідь слід усунути, і письменник попередив.
Алекс Саммерс

Моя користувальницька пошукова система втратила після очищення кешу. Я кілька годин відкривав деякі сайти, але ці двигуни не поверталися. Чи знаєте ви, як їх повернути? (Я не хочу їх додавати вручну, занадто багато)
Мітрил,

ця неправильна відповідь стає сприйнятою. Чи не слід його видаляти чи редагувати, щоб виправити це?
Сантропедро

10

Ось дещо хиткий спосіб вирішення, який працює для мене просто чудово. Просто перейменуйте псевдонім пошуку на щось криптовалютне, наприклад "§ $%! / () & /" . Поки пошукова система все ще є, ви її більше не побачите. Дуже дратівливо, якщо ви не можете в Google відшукати "джинкіни", оскільки хром змушує вас шукати джинсини.


Серйозно - шалено дратує. Дякую за пораду.
TJ Biddle

2
Він робить це для мене jenkins, jiraі confluence- Це зводить мене з розуму абсолютно , що я не можу почати спільний пошук з моєї адресному рядку , що пов'язано з цими трьома. Це, безумовно, найкращий і єдиний робочий шлях, який я бачив. Ура.
Метт Кларк

1
@MattClark jiraточно! Я хочу шукати про джиру, а не в ній!
ErikE

Як поводиться у вашому випадку? Для мене, щоб запустити пошук на сайті , я повинен ввести його ключове слово в універсальному меню і натиснути Tab . Потім він переходить у пошук на сайті, і я можу продовжувати набирати рядок пошуку. Якщо я хочу шукати лише ключове слово або рядок, що містить ключове слово, я набираю ключове слово, пробіл , решту пошукового рядка та клавішу 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(відповідно до цієї відповіді ТА і встановити його в режимі dev (як розпаковане розширення), але крім цього він працював як частування.
Жіноче

1
Або ви можете використовувати його в Tamper Monkey. Якщо ви звикли робити зміни на веб-сайтах, TM повинен бути обов'язковим доповненням.
JasonXA

Ви також можете скористатися цим однокласником: document.querySelector('[type="application/opensearchdescription+xml"]').remove();(див. Мою відповідь нижче).
thoan

9

Щоб швидко видалити велику кількість пошукових систем, перейдіть до пункту chrome: // settings / searchEngines, натисніть Ctrl-Shift-J (Opt-Cmd-J на OSX), щоб увійти в консоль 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);
        });
    });

Можливо, вам доведеться вставити та запустити це кілька разів, щоб усе очистити.


Мені довелося скопіювати / вставити це приблизно 10 разів у консоль розробника, щоб видалити 100 записів, які я мав. Хочеться, щоб я знав, як перетворити його в закладку одним клацанням миші.
jiggunjer

1
Я змінив його для того, щоб спочатку сортувати список у зворотному порядку (на основі modelIndex), оскільки його значення скидається щоразу, коли запис видаляється (тому ви, як правило, видаляєте лише половину поточного списку), працюючи зверху вниз. Під час роботи знизу вгору цього питання не виникає.
алкоголь

Перший я побачив, що це може зробити за один пробіг! Кудос.
bnieland

Працював за один раз на моїй Windows 10, версія 1709, встановлення Chrome версії 64.0.3282.186 (Офіційна збірка) (64-розрядна).
ДжозефГарріотт

7

Якщо я розумію, що ви правильно описуєте, то це не веб-сайти, які взагалі нічого не роблять. Скоріше, Chrome сам ідентифікує вікна пошуку на веб-сайтах, а потім додає їх до списку варіантів пошуку в універсальному меню.

A1: Так, це поведінка за замовчуванням, але це не веб-сайти, що додають себе, це Chrome, що додає веб-сайти.

A2: Я не вірю, що ви можете відключити цю поведінку, проте ви можете видалити пошукові системи, перейшовши в меню інструментів -> Параметри -> Управління пошуковими системами; вони з'являться у розділі "Інші пошукові системи". Можливо, ви зможете вказати, що його не слід додавати повторно, коли ви його видаляєте, я не впевнений - мені трапляється ця функція, яка мені подобається, тому я не збираюся їх намагатися видалити.


Дякую @Kromey, це хороший момент. Я щойно оновив питання, щоб відобразити ваш коментар.
Амеліо Васкес-Рейна

1
Ця відповідь є невірною, веб-сайти ефективно додають себе до Chrome, оскільки вони використовують те, що називається документом опису OpenSearch, щоб Chrome змогло додати пошукову систему свого веб-сайту до списку пошукових систем Chrome, з яким може працювати веб-переглядач.
Марсель

@Marcel OpenSearch дозволяє лише сайтам описати свою функцію пошуку. Він все ще вимагає, щоб браузер діяв на це. Тому це невірно, я просто не включив у свою відповідь технічну специфікацію, яка використовується для "... [ідентифікації] вікон пошуку на веб-сайтах ...", оскільки я вважав, що це ускладнить інакше просту справу - точний механізм того, як браузер знаходить поле пошуку, не стосується пересічного користувача, лише для веб-майстрів, які хочуть додати їх.
Кромей

7

Я знайшов для цього одне вирішення - придбати звичку починати всі пошуки з пробілу. Якщо ви введете ・Splunk median(де зображено пробіл), Chrome здійснить пошук у Google Splunk median.


2
Почавши пошук зі знаком питання (?), Також буде використана ваша пошукова система за замовчуванням.
Арі

Приємно! Мені це подобається краще, ніж простір.
Черв-Дай Бейтс-Кобашигава

1
Для мене це не спрацювало. У Chrome 39, Win 7, введення пробільного слова не відобразило пошуковий інтерфейс. Однак ваше рішення було корисним в іншому місці, в іменуванні. Якщо я хочу, щоб мої визначені пошукові запити відображалися поверх автоматизованих, один пробіл перед назвою та престолом. Усі автоматизовані пошукові системи йдуть нижче, і тепер їх легше керувати / видаляти.
JasonXA

просто натисніть ctrl + k, щоб отримати таку поведінку.
jiggunjer

6

<- Фон ->

У мене тут є альтернативна, менш нав'язлива для вас ідея (принаймні, якщо ви використовуєте блокатор оголошень, оскільки так багато з нас є для власного розуму / безпеки). Мені подобається максимально використовувати існуючі розширення / скрипти, щоб уникнути розширення цілого розширення лише для однієї функції (найгірший сценарій), тому це рішення працює за цим принципом.

Adblock та його варіанти / наступники (uBlock - моя зброя вибору) мають можливість блокувати елементи веб-сторінки, включаючи <link>елементи, які використовуються для автоматичного розкриття описів OpenSearch (OSD), XML-файлів, що містять інформацію, яка дозволяє авто -додавання пошукових систем і викликає у нас ці головні болі. Я кажу "дозвіл", тому що це навряд чи є обов'язковим, тому що, наскільки показало моє дослідження, Firefox просто зчитує цю інформацію та робить її доступною для легкого додавання у спадному вікні пошукових систем, а не тихо автоматично додаючи її, як це робить Chrome.

Використання функції описано в специфікаціях Opensearch у кількох місцях:

http://www.opensearch.org/Specifications/OpenSearch/1.1#Autodiscovery_in_RSS.2FAtom (ігноруйте специфічний тонкий підрозділ цього розділу для наших цілей, оскільки це лише приклад його використання)


<- Рішення ->

Оскільки в описах OpenSearch (OSD) є унікальний тип, ми можемо відфільтрувати їх за допомогою наступного правила AdblockPlus / uBlock:

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

Я перевірив це, і правило показує правильну відповідність на моїх тестових сайтах (filehippo.com тощо), і пошукові системи вже не додають автоматичне додавання, тому я вважаю, що це повне рішення.


Коротка примітка про історію, яку я виявив за цим: інженери Chromium протягом багатьох років кілька разів маркували цей "WontFix" (опція / прапор для вимкнення користувачем живлення кілька разів запитувались), вказуючи, що це вважається проблемою ніші з часу особливість "загалом корисна", їхня позиція полягає в тому, що проблеми ніші повинні вирішуватися розширеннями або сторонніми сценаріями, а не розробниками, що додають незліченну кількість прапорів і подібне, щоб задовольнити всі примхи, тому в основному те, що ми тут робимо, просто відповідно до їх уподобань і зберігає це приємно та керовано.

Удачі! Якщо хтось інший спробує це, дайте нам знати мені, як це працює!


1
Це не спрацювало для мене (спробуйте пошукати на cdnjs.com ). Я дійшов висновку, що не існує 100% надійного рішення :(
1515

Це також не працює для мене - якщо я шукаю на 4inkjets.com, його додають як пошукову систему (дивно, я не можу знайти application/opensearchdescription+xmlпосилання на сторінці.)
Іван Козик,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.