Google Chrome automatycznie dodaje witryny do mojej listy wyszukiwarek?

120

Zauważyłem, że niektóre witryny (np. Witryny Stack Exchange, Dell itp.) Są automatycznie dodawane do mojej listy wyszukiwarek w Google Chrome.

Dodają nawet skrót klawiaturowy do swojego wpisu. Oto kilka przykładów:

  • Dell: Klawiatura -> Dell.com
  • Stack Exchange Web master: Klawiatura -> webmasters.stackexchange.com
  • Reuters: Klawiatura -> reuters.com

P1: Czy jest to domyślne zachowanie w Chrome? (aby witryny mogły się dodać do listy wyszukiwarek?)

P2: Czy można wyłączyć to zachowanie w Chrome?

Uwaga: korzystam z najnowszej wersji Chrome: 11.0.696.57 na Windows 7 64 i mam zainstalowane tylko jedno rozszerzenie: skracacz URL Google.

Amelio Vazquez-Reina
źródło
33
@ Sathya, dlaczego? Chcę mieć elastyczność, aby ją wyłączyć. Jeśli masz pytanie, dlaczego miałbym wyłączyć coś takiego : interfejs do edycji wyszukiwarek nie jest szczególnie dobry, a wraz z powiększaniem się listy trudno powiedzieć, które wyszukiwarki dodałem ręcznie, a które automatycznie. Trudniej jest również znaleźć konkretny wpis na dużej liście.
Amelio Vazquez-Reina
16
@Sathya - Wiele powodów: * Wygoda: Czasami chcesz wyszukiwać informacje o witrynie, a nie na tej stronie. * Spójność: Losowe i ciche dodawanie nowych „wyszukiwarek” powoduje nieoczekiwane zachowanie w omniboksie. * Prywatność: Chrome nie informuje Cię, gdy decyduje się dodać nowe „wyszukiwarki”, i nie znikają po wyczyszczeniu historii przeglądania. * Powszechna uprzejmość: czy nie powinienem mieć możliwości wyboru, czy włączyć tę „funkcję”, czy - w przypadku braku takiej decyzji - przynajmniej zdecydować, czy będę informowany, gdy Chrome zdecyduje się na dodanie witryny, abym mógł przeciwdziałać tej decyzji?
fenry
1
Wygląda na to, że nie jestem wart decyzji, które wyszukiwarki powinny wiedzieć.
Anders Lindén

Odpowiedzi:

33

Dzięki kodowi @ 10basetom i zainspirowanemu przez @shthed wydałem rozszerzenie Nie dodawaj niestandardowych wyszukiwarek Chrome, które właśnie to robi.

Znajdziesz kod źródłowy tutaj .

Powiedz mi co myślisz!

Greg Sadetsky
źródło
1
@ O'Rooney Dziękuję! Widzę, że niektóre witryny od czasu do czasu ślizgają się po rozszerzeniu, ale o wiele lepiej jest wyczyścić kilka wyszukiwarek w ciągu miesiąca niż robić prawie kompletne cotygodniowe „czyszczenie” ... Pozdrawiam!
Greg Sadetsky
4
W rzeczywistości już nie działa: dodaje się wiele niestandardowych wyszukiwarek.
onnodb,
1
@onnodb dzięki za notatkę, niestety nie miałem wystarczająco dużo czasu na aktualizację rozszerzenia.
Greg Sadetsky,
1
@onnodb, Greg, czy (lub jakikolwiek inny zainteresowany) wypróbuj ten widelec ? Sprawdź, a następnie załaduj .../srcjako rozpakowane rozszerzenie. Daj mi znać jak idzie. Dzięki!
cxw
3
Mała uwaga, że ​​rozszerzenie zostało właśnie zaktualizowane o znacznie ulepszony algorytm wykrywania / blokowania, dzięki wielu wysiłkom wielu autorów! Daj temu, jeśli wcześniej nie działało to dobrze. Pozdrawiam
Greg Sadetsky
61

To sprawiło, że byłem absolutnie szalony, więc znalazłem hackerskie, ale skuteczne rozwiązanie tego problemu.

Chrome przechowuje swoje wyszukiwarki w prostej bazie danych sqlite3. Odkryłem, że możesz utworzyć wyzwalacz, gdy chrome pójdzie dodać wyszukiwarkę, która powoduje ignorowanie instrukcji wstawiania bazy danych.
Zauważ, że wyszukiwarki są nadal przechowywane w pamięci, więc będą pojawiać się na liście aż do ponownego uruchomienia przeglądarki . Jednak nie będziesz musiał ich cały czas usuwać, więc jeśli chcesz dodać własne wyszukiwarki, nie musisz się martwić o przypadkowe usunięcie ich (tak, ręczne dodawanie wyszukiwarek nadal będzie działać).

Najpierw musisz zlokalizować Web dataplik.

  • 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 Datalub~/.config/chromium/Default/Web Data

Następnie otwórz go za pomocą edytora sqlite3.

W tym momencie Chrome musi zostać zamknięty.

Oficjalna strona internetowa sqlite ma stronę pobierania ze wstępnie skompilowanym narzędziem wiersza poleceń dla różnych systemów operacyjnych. Chociaż każdy edytor zdolny do pracy z bazami danych sqlite3 będzie działał.

W przypadku narzędzia wiersza polecenia użyj polecenia takiego jak poniżej (nie zapomnij uciec lub zacytować spację w nazwie pliku):

sqlite3 /path/to/Web\ Data

Dodaj wyzwalacz.

UTWÓRZ WYZWALACZ no_auto_keyword PRZED WPROWADZENIEM SŁÓW kluczowych, GDY (NEW.originating_url NIE JEST NULL I NEW.originating_url! = '') ROZPOCZNIJ WYBIERZ PODNIESIENIE (IGNORUJ); KONIEC;

Jesteś skończony. Zamknij edytor i ponownie uruchom Chrome.


Działa to tak, że gdy chrome idzie do automatycznego dodawania wyszukiwarki do keywordstabeli, chrome ustawia originating_urlpole na stronę, z której pochodzi. Wyzwalacz zasadniczo szuka wszelkich wstawek z niepustym originating_urlpolem i RAISE(IGNORE)powoduje, że polecenie jest cicho pomijane.
Ręcznie dodane wyszukiwarki nie mają originating_url, więc wyzwalacz pozwala je dodać.

Patrick
źródło
2
Po wypróbowaniu kilku edytorów SQLiteStudio jest moim ulubionym. Nie ma mowy, żebym był związany z tym produktem. Po prostu przydatne narzędzie, które znalazłem po kilku poszukiwaniach.
mateuscb
1
To jest świetne i działa. Jednak dla mnie Chrome nadal dodaje wyszukiwarki, nie w bazie danych, ale w innym folderze „Sync Data Backup”. Wyłącz uprawnienia do zapisu dla tego folderu w systemie Windows / Linux, a zniknie na dobre.
Martin Hansen
Wydaje się, że to już nie działa, przynajmniej w Chrome v47beta. Po ponownym uruchomieniu Chrome automatycznie dodana wyszukiwarka nadal znajduje się na liście, chociaż wpisanie słowa kluczowego już go nie wyzwala.
thdoan
FYI: 1 / najpierw wykonaj kopię tego pliku na wypadek, gdybyś go zepsuł :) 2 / na komputerze Mac 10.11.4 (El Capitan) Nie mogłem otworzyć pliku / bazy danych za pomocą narzędzia sqlitebrowser.app ( "Error: unable to open database "~/Library/Application Support/Google/Chrome/Default/Web Data": unable to open database file). 3 / jeśli spróbujesz uruchomić CREATE TRIGGERpolecenie, gdy Chrome jest otwarty, możesz go Error: database is lockednajpierw zamknąć. 4 / po zamknięciu przeglądarki Chrome otworzyła się baza danych z powodzeniem działała: /Volumes/Macintosh\ HD/Applications/sqlite3 ./Web\ Data(w Terminal, gdy w podanym katalogu) HTH
sming
Próbowałem usunąć ze słów kluczowych, gdzie id> 2; a Google po prostu synchronizuje je z powrotem z serwera. Myślę, że jest już za późno, kiedy mam już tysiące wyszukiwarek.
Qi Fan
34

Można to zrobić na dwa sposoby:

  1. Dodaj ten skrypt użytkownika do Tamper Monkey :

    var elOpenSearch = document.querySelector('[type="application/opensearchdescription+xml"]');
    if (elOpenSearch) elOpenSearch.remove();
    
  2. Jeśli nie jesteś zwykłym użytkownikiem Tamper Monkey i nie masz ochoty marnować 15-20 MB pamięci RAM, aby załadować rozszerzenie Tamper Monkey w tym celu, możesz rzucić własne superlekkie rozszerzenie, które nie zużywa pamięci . Instrukcje znajdują się poniżej.

Jak utworzyć własne rozszerzenie, aby usunąć <link>tag OpenSearch i uniemożliwić Chromeowi automatyczne dodawanie wyszukiwarek:

  1. Utwórz folder, w którym będziesz umieszczać pliki rozszerzeń.

  2. W tym folderze utwórz dwa pliki tekstowe o nazwie manifest.jsoni content.jszawierające kod podany poniżej.

    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. W Chrome przejdź do chrome://extensions/(wprowadź to w pasku adresu URL).

  4. Włącz tryb programisty.

  5. Kliknij „Załaduj rozpakowane rozszerzenie”, wybierz folder utworzony w kroku 1 i kliknij „OK”.

Gratulacje! Teraz Google Chrome powinien być nieco mniej denerwujący w użyciu :-).

Ograniczenie: To rozwiązanie nie jest w 100% niezawodne. Jeśli przejdziesz do adresu URL zawierającego parametr wyszukiwania (np. Https://cdnjs.com/#q=fastclick ), w rzadkich przypadkach nadal zostanie dodana niestandardowa wyszukiwarka. Podejrzewam, <link>że dzieje się tak, ponieważ Chrome może przeanalizować tag OpenSearch, zanim skrypt użytkownika lub rozszerzenie będzie miało szansę usunąć go z DOM.

thdoan
źródło
2
Dziwię się, że nikt nie opublikował tego jako oficjalnego rozszerzenia sklepu, wygląda na to, że byłoby popularne. Idealnie chciałbym, aby rozszerzenie zapytało mnie przed dodaniem wyszukiwarki lub mieć ikonę w pasku adresu, która pozwala mi ją dodać, podobnie jak kanały RSS.
ryanmonk
7
Dzięki za wspaniały kod i @shthed dzięki za inspirację! Właśnie wydałem rozszerzenie Google Chrome, które właśnie to robi. Możesz go znaleźć tutaj . Kod źródłowy tutaj . Powiedz mi co myślisz! :-)
Greg Sadetsky
@GregSadetsky Opublikuj to jako odpowiedź i moglibyśmy na niego głosować :)
O'Rooney
24
  1. Tak, jest to zgodne z projektem .
  2. Nie , nie można tego wyłączyć .
Sathyajith Bhat
źródło
2
Uwielbiam tę odpowiedź. Jest to proste, ale pouczające
nXqd
8
Są jednak sposoby, aby to wyłączyć, jak wyjaśniają inne odpowiedzi :)
Enrico,
6
„Tak, jest to zgodne z projektem”. To kiepska i niewłaściwa konstrukcja do automatycznego dodawania rzeczy do systemu bez wkładu użytkowników w sprawę. Złośliwe strony internetowe mogą z tego skorzystać. „Nie, nie można tego wyłączyć”. Oczywiście, gdy jest to oprogramowanie, zawsze istnieje sposób. Bycie leniwym i mówienie, że nie ma, nie jest rozwiązaniem. Ta odpowiedź powinna zostać usunięta, a pisarz ostrzegł.
Alex Summers
Moja niestandardowa wyszukiwarka straciła po wyczyszczeniu pamięci podręcznej. Kilka godzin otworzyłem kilka stron, ale te silniki nie wróciły. Czy wiesz, jak je odzyskać? (Nie chcę dodawać ich ręcznie, zbyt wiele)
Mithril,
ta błędna odpowiedź jest pozytywnie oceniana. Czy nie należy go usuwać ani edytować, aby go poprawić?
Santropedro
10

Tutaj nieco pospieszne obejście, które działa dobrze dla mnie. Po prostu zmień nazwę aliasu wyszukiwania na coś tajemniczego, na przykład „§ $%! / () & /” . Podczas gdy wyszukiwarka wciąż tam jest, nigdy więcej jej nie zobaczysz. Całkiem denerwujące, jeśli nie możesz wyszukiwać w „jenkins”, ponieważ chrome zmusza cię do szukania w jenkins.

atamanroman
źródło
Poważnie - szalone irytujące. Dzięki za wskazówkę.
TJ Biddle
2
Czyni to do mnie jenkins, jirai confluence- to doprowadza mnie do szału, że absolutnie nie może zainicjować ogólną wyszukiwanie z moim pasku adresu do czegokolwiek związanego z tymi trzema. Jest to zdecydowanie najlepsze i jedyne działające obejście, jakie widziałem. Twoje zdrowie.
Matt Clark,
1
@MattClark jiradokładnie! Chcę szukać o Jira, nie w tym!
ErikE
Jak zachowuje się w twoim przypadku? Dla mnie, aby uruchomić wyszukiwanie na stronie , muszę wpisać jego słowo kluczowe w omnibar i nacisnąć Tab . Następnie zmienia się w wyszukiwanie w witrynie i mogę kontynuować wpisywanie ciągu wyszukiwania. Jeśli chcę wyszukać tylko słowo kluczowe lub ciąg zawierający słowo kluczowe, wpisuję słowo kluczowe, spację , resztę ciągu wyszukiwania i Enter i szukam przy użyciu domyślnej wyszukiwarki. Więc to nie przeszkadza sobie nawzajem. Po prostu użyj spacji po słowie kluczowym, aby wyszukiwać za pomocą domyślnej wyszukiwarki, i Tab, aby wyszukiwać w witrynie.
Dawid Ferenczy Rogožan
@DawidFerenczy: Nie tak to działa dla reszty z nas. Przestrzeń nadal korzysta z tej wyszukiwarki. Wpisuję git, a następnie spację, która natychmiast zmienia się, by używać wyszukiwarki git (którą usunąłem niezliczoną ilość razy).
Gerrat,
9

Spróbuj użyć tego prostego skryptu użytkownika:

// ==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]);
    }
}
Ythuang
źródło
1
gdzie dodać ten skrypt? lub wykonać?
mateuscb
2
@mateuscb Możesz go pobrać stąd . Następnie po prostu upuść skrypt na stronie ustawień rozszerzeń w chrome, chrome: // extensions /.
Victor Häggqvist
To. Jest. Niesamowite. Musiałem stworzyć manekina manifest.json(zgodnie z tą odpowiedzią SO i zainstalować go w trybie
deweloperskim
1
Możesz też użyć go w Tamper Monkey. Jeśli jesteś przyzwyczajony do modyfikowania stron internetowych, TM powinna być dodatkiem obowiązkowym.
JasonXA
Możesz także skorzystać z tej linijki: document.querySelector('[type="application/opensearchdescription+xml"]').remove();(patrz moja odpowiedź poniżej).
thdoan
9

Aby szybko usunąć dużą liczbę wyszukiwarek, przejdź do chrome: // settings / searchEngines, naciśnij Ctrl-Shift-J (Opt-Cmd-J w OSX), aby wejść do konsoli Javascript i wklej to:

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);
        });
    });

Być może trzeba będzie wkleić i uruchomić to kilka razy, aby wyczyścić wszystko.

alkohol
źródło
Musiałem skopiować / wkleić to około 10 razy w konsoli programistów, aby usunąć ponad 100 wpisów, które miałem. Żałuję, że nie wiem, jak zamienić go w bookmarket za jednym kliknięciem.
jiggunjer
1
Zmodyfikowałem go, aby najpierw posortować listę w odwrotnej kolejności (w oparciu o modelIndex), ponieważ jego wartość jest resetowana za każdym razem, gdy pozycja jest usuwana (tak więc zazwyczaj kończy się usuwanie około połowy bieżącej listy) podczas pracy od góry do dołu. Podczas pracy od dołu do góry ten problem nie występuje.
alkohol
Pierwszy widziałem, że można to zrobić za jednym razem! Sława.
bnieland
Pracowałem w jednym uruchomieniu na moim systemie Windows 10, instalacja wersji 1709 przeglądarki Chrome w wersji 64.0.3282.186 (oficjalna wersja) (64-bit).
JosephHarriott,
7

Jeśli rozumiem, co właściwie opisujesz, to wcale nie są to strony internetowe. Zamiast tego sam Chrome identyfikuje pola wyszukiwania w witrynach, a następnie dodaje je do listy opcji wyszukiwania na pasku omnibar.

A1: Tak, jest to zachowanie domyślne, ale to nie strony same się dodają, to Chrome dodaje strony.

A2: Nie sądzę, że można wyłączyć to zachowanie, ale można usunąć wyszukiwarki, przechodząc do menu narzędzi -> Opcje -> Zarządzaj wyszukiwarkami; pojawią się pod „Innymi wyszukiwarkami”. Być może możesz określić, że nie należy dodawać go ponownie po jego usunięciu, nie jestem pewien - przypadkiem podoba mi się ta funkcja, więc nie zamierzam jej usuwać.

Kromey
źródło
Dzięki @Kromey, to dobra uwaga. Właśnie zaktualizowałem pytanie, aby odzwierciedlić twój komentarz.
Amelio Vazquez-Reina
1
Ta odpowiedź jest niepoprawna, strony internetowe skutecznie dodają się do Chrome, ponieważ używają tak zwanego dokumentu opisu OpenSearch, aby umożliwić Chromeowi dodanie wyszukiwarki ich witryny do listy wyszukiwarek Chrome, z którymi może współpracować przeglądarka.
Marcel
@Marcel OpenSearch pozwala jedynie stronom opisać swoją funkcję wyszukiwania. Wciąż wymaga to działania przeglądarki. Dlatego nie jest to niepoprawne, po prostu nie podałem specyfikacji technicznej, która jest używana do „... [identyfikowania] pól wyszukiwania na stronach internetowych ...” w mojej odpowiedzi, ponieważ uważam, że skomplikowałoby to prostą sprawę - dokładny mechanizm wyszukiwania pola wyszukiwania przez przeglądarkę nie jest istotny dla przeciętnego użytkownika, tylko dla webmasterów, którzy chcą, aby jego wyszukiwarka została dodana.
Kromey
7

Jednym z rozwiązań, jakie znalazłem w tym zakresie, jest nabycie nawyku rozpoczynania wszystkich poszukiwań spacją. Jeśli wpiszesz ・Splunk median(gdzie oznacza spację), Chrome przeprowadzi wyszukiwanie w Google Splunk median.

Jun-Dai Bates-Kobashigawa
źródło
2
Rozpoczęcie wyszukiwania od znaku zapytania (?) Spowoduje również użycie domyślnej wyszukiwarki.
Ari
Miły! Lubię to bardziej niż przestrzeń.
Jun-Dai Bates-Kobashigawa
1
Dla mnie to nie działało. W Chrome 39, Win 7, wpisanie słowa kluczowego spaceke nie wywołało interfejsu wyszukiwania. Twoje rozwiązanie było jednak przydatne w innych obszarach, w nazewnictwie. Jeśli chcę, aby moje zdefiniowane wyszukiwania pojawiały się nad wynikami zautomatyzowanymi, jedno miejsce przed nazwą i presto. Wszystkie zautomatyzowane wyszukiwarki znajdują się poniżej, a teraz łatwiej nimi zarządzać / usuwać.
JasonXA
wystarczy nacisnąć ctrl + k, aby uzyskać takie zachowanie.
jiggunjer
6

<- Tło ->

Mam dla ciebie alternatywny, mniej ingerujący pomysł (przynajmniej jeśli prowadzisz blokadę reklam, ponieważ tak wielu z nas jest dla własnego zdrowia psychicznego / bezpieczeństwa). Lubię używać istniejących rozszerzeń / skryptów tak bardzo, jak to możliwe, aby uniknąć wzdęcia całego rozszerzenia tylko dla jednej funkcji (najgorszy scenariusz), więc to rozwiązanie działa zgodnie z tą zasadą.

Adblock i jego warianty / następcy (uBlock jest moją bronią z wyboru) mają zdolność blokowania elementów strony internetowej, w tym <link>elementów, które są używane do automatycznego wykrywania opisów OpenSearch (OSD), plików XML zawierających informacje, które pozwalają na automatyczne -dodanie wyszukiwarek i powoduje te bóle głowy. Mówię „zezwala”, ponieważ nie jest to obowiązkowe, ponieważ, o ile moje badania wykazały, Firefox po prostu czyta te informacje i udostępnia je w celu łatwego dodania w polu rozwijanym Wyszukiwarki, zamiast cichego automatycznego dodawania ich, tak jak robi to Chrome.

Korzystanie z tej funkcji opisano w specyfikacjach Opensearch w wielu miejscach:

http://www.opensearch.org/Specifications/OpenSearch/1.1#Autodiscovery_in_RSS.2FAtom (zignoruj ​​konkretną subtelność tej sekcji dla naszych celów, ponieważ jest to tylko przykład jej użycia)


<- Rozwiązanie ->

Ponieważ stwierdza, że ​​opisy OpenSearch (OSD) mają unikalny typ, możemy je odfiltrować za pomocą następującej reguły AdblockPlus / uBlock:

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

Przetestowałem to i reguła pokazuje prawidłowe dopasowanie na moich stronach testowych (filehippo.com itp.), A wyszukiwarki nie dodają już automatycznego dodawania, więc uważam, że jest to pełne rozwiązanie.


Krótka notka na temat historii, którą znalazłem za tym: inżynierowie Chromium kilkakrotnie na przestrzeni lat oznaczyli ten „WontFix” (wielokrotnie żądano opcji / flagi wyłączania zaawansowanego użytkownika), stwierdzając, że jest to problem niszowy od czasu funkcja jest „ogólnie użyteczna”, ich stanowisko jest takie, że problemy niszowe powinny być rozwiązywane przez rozszerzenia lub skrypty firm trzecich, a nie przez deweloperów dodających niezliczone flagi i tym podobne, aby zaspokoić wszystkie zachcianki, więc w zasadzie to, co tutaj robimy, jest po prostu zgodnie z ich preferencjami i sprawia, że ​​jest przyjemny i łatwy w zarządzaniu.

Powodzenia! Jeśli ktokolwiek spróbuje tego, daj nam znać, jak to działa!

Wieża
źródło
1
To nie działało dla mnie (spróbuj wyszukać na cdnjs.com ). Doszedłem do wniosku, że nie ma w 100% niezawodnego rozwiązania :(
thdoan
To też nie działa dla mnie - jeśli wyszukuję na 4inkjets.com , dodaje się ją jako wyszukiwarkę (o dziwo, nie mogę znaleźć application/opensearchdescription+xmllinku na stronie).
Ivan Kozik