Ame*_*ina 140 google-chrome search-engines
我注意到某些网站(例如 Stack Exchange 网站、Dell 等)会自动添加到我在 Google Chrome 中的搜索引擎列表中。
他们甚至为他们的条目添加了一个键盘快捷键。这里有些例子:
问题 1:这是 Chrome 中的默认行为吗?(让网站将自己添加到搜索引擎列表中?)
Q2:是否可以在 Chrome 中禁用此行为?
注意:我在 Windows 7 64 上运行最新版本的 Chrome:11.0.696.57,并且我只安装了一个扩展程序:Google URL Shorter。
phe*_*mer 68
这让我完全疯了,所以我找到了一个骇人听闻但有效的解决方案。
Chrome 将其搜索引擎存储在一个简单的 sqlite3 数据库中。我发现当 chrome 去添加导致数据库插入语句被忽略的搜索引擎时,你可以创建一个触发器。
请注意,搜索引擎仍保留在内存中,因此它们仍会显示在列表中,直到浏览器重新启动。但是,您不必一直清除它们,因此如果您想添加自己的搜索引擎,则不必担心意外删除它们(是的,手动添加搜索引擎仍然有效)。
Web data文件。Mac OS X: ~/Library/Application Support/Google/Chrome/Default/Web Data
经验值: C:\Documents and Settings\<username>\Local Settings\Application Data\Google\Chrome\User Data\Default\Web Data
远景/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
此时必须关闭 Chrome。
官方 sqlite 网站有一个下载页面,其中包含适用于各种操作系统的预编译命令行实用程序。尽管任何能够使用 sqlite3 数据库的编辑器都可以使用。
对于命令行实用程序,请使用如下命令(不要忘记转义或引用文件名中的空格):
sqlite3 /path/to/Web\ Data
Run Code Online (Sandbox Code Playgroud)
CREATE TRIGGER no_auto_keywords BEFORE INSERT ON Keywords WHEN (NEW.originating_url IS NOT NULL AND NEW.originating_url != '') BEGIN SELECT RAISE(IGNORE); 结尾;
你完成了。关闭编辑器并启动 chrome 备份。
它的工作方式是,当 chrome 向表中添加自动添加搜索引擎时keywords,chrome 将该originating_url字段设置为它来自的网站。触发器基本上查找具有非空originating_url字段的任何插入,并发出RAISE(IGNORE)导致该语句被静默跳过的 a 。
手动添加的搜索引擎没有originating_url,因此触发器允许添加它们。
Gre*_*sky 44
感谢@10basetom 的代码并受到@shthed 的启发,我发布了不添加自定义搜索引擎Chrome 扩展程序,它就是这样做的。
您可以在此处找到源代码。
让我知道你的想法!
thd*_*oan 37
有两种方法可以做到这一点:
将此用户脚本添加到Tamper Monkey:
var elOpenSearch = document.querySelector('[type="application/opensearchdescription+xml"]');
if (elOpenSearch) elOpenSearch.remove();
Run Code Online (Sandbox Code Playgroud)如果您不是普通的 Tamper Monkey 用户,并且不想为了加载 Tamper Monkey 扩展而浪费 15-20 MB 的 RAM,那么您可以推出自己的超轻量级扩展,它不会消耗任何内存. 下面提供了说明。
如何创建自己的扩展程序以删除 OpenSearch<link>标签并阻止 Chrome 自动添加搜索引擎:
创建一个文件夹,您将在其中放置扩展文件。
在此文件夹中,创建两个名为manifest.json并content.js包含下面提供的代码的文本文件。
清单文件
{
"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://*/*"
]
}
Run Code Online (Sandbox Code Playgroud)
内容.js
var elOpenSearch = document.querySelector('[type="application/opensearchdescription+xml"]');
if (elOpenSearch) elOpenSearch.remove();
Run Code Online (Sandbox Code Playgroud)在 Chrome 中,转到chrome://extensions/(在 URL 栏中输入)。
启用开发者模式。
单击“加载解压后的扩展”,选择您在步骤 1 中创建的文件夹,然后单击“确定”。
恭喜!现在使用谷歌浏览器应该不那么烦人了:-)。
限制:此解决方案并非 100% 可靠。如果您转到包含搜索参数的 URL(例如https://cdnjs.com/#q=fastclick),则在极少数情况下仍会添加自定义搜索引擎。我怀疑这是因为 Chrome 可以<link>在用户脚本或扩展程序有机会将其从 DOM 中删除之前解析 OpenSearch标记。
alc*_*hol 11
编辑:这不再适用于 Chrome 84 及更高版本
要快速删除大量搜索引擎,请浏览至 chrome://settings/searchEngines,按 Ctrl-Shift-J(在 OSX 上为 Opt-Cmd-J)进入 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);
});
});
Run Code Online (Sandbox Code Playgroud)
您可能需要粘贴并运行几次以清除所有内容。
ata*_*man 10
这是一个有点hacky的解决方法,对我来说很好用。只需将搜索别名重命名为诸如"§$%!/()&/" 之类的神秘名称。虽然搜索引擎仍然存在,但您永远不会再看到它。如果您无法在 google 上搜索“jenkins”,那就很烦人了,因为 chrome 会强制您在 jenkins 中进行搜索。
小智 8
尝试使用这个简单的用户脚本:
// ==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]);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我理解您正确描述的内容,那么这根本不是网站在做任何事情。相反,Chrome 本身会识别网站上的搜索框,然后自己将这些框添加到多功能栏中的搜索选项列表中。
A1:是的,这是默认行为,但这不是网站添加自己,而是 Chrome 添加网站。
A2:我不相信您可以禁用此行为,但是您可以通过转到工具菜单 -> 选项 -> 管理搜索引擎来删除搜索引擎;它们将出现在“其他搜索引擎”下。您可以指定在删除它时不应重新添加一个,我不确定——我碰巧喜欢这个功能,所以我不会尝试删除它们。
小智 7
我为此找到的一种解决方法是养成以空格开始所有搜索的习惯。如果您键入?Splunk median(其中?代表空格字符),Chrome 将在 上执行 Google 搜索Splunk median。
<-- 背景-->
我在这里为您提供了一个替代的、不那么引人注目的想法(至少如果您正在运行广告拦截器,因为我们中的许多人都是为了我们自己的理智/安全)。我喜欢尽可能多地使用现有的扩展/脚本,以避免仅针对一个功能(最坏情况)的整个扩展的膨胀,因此该解决方案在此原则下工作。
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”(多次请求高级用户禁用选项/标志),指出这被认为是一个利基问题,因为功能“普遍有用”,他们的立场是利基问题应该通过扩展或 3rd 方脚本来解决,而不是由开发人员添加无数标志等来迎合所有的突发奇想,所以基本上我们在这里所做的只是符合他们的喜好,并保持良好和易于管理。
祝你好运!如果其他人尝试此操作,请让我们/我知道它是如何工作的!
| 归档时间: |
|
| 查看次数: |
42348 次 |
| 最近记录: |