Google Chrome автоматически добавляет сайты в мой список поисковых систем?


121

Я заметил, что некоторые сайты (например, сайты Stack Exchange, Dell и т. Д.) Автоматически добавляются в мой список поисковых систем в Google Chrome.

Они даже добавляют сочетание клавиш к своей записи. Вот некоторые примеры:

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

Q1: это поведение по умолчанию в Chrome? (чтобы веб-сайты добавили себя в список поисковых систем?)

Q2: возможно ли отключить это поведение в Chrome?

Примечание. Я работаю с последней версией Chrome: 11.0.696.57 в Windows 7 64, и у меня установлено только одно расширение: сокращение URL Google.


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

16
@ Сатья - Множество причин: * Удобство: иногда вы хотите искать ПО сайту, а не ПО этому сайту. * Согласованность: случайное и бесшумное добавление новых «поисковых систем» приводит к неожиданному поведению в омнибоксе. * Конфиденциальность: Chrome не сообщает вам, когда решит добавить новые «поисковые системы», и они не исчезают, когда вы очищаете историю просмотров. * Обычная вежливость. Разве я не могу выбрать, включить ли эту «функцию» или, если ее не получится, хотя бы выбрать получение информации, когда Chrome решит добавить сайт, чтобы я мог отменить это решение?
— Фенри

1
Кажется, я не достоин решать, какие поисковые системы должен знать мой браузер.
— Андерс Линден

Ответы:


34

Благодаря коду @ 10basetom и вдохновленному @shthed, я выпустил расширение Chrome « Не добавлять пользовательские поисковые системы», которое делает именно это.

Вы найдете исходный код здесь .

Дайте мне знать, что вы думаете!


1
@ O'Rooney Спасибо! Я вижу, как время от времени некоторые сайты проскальзывают по расширению, но гораздо лучше очистить несколько поисковых систем за месяц, чем проводить почти полную еженедельную «чистку» ... Ура!
— Грег Садецкий

4
На самом деле больше не работает: множество пользовательских поисковых систем по-прежнему добавляются.
— onnodb

1
@onnodb спасибо за примечание, я, к сожалению, не успел обновить расширение.
— Грег

1
@onnodb, Грег, не могли бы вы (или другие заинтересованные лица) попробовать эту вилку ? Проверьте, затем загрузите .../srcкак распакованное расширение. Дайте мне знать, как это происходит. Спасибо!
— cxw

3
Небольшое замечание, что расширение было только что обновлено с помощью значительно улучшенного алгоритма обнаружения / блокировки, благодаря многим усилиям со стороны ряда участников! Дайте ему назад, если раньше у вас не получалось. Приветствия
— Грег Садецкий

61

Это сводило меня с ума, и я нашел хакерское, но эффективное решение проблемы.

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

Добавьте триггер.

СОЗДАЙТЕ TRIGGER no_auto_keywords ПЕРЕД ВСТАВКОЙ В КЛЮЧЕВЫЕ КЛЮЧИ, КОГДА (NEW.originating_url НЕ ПУСТО И А NEW.originating_url! = '') НАЧАТЬ ВЫБЕРИТЕ RAISE (IGNORE); КОНЕЦ;

Вы сделали Закройте редактор и запустите Chrome.


Это работает так, что, когда chrome добавляет автоматическое добавление поисковой системы в keywordsтаблицу, chrome устанавливает originating_urlполе для веб-сайта, с которого он пришел. Триггер в основном ищет любые вставки с непустым originating_urlполем и выдает a, в результате 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 TRIGGERкоманду, пока Chrome открыт, то Error: database is lockedсначала выйдите из Chrome. 4 / Как только Chrome был закрыт, это открыло базу данных, успешно работающую: /Volumes/Macintosh\ HD/Applications/sqlite3 ./Web\ Data(в Terminal, когда в указанном каталоге) HTH
— sming

Я пытался удалить из ключевых слов, где идентификатор> 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
И все же есть способы отключить его, как объясняют другие ответы :)
— Enrico

6
«Да, это по замыслу». Это плохой и неправильный дизайн для автоматического добавления вещей в систему без участия пользователя по этому вопросу. Вредоносные сайты могут легко воспользоваться этим. «Нет, это невозможно отключить». Очевидно, есть, когда это программное обеспечение, всегда есть способ. Быть ленивым и говорить, что нет, не является решением. Этот ответ должен быть удален, и писатель предупрежден.
— Алекс Саммерс

Мой пользовательский поисковик потерял после очистки кеша. Я часами открывал несколько сайтов, но эти движки не возвращались. Вы знаете, как их вернуть? (Я не хочу добавлять их вручную, слишком много)
— Мифрил

этот неправильный ответ получает голосование. Разве это не должно быть удалено или отредактировано, чтобы исправить это?
— Сантропедро

10

Вот несколько хакерский обходной путь, который прекрасно работает для меня. Просто переименуйте псевдоним поиска во что-то загадочное, например «§ $%! / () & /» . Пока поисковая система все еще там, вы никогда не увидите ее снова, никогда. Довольно раздражает, если вы не можете найти в поиске «jenkins», потому что хром заставляет вас искать в jenkins.


Серьезно - безумно раздражает. Спасибо за чаевые.
— TJ Biddle

2
Он делает это для меня jenkins, jiraи confluence- Это сводит меня с ума абсолютно , что я не могу начать общий поиск из моей адресной строке , что связано с этими тремя. Это, безусловно, лучший и единственный работающий обходной путь, который я видел. Приветствия.
— Мэтт Кларк

1
@MattClark jiraточно! Я хочу искать о Джира, а не в нем!
— ErikE

Как себя ведет в вашем случае? Для того, чтобы запустить поиск по сайту , я должен набрать его ключевое слово в омнибар пресс Tab . Затем он меняется на поиск по сайту, и я могу продолжать вводить строку поиска. Если я хочу найти только ключевое слово или строку, содержащую ключевое слово, я набираю ключевое слово, пробел , остаток строки поиска и ввод, и я ищу, используя поисковую систему по умолчанию. Так что это не мешает друг другу. Просто используйте пробел после ключевого слова для поиска, используя поисковую систему по умолчанию, и вкладку для поиска по сайту.
— Давид Ференци Рогожан

@DawidFerenczy: Это не так, как это работает для всех нас. Пространство все еще использует эту поисковую систему. Я набираю git, затем пробел, и он мгновенно меняется, чтобы использовать поисковую систему git (которую я удалял бесчисленное количество раз).
— Gerrat

9

Попробуйте использовать этот простой usercript:

// ==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-ответу и установить его через режим разработки (как распакованное расширение), но кроме этого он работал как удовольствие.
— womble

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 записей, которые у меня были. Хотел бы я знать, как превратить его в букмарклет одним кликом.
— Джиггунджер

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 просто позволяет сайтам описывать свою функцию поиска. Это все еще требует, чтобы браузер действовал на этом. Поэтому это не является неправильным, я просто не включил техническую спецификацию, которая используется для «... [идентифицировать] окна поиска на веб-сайтах ...» в моем ответе, так как я чувствовал, что это усложнило бы простой вопрос - точный механизм того, как браузер находит окно поиска, не имеет отношения к среднему пользователю, только к веб-мастерам, которые хотят, чтобы их добавили.
— Kromey

7

Один из обходных путей, который я нашел для этого, - приобрести привычку начинать все мои поиски с пробела. Если вы введете ・Splunk median(где ・символ пробела), Chrome выполнит поиск Google Splunk median.


2
Начиная поиск с вопросительным знаком (?), Вы также будете использовать поисковую систему по умолчанию.
— Ари

Приятно! Мне нравится это лучше, чем пространство.
— Джун-Дай Бейтс-Кобашигава

1
Для меня это не сработало. В Chrome 39, Win 7, ввод пробела не вызывал интерфейс поиска. Тем не менее, ваше решение было полезно в другом месте, в именовании. Если я хочу, чтобы мои определенные поиски появлялись поверх автоматических, один пробел перед именем и presto. Все автоматизированные поисковые системы идут ниже, и теперь ими проще управлять / удалять.
— JasonXA

просто нажмите Ctrl + K, чтобы получить такое поведение.
— Джиггунджер

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% надежного решения :(
— thoan

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