Graças ao código do @ 10basetom e inspirado pelo @shthed, lancei o Não adicione mecanismos de pesquisa personalizados à extensão Chrome, que faz exatamente isso.
Você encontrará o código-fonte aqui .
Deixe-me saber o que você pensa!
Tenho notado que determinados websites (por exemplo, sites do Stack Exchange, da Dell etc.) são adicionados automaticamente à minha lista de mecanismos de pesquisa no Google Chrome.
Eles até adicionam um atalho de teclado à sua entrada. Aqui estão alguns exemplos:
Q1: Este é o comportamento padrão no Chrome? (para permitir que os sites se adicionem à lista de mecanismos de pesquisa?)
Q2: É possível desativar esse comportamento no Chrome?
Observação: estou executando a versão mais recente do Chrome: 11.0.696.57 no Windows 7 64 e tenho apenas uma extensão instalada: o encurtador de URL do Google.
Graças ao código do @ 10basetom e inspirado pelo @shthed, lancei o Não adicione mecanismos de pesquisa personalizados à extensão Chrome, que faz exatamente isso.
Você encontrará o código-fonte aqui .
Deixe-me saber o que você pensa!
Isso estava me deixando absolutamente insano, então encontrei uma solução hackiana, mas eficaz, para o problema.
O Chrome armazena os mecanismos de pesquisa em um banco de dados sqlite3 simples. Descobri que você pode criar um disparador quando o cromo vai para adicionar o mecanismo de pesquisa que faz com que a instrução de inserção do banco de dados seja ignorada.
Observe que os mecanismos de pesquisa ainda são mantidos na memória, então eles ainda serão exibidos na lista até que o navegador seja reiniciado . No entanto, você não terá que apagá-los o tempo todo e, portanto, se desejar adicionar seus próprios mecanismos de pesquisa, não precisará se preocupar em excluí-los acidentalmente (sim, a adição manual dos mecanismos de pesquisa ainda funcionará).
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
ou ~/.config/chromium/Default/Web Data
O Chrome deve estar desativado neste momento.
O site oficial sqlite tem uma página de download com um utilitário de linha de comando pré-compilado para os vários sistemas operacionais. Embora qualquer editor capaz de trabalhar com bancos de dados sqlite3 funcione.
Para o utilitário de linha de comando, use um comando como o seguinte (não se esqueça de escapar ou citar o espaço no nome do arquivo):
sqlite3 /path/to/Web\ Data
CREATE TRIGGER no_auto_keywords BEFORE INSERT ON keywords WHEN (NEW.originating_url IS NOT NULL AND NEW.originating_url != '') BEGIN SELECT RAISE(IGNORE); END;
Você está feito. Feche o editor e inicie o backup do Chrome.
A maneira como funciona é que, quando o cromo adiciona um mecanismo de pesquisa à tabela keywords
, o chrome define o campo originating_url
para o site de onde veio. O gatilho basicamente procura por inserções com um campo originating_url
não vazio e emite um RAISE(IGNORE)
que faz com que a instrução seja ignorada silenciosamente.
Os mecanismos de pesquisa adicionados manualmente não têm um originating_url
e, portanto, o acionador permite que eles sejam adicionados.
Existem duas maneiras de fazer isso:
Adicione este usuário ao Tamper Monkey :
var elOpenSearch = document.querySelector('[type="application/opensearchdescription+xml"]');
if (elOpenSearch) elOpenSearch.remove();
Se você não é um usuário normal do Tamper Monkey e não tem vontade de desperdiçar 15-20 MB de RAM apenas para carregar a extensão Tamper Monkey para essa finalidade, então você pode rolar sua própria extensão super leve que não vai consumir qualquer memória. As instruções são fornecidas abaixo.
Como criar sua própria extensão para remover a tag OpenSearch <link>
e impedir que o Google Chrome adicione automaticamente mecanismos de pesquisa:
Crie uma pasta onde você colocará os arquivos de extensão.
Dentro desta pasta, crie dois arquivos de texto chamados manifest.json
e content.js
contendo o código fornecido abaixo.
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();
No Chrome, vá para chrome://extensions/
(insira isso na barra de URL).
Ativar o modo de desenvolvedor.
Clique em 'Carregar extensão descompactada', selecione a pasta criada no passo 1 e clique em 'OK'.
Parabéns! Agora, o Google Chrome deve ser um pouco menos irritante de usar: -).
Limitação: Esta solução não é 100% confiável. Se você acessar um URL que contém um parâmetro de pesquisa (por exemplo, link ), em casos raros, um mecanismo de pesquisa personalizado ainda ser adicionado. Eu suspeito que isso ocorra porque o Chrome pode analisar a tag OpenSearch <link>
antes que o userscript ou a extensão tenham a chance de removê-la do DOM.
Aqui está uma solução um tanto hacky que funciona bem para mim. Basta renomear o alias de pesquisa para algo críptico como "§ $%! / () &" / . Embora o mecanismo de pesquisa ainda esteja lá, você nunca mais o verá. Muito irritante se você não pode google por "Jenkins" porque chrome obriga você a procurar em Jenkins.
Tente usar este simple userscript:
// ==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]);
}
}
Para remover rapidamente um grande número de mecanismos de pesquisa, navegue até chrome: // settings / searchEngines, pressione Ctrl-Shift-J (Opt-Cmd-J no OSX) para entrar no console Javascript e cole:
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);
});
});
Pode ser necessário colar e executar isso algumas vezes para limpar tudo.
Se eu estou entendendo o que você está descrevendo corretamente, então este não é o site fazendo nada. Em vez disso, o próprio Chrome identifica as caixas de pesquisa nos sites e, em seguida, adiciona-as à sua lista de opções de pesquisa no omnibar.
A1: Sim, esse é o comportamento padrão, mas não são os sites que se adicionam, é o Chrome que adiciona os sites.
A2: Eu não acredito que você pode desativar esse comportamento, no entanto, você pode remover os motores de busca, indo para o menu de ferramentas - > Opções - > Gerenciar mecanismos de pesquisa; eles aparecerão em "Outros mecanismos de pesquisa". Você pode ser capaz de especificar que um não deve ser adicionado novamente quando você removê-lo, não tenho certeza - por acaso eu gosto desse recurso, então não vou tentar removê-lo.
Uma solução que eu encontrei para isso é adquirir o hábito de iniciar todas as minhas pesquisas com um espaço. Se você digitar ・Splunk median
(onde ・
representa o caractere de espaço), o Chrome realizará uma pesquisa no Google em Splunk median
.
< - Antecedentes - >
Eu tenho uma ideia alternativa e menos intrusiva para você aqui (pelo menos se você estiver usando um bloqueador de anúncios, como muitos de nós são para nossa sanidade / segurança). Eu gosto de usar extensões / scripts existentes o máximo possível para evitar o inchaço de uma extensão inteira por apenas um recurso (o pior cenário possível), portanto, essa solução funciona de acordo com esse princípio.
O Adblock, e suas variantes / sucessores (uBlock é minha arma de escolha), tem a capacidade de bloquear elementos de página da Web, incluindo <link>
elements, que é usado para autodescoberta de Descrições OpenSearch (OSDs), os arquivos XML que contém as informações que permitem a adição automática de mecanismos de pesquisa e nos causam essas dores de cabeça. Digo "permissões" porque não é obrigatório, já que, segundo minha pesquisa, o Firefox simplesmente lê essas informações e as torna disponíveis para fácil adição na caixa suspensa Mecanismos de pesquisa, em vez de adicioná-las discretamente como o Chrome faz.
O uso do recurso é descrito nas especificações do Opensearch em vários lugares:
link (ignore o subtítulo específico desta seção para os nossos propósitos, pois é apenas um exemplo disso em uso)
< - A solução - >
Como afirma que as Descrições do OpenSearch (OSDs) têm um tipo único, podemos filtrá-las com a seguinte regra AdblockPlus / uBlock:
##link[type="application/opensearchdescription+xml"]
Eu testei isso e a regra mostra a correspondência correta nos meus sites de teste (filehippo.com etc) e os mecanismos de pesquisa não são mais adicionados automaticamente, então acredito que essa seja uma solução completa.
Uma rápida nota sobre a história que encontrei por trás disso: os engenheiros do Chromium rotularam esse "WontFix" várias vezes ao longo dos anos (uma opção / sinalizador de desativação do usuário avançado foi solicitada várias vezes) informando que isso é considerado um nicho problema desde que o recurso é "geralmente útil", sua posição é que os problemas de nicho devem ser resolvidos por extensões ou scripts de terceiros em vez de pelos desenvolvedores adicionando inúmeras bandeiras e afins para atender a todos os caprichos, então basicamente o que estamos fazendo aqui é apenas de acordo com a sua preferência e mantém-lo agradável e gerenciável.
Melhor da sorte! Se alguém mais tentar isso, deixe-me saber como funciona!
Você pode evitar usar ou criar extensões e fazer isso sozinho no console JavaScript do navegador. Basta navegar até chrome: // settings / searchEngines e clicar em F12 para abrir o painel Inspecionar. Cole isso no console e pressione Enter:
Array.prototype.forEach.call(document.querySelectorAll('#other-search-engine-list .row-delete-button'), function(el) { el.click(this); })
Às vezes, são necessárias algumas tentativas para obter todas as entradas, então você pode ter que fazer isso mais de uma vez para se livrar de todas elas.