Google Chrome aggiunge automaticamente siti Web al mio elenco di motori di ricerca?


121

Ho notato che alcuni siti Web (ad es. Siti Stack Exchange, Dell, ecc.) Vengono automaticamente aggiunti al mio elenco di motori di ricerca in Google Chrome.

Aggiungono anche una scorciatoia da tastiera alla loro voce. Ecco alcuni esempi:

  • Dell: Tastiera -> Dell.com
  • Stack Web master di scambio: Tastiera -> webmasters.stackexchange.com
  • Reuters: Tastiera -> reuters.com

Q1: è questo il comportamento predefinito in Chrome? (lasciare che i siti web si aggiungano all'elenco dei motori di ricerca?)

Q2: è possibile disabilitare questo comportamento in Chrome?

Nota: sto utilizzando l'ultima versione di Chrome: 11.0.696.57 su Windows 7 64 e ho installato solo un'estensione: Google URL shortener.


33
@ Sathya, perché? Voglio avere la flessibilità per disabilitarlo. Se la tua domanda è: perché dovrei disabilitare qualcosa del genere : l'interfaccia per modificare i motori di ricerca non è particolarmente buona, e man mano che l'elenco cresce è difficile dire quali motori di ricerca ho aggiunto manualmente e quali sono stati aggiunti automaticamente. È anche più difficile trovare una voce particolare all'interno di un ampio elenco.
Amelio Vazquez-Reina,

16
@Sathya - Molte ragioni: * Convenienza: a volte vuoi cercare un sito, piuttosto che su quel sito. * Coerenza: l'aggiunta casuale e silenziosa di nuovi "motori di ricerca" provoca comportamenti imprevisti nella omnibox. * Privacy: Chrome non ti informa quando decide di aggiungere nuovi "motori di ricerca" e non scompaiono quando cancelli la cronologia di navigazione. * Cortesia comune: non dovrei essere in grado di scegliere se abilitare questa "funzione" è abilitata o, in mancanza, almeno scegliere di essere informato quando Chrome decide di aggiungere un sito, in modo da poter contrastare questa decisione?
Fenesia,

1
Sembra che non sia degno di decidere me stesso quali motori di ricerca dovrebbero essere a conoscenza del mio browser.
Anders Lindén

Risposte:


34

Grazie al codice di @ 10basetom e ispirato a @shthed, ho rilasciato l' estensione Chrome Non aggiungere motori di ricerca personalizzati che fa proprio questo.

Troverai il codice sorgente qui .

Fatemi sapere cosa ne pensate!


1
@ O'Rooney Grazie! Vedo alcuni siti sfuggire di tanto in tanto dall'estensione, ma è molto meglio ripulire alcuni motori di ricerca in un mese piuttosto che dover fare una "purga" quasi completa settimanale ... Saluti!
Greg Sadetsky,

4
In realtà non funziona più: molti motori di ricerca personalizzati continuano ad essere aggiunti.
onnodb,

1
@onnodb grazie per la nota, purtroppo non ho avuto abbastanza tempo per aggiornare l'estensione.
Greg Sadetsky,

1
@onnodb, Greg, per favore (o altri interessati) prova questo fork ? Dai un'occhiata, quindi carica .../srccome estensione decompressa. Fammi sapere come va. Grazie!
Cxw

3
Piccola nota che l'estensione è appena stata aggiornata con un algoritmo di rilevamento / blocco molto migliorato, grazie a molti sforzi di numerosi collaboratori! Dagli un minuto se non funzionava bene per te prima. Saluti
Greg Sadetsky

61

Questo mi stava rendendo assolutamente pazzo, quindi ho trovato una soluzione hacker, ma efficace al problema.

Chrome memorizza i suoi motori di ricerca in un semplice database sqlite3. Ho scoperto che è possibile creare un trigger quando Chrome va ad aggiungere il motore di ricerca che fa ignorare l'istruzione di inserimento del database.
Tieni presente che i motori di ricerca rimangono ancora in memoria, quindi verranno comunque visualizzati nell'elenco fino al riavvio del browser . Tuttavia non dovrai cancellarli continuamente, quindi se vuoi aggiungere i tuoi motori di ricerca, non dovrai preoccuparti di cancellarli accidentalmente (sì, l'aggiunta manuale dei motori di ricerca continuerà a funzionare).

Innanzitutto è necessario individuare il Web datafile.

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

Quindi aprilo con un editor sqlite3.

Chrome deve essere chiuso a questo punto.

Il sito Web sqlite ufficiale ha una pagina di download con un'utilità della riga di comando precompilata per i vari sistemi operativi. Anche se qualsiasi editor in grado di lavorare con i database sqlite3 funzionerà.

Per l'utilità della riga di comando, utilizzare un comando come il seguente (non dimenticare di sfuggire o citare lo spazio nel nome del file):

sqlite3 /path/to/Web\ Data

Aggiungi il grilletto.

CREA TRIGGER no_auto_keywords PRIMA DI INSERIRE parole chiave QUANDO (NEW.originating_url NON È NULL E NEW.originating_url! = '') INIZIA SELEZIONA AUMENTO (IGNORA); FINE;

Hai finito. Chiudi l'editor e avvia il backup di Chrome.


Il modo in cui funziona è che quando Chrome va ad aggiungere automaticamente un motore di ricerca alla keywordstabella, Chrome imposta il originating_urlcampo sul sito web da cui proviene. Il trigger cerca fondamentalmente tutti gli inserti con un originating_urlcampo non vuoto e RAISE(IGNORE)genera un messaggio che fa saltare silenziosamente l'istruzione.
I motori di ricerca aggiunti manualmente non ne hanno originating_url, e quindi il trigger consente di aggiungerli.


2
Dopo aver provato alcuni editor, SQLiteStudio è il mio preferito. Non sono in alcun modo correlato a questo prodotto. Solo uno strumento utile che ho trovato dopo alcune ricerche.
mateuscb,

1
Questo è fantastico e funziona. Tuttavia, per me, Chrome ha ancora aggiunto i motori di ricerca, non nel database, ma in un'altra cartella "Sync Data Backup". Disabilita le autorizzazioni di scrittura per quella cartella in Windows / Linux e andrà per sempre.
Martin Hansen,

Questo sembra non funzionare più, almeno in Chrome v47beta. Dopo aver riavviato Chrome, il motore di ricerca aggiunto automaticamente è ancora nell'elenco, anche se digitando la parola chiave non viene più attivato.
thdoan

Cordiali saluti: 1 / fare prima una copia di questo file nel caso in cui si incasini :) 2 / su Mac 10.11.4 (El Capitan) Non sono stato in grado di aprire il file / database con sqlitebrowser.app ( "Error: unable to open database "~/Library/Application Support/Google/Chrome/Default/Web Data": unable to open database file). 3 / se provi ad eseguire il CREATE TRIGGERcomando mentre Chrome è aperto, devi Error: database is lockedprima uscire da Chrome. 4 / una volta chiuso Chrome, questo ha aperto correttamente il database: /Volumes/Macintosh\ HD/Applications/sqlite3 ./Web\ Data(in Terminal, quando nella directory specificata) HTH
sming

Ho provato a eliminare dalle parole chiave in cui id> 2; e google li sincronizza semplicemente dal server. Immagino sia troppo tardi dopo che ho già installato migliaia di motori di ricerca.
Qi Fan

34

Esistono due modi per farlo:

  1. Aggiungi questo script utente a Tamper Monkey :

    var elOpenSearch = document.querySelector('[type="application/opensearchdescription+xml"]');
    if (elOpenSearch) elOpenSearch.remove();
  2. Se non sei un normale utente di Tamper Monkey e non hai voglia di sprecare 15-20 MB di RAM solo per caricare l'estensione Tamper Monkey a questo scopo, puoi creare la tua estensione super leggera che non consumerà memoria . Le istruzioni sono fornite di seguito.

Come creare la propria estensione per rimuovere il <link>tag OpenSearch e impedire a Chrome di aggiungere automaticamente motori di ricerca:

  1. Crea una cartella in cui inserirai i file delle estensioni.

  2. All'interno di questa cartella, creare due file di testo denominati manifest.jsone content.jscontenenti il ​​codice fornito di seguito.

    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. In Chrome, vai a chrome://extensions/(inseriscilo nella barra degli URL).

  4. Abilita modalità sviluppatore.

  5. Fare clic su "Carica estensione decompressa", selezionare la cartella creata nel passaggio 1 e fare clic su "OK".

Congratulazioni! Ora Google Chrome dovrebbe essere un po 'meno fastidioso da usare :-).

Limitazione: questa soluzione non è affidabile al 100%. Se vai a un URL che contiene un parametro di ricerca (ad esempio, https://cdnjs.com/#q=fastclick ), in rari casi verrà comunque aggiunto un motore di ricerca personalizzato. Sospetto che ciò sia dovuto al fatto che Chrome può analizzare il <link>tag OpenSearch prima che lo script utente o l'estensione abbiano la possibilità di rimuoverlo dal DOM.


2
Sono sorpreso che nessuno l'abbia pubblicato come estensione ufficiale del negozio, sembra che sarebbe popolare. Idealmente, vorrei che un'estensione mi chiedesse prima di aggiungere un motore di ricerca o che nella barra degli indirizzi fosse presente un'icona che mi consente di aggiungerlo, proprio come i feed RSS.
Ryanmonk,

7
Grazie per l'ottimo codice e @shthed grazie per l'ispirazione! Ho appena rilasciato un'estensione di Google Chrome che fa proprio questo. Puoi trovarlo qui . Codice sorgente qui . Fatemi sapere cosa ne pensate! :-)
Greg Sadetsky

@GregSadetsky Pubblica questo come risposta e potremmo votare per questo :)
O'Rooney

24

2
Adoro questa risposta. Questo è semplice ma informativo
nXqd

8
Eppure ci sono modi per disabilitarlo, come spiegano altre risposte :)
Enrico

6
"Sì, questo è di progettazione." È un progetto inadeguato e improprio aggiungere automaticamente cose a un sistema senza che gli utenti inseriscano la questione. I siti Web dannosi potrebbero facilmente trarne vantaggio. "No, non c'è modo di disabilitarlo." Ovviamente c'è, quando si tratta di software, c'è sempre un modo. Essere pigri e dire che non c'è, non è una soluzione. Questa risposta dovrebbe essere rimossa e lo scrittore ha avvertito.
Alex Summers,

Il mio motore di ricerca personalizzato si è perso dopo aver cancellato la cache. Ho aperto alcuni siti per ore ma questi motori non sono tornati indietro. Sai come recuperarli? (Non voglio aggiungerli manualmente, troppi)
Mithril

questa risposta sbagliata viene valutata. Non dovrebbe essere eliminato o modificato per correggerlo?
Santropedro,

10

Ecco una soluzione alquanto confusa che funziona bene per me. Basta rinominare l'alias di ricerca in qualcosa di criptico come "§ $%! / () & /" . Mentre il motore di ricerca è ancora lì, non lo vedrai mai più. Abbastanza fastidioso se non riesci a cercare "jenkins" su Google perché Chrome ti costringe a cercare in jenkins.


Scherzi a parte - pazzo fastidioso. Grazie per il consiglio.
TJ Biddle,

2
Lo fa a me per jenkins, jirae confluence- Mi fa assolutamente pazzesco che non posso avviare una ricerca generale dalla mia barra degli indirizzi per tutto ciò che riguarda questi tre. Questo è di gran lunga la soluzione migliore e unica che abbia mai visto. Saluti.
Matt Clark,

1
@MattClark jiraesattamente! Voglio cercare jira, non in esso!
ErikE,

Come si comporta nel tuo caso? Per me, per attivare la ricerca sul sito , devo digitare la sua parola chiave in omnibar premendo Tab . Quindi passa alla ricerca sul sito e posso continuare a digitare la stringa di ricerca. Se voglio cercare solo la parola chiave o una stringa contenente la parola chiave, scrivo la parola chiave, Spazio , il resto della stringa di ricerca e Invio e sto cercando utilizzando il motore di ricerca predefinito. Quindi non interferisce l'uno con l'altro. Basta usare lo spazio dopo la parola chiave per cercare usando il motore di ricerca predefinito e la scheda per cercare sul sito.
Dawid Ferenczy Rogožan

@DawidFerenczy: non è così che funziona per il resto di noi. Uno spazio utilizza ancora quel motore di ricerca. Scrivo git, quindi uno spazio e cambia istantaneamente per usare il motore di ricerca di Git (che ho rimosso innumerevoli volte).
Gerrat,

9

Prova a usare questo semplice script utente:

// ==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
dove aggiungere questo script? o eseguirlo?
mateuscb,

2
@mateuscb Puoi ottenerlo da qui . Quindi rilascia lo script nella pagina delle impostazioni delle estensioni in chrome, chrome: // extensions /.
Victor Häggqvist

Questo. È. Eccezionale. Avevo bisogno di creare un manichino manifest.json(come da questa risposta SO e installarlo tramite la modalità dev (come estensione non compressa), ma a parte questo ha funzionato come un piacere.
Womble,

1
Oppure puoi usarlo in Tamper Monkey. Se sei abituato ad apportare modifiche ai siti Web, TM dovrebbe essere un componente aggiuntivo indispensabile.
JasonXA,

Puoi anche usare questo one-liner: document.querySelector('[type="application/opensearchdescription+xml"]').remove();(vedi la mia risposta sotto).
thdoan

9

Per rimuovere rapidamente un gran numero di motori di ricerca, vai su chrome: // settings / searchEngines, premi Ctrl-Shift-J (Opt-Cmd-J su OSX) per accedere alla console Javascript e incollalo:

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

Potrebbe essere necessario incollarlo ed eseguirlo alcune volte per cancellare tutto.


Ho dovuto copiare / incollare questo circa 10 volte nella console di sviluppo per rimuovere le oltre 100 voci che avevo. Vorrei sapere come trasformarlo in un bookmarklet con un solo clic.
jiggunjer,

1
L'ho modificato per ordinare prima l'elenco al contrario (basato su modelIndex), poiché il suo valore viene ripristinato ogni volta che una voce viene eliminata (quindi di solito si finisce per eliminare solo metà dell'elenco corrente) quando si lavora dall'alto verso il basso. Quando si lavora dal basso verso l'alto, questo problema non si verifica.
alcool,

Il primo che ho visto che può farlo in una corsa! Complimenti.
bnieland,

Ha funzionato in un'unica esecuzione su Windows 10, versione 1709 installazione di Chrome versione 64.0.3282.186 (build ufficiale) (64 bit).
JosephHarriott

7

Se sto capendo cosa stai descrivendo correttamente, allora questi non sono i siti web che fanno nulla. Piuttosto, Chrome stesso identifica le caselle di ricerca sui siti Web e quindi aggiunge quelle al suo elenco di opzioni di ricerca nella barra degli strumenti.

A1: Sì, questo è un comportamento predefinito, ma non sono i siti Web che si aggiungono, è Chrome che aggiunge i siti Web.

A2: Non credo che tu possa disabilitare questo comportamento, tuttavia puoi rimuovere i motori di ricerca andando nel menu degli strumenti -> Opzioni -> Gestisci motori di ricerca; appariranno in "Altri motori di ricerca". Potresti essere in grado di specificare che non si dovrebbe aggiungere nuovamente quando lo rimuovi, non sono sicuro - mi piace questa funzione, quindi non proverò a rimuoverli.


Grazie @Kromey, è un buon punto. Ho appena aggiornato la domanda per riflettere il tuo commento.
Amelio Vazquez-Reina,

1
Questa risposta non è corretta, i siti Web si aggiungono effettivamente a Chrome poiché utilizzano quello che viene chiamato documento di descrizione OpenSearch per consentire a Chrome di aggiungere il motore di ricerca del proprio sito Web all'elenco di motori di ricerca di Chrome con cui il browser può interfacciarsi.
Marcel,

@Marcel OpenSearch consente semplicemente ai siti di descrivere la loro funzione di ricerca. Richiede ancora che il browser agisca su questo. Pertanto, ciò non è errato, non ho semplicemente incluso le specifiche tecniche utilizzate per "... [identificare] caselle di ricerca sui siti Web ..." nella mia risposta, poiché ritenevo che avrebbe complicato una questione altrimenti semplice - l'esatto meccanismo di come il browser trova una casella di ricerca non è rilevante per l'utente medio, ma solo per i webmaster che desiderano che venga aggiunto il loro.
Kromey,

7

Una soluzione alternativa che ho trovato per questo è acquisire l'abitudine di iniziare tutte le mie ricerche con uno spazio. Se digiti ・Splunk median(dove rappresenta il carattere dello spazio), Chrome eseguirà una ricerca su Google Splunk median.


2
L'avvio della ricerca con un punto interrogativo (?) Utilizzerà anche il motore di ricerca predefinito.
Ari,

Bello! Mi piace di più dello spazio.
Jun-Dai Bates-Kobashigawa,

1
Per me non ha funzionato. Su Chrome 39, Win 7, digitando spacekeyword non è stata visualizzata l'interfaccia di ricerca. Tuttavia, la tua soluzione è stata utile altrove, nella denominazione. Se voglio che le mie ricerche definite appaiano sopra a quelle automatizzate, uno spazio davanti al nome e presto. Tutti i motori di ricerca automatizzati vanno sotto e ora è più facile gestirli / rimuoverli.
JasonXA,

basta premere ctrl + k per ottenere quel comportamento.
jiggunjer,

6

<- Sfondo ->

Ho un'idea alternativa e meno invadente per te qui (almeno se stai eseguendo un blocco degli annunci, poiché molti di noi sono per la nostra sanità mentale / sicurezza). Mi piace usare estensioni / script esistenti il ​​più possibile per evitare il gonfiamento di un'intera estensione per una sola funzione (scenario peggiore), quindi questa soluzione funziona secondo questo principio.

Adblock e le sue varianti / successori (uBlock è la mia arma preferita), hanno la capacità di bloccare gli elementi della pagina Web, inclusi gli <link>elementi, che viene utilizzato per la scoperta automatica delle descrizioni OpenSearch (OSD), i file XML che contengono le informazioni che consentono l'auto -aggiungere motori di ricerca e ci causa questi mal di testa. Dico "permessi" perché non è assolutamente obbligatorio, dal momento che, per quanto ha dimostrato la mia ricerca, Firefox legge semplicemente queste informazioni e le rende disponibili per una facile aggiunta nella casella a discesa Motori di ricerca, piuttosto che aggiungerle silenziosamente come fa Chrome.

L'uso della funzione è descritto nelle specifiche di Opensearch in più punti:

http://www.opensearch.org/Specifications/OpenSearch/1.1#Autodiscovery_in_RSS.2FAtom (ignora la sottigliezza specifica di questa sezione per i nostri scopi in quanto ne è solo un esempio in uso)


<- La soluzione ->

Dato che afferma che le descrizioni OpenSearch (OSD) hanno un tipo univoco, possiamo filtrarle con la seguente regola AdblockPlus / uBlock:

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

Ho provato questo e la regola mostra la corrispondenza corretta sui miei siti di test (filehippo.com ecc.) E i motori di ricerca non si aggiungono più automaticamente, quindi credo che questa sia una soluzione completa.


Una breve nota sulla storia che ho trovato dietro questo: gli ingegneri di Chromium hanno etichettato questo "WontFix" più volte nel corso degli anni (è stata richiesta più volte un'opzione / flag di disabilitazione dell'utente / power) affermando che questo è considerato un problema di nicchia dal caratteristica è "generalmente utile", la loro posizione è che i problemi di nicchia dovrebbero essere risolti da estensioni o script di terze parti piuttosto che dagli sviluppatori che aggiungono innumerevoli flag e simili per soddisfare tutti i capricci, quindi sostanzialmente quello che stiamo facendo qui è solo in linea con le loro preferenze e lo mantiene piacevole e gestibile.

Buona fortuna! Se qualcun altro ci prova, fammi sapere come funziona!


1
Questo non ha funzionato per me (prova a cercare su cdnjs.com ). Sono giunto alla conclusione che non esiste una soluzione affidabile al 100% :(
fino al

Questo non funziona neanche per me - se cerco su 4inkjets.com viene aggiunto come motore di ricerca (stranamente, non riesco a trovare un application/opensearchdescription+xmllink sulla pagina.)
Ivan Kozik,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.