在Google Chrome浏览器中,是否可以删除与特定查询匹配的所有搜索历史记录(例如,en.wikipedia.org)?
Fabricio PH
。那是最初的正确答案。目前被接受的人只是简单地复制了正确答案,而没有给予任何荣誉。现在,它已恢复为原始版本。
在Google Chrome浏览器中,是否可以删除与特定查询匹配的所有搜索历史记录(例如,en.wikipedia.org)?
Fabricio PH
。那是最初的正确答案。目前被接受的人只是简单地复制了正确答案,而没有给予任何荣誉。现在,它已恢复为原始版本。
Answers:
更新2019年1月
现在,Chrome支持键盘快捷键CtrlA或⌘A
原始答案
您可以采用黑客快捷方式注入JavaScript代码。
步骤1 由于要在iFrame中查询Chrome历史记录,因此我们必须访问: chrome:// history-frame /(复制和粘贴网址)
步骤2 进行搜索查询。
步骤3 打开Chrome控制台(F12或CtrlShifti或⌘⌥i),并执行:
var inputs = document.getElementsByTagName('input');
for (var i = 0; i < inputs.length; ++i) {
if (inputs[i].type == "checkbox"){
inputs[i].checked = true;
}
}
document.getElementById("remove-selected").disabled = false
步骤4 点击“ 删除选定的项目 ”按钮。
实际上,这会删除当前页面中的元素。我可能会尝试扩展它,但这是一个很好的起点。阅读完整的文章在我的博客。
这很简单。
搜索您要删除的内容。选择第一个。现在滚动到最新结果。按shift并选择最新的。现在,所有匹配项都已选中,您可以将它们一起删除。
在某些情况下,从历史记录结果中删除地址不足以阻止该地址出现在网址栏自动建议中。
在这种情况下,请访问此处:https : //superuser.com/a/273280/121184
您甚至可以使用SQL查询您的Chrome历史记录。(Firefox也:请参见下文。当然,必须更改相应的文件路径)。
首先,您需要找到Chrome历史记录文件。在我的系统上
C:\Documents and Settings\Leonardo Serni\Impostazioni locali\Dati applicazioni\Google\Chrome\User Data\Default
应该翻译成更一般的
<USER FOLDER>\Local Settings\Application Data\Google\Chrome\User Data\Default
在其中,您将找到“历史记录”文件。这是一个SQLite3文件,要对其进行操作,必须关闭Chrome。如果您搞砸了,请删除“历史记录”文件并重新开始-就像您清除了整个Chrome历史记录一样。
然后,将文件重命名为History.sqlite3
并安装SQLiteMan(或其他任何SQLite3编辑器-在Windows中,双击该文件可能足以触发建议),然后打开文件(某些实用程序可能不需要重命名。)请先尝试不重命名,以节省工作)。
在URLS表中,您将找到您访问过的URL。例如,我可以运行查询:
SELECT * FROM urls WHERE url LIKE '%meetup%';
查看我访问的URL的主机名或路径名部分中所有出现的“ meetup”。或者我可以搜索pr0n,或者... 什么,只要我遵守SQL语法即可。
您甚至可以使用其他信息来运行查询,例如上次访问时间。请记住,您需要将日期转换为Chrome时间,即从我们的Lord 1601年1月1日起经过的微秒数。在Unix机器上,键入date +%s
将告诉您秒数。乘以一百万,再加上11644473600,就可以完成。
例如,选择2013年10月1日之后的访问:
SELECT * FROM urls WHERE ((last_visit_time/1000000)-11644473600) -
strftime('%s', '2013-10-01 00:00:00') > 0;
要删除,只需替换SELECT *
为DELETE
,然后按F9执行查询。
您可以使用,NOW()
而不是当前日期,也可以使用任何其他SQLite语法。
(以防“存档历史记录”文件包含Chrome存档的最后历史记录)。
完成后,如果需要,将文件重命名为“ History”。
您需要一个命令行SQLite实用程序,例如sqlite3
或sql3tool
。然后编写脚本或批处理文件,并使用适当的路径修改下面的代码(您不想清除我的历史记录,保持不变,对吗?):
# ENSURE CHROME IS CLOSED (pskill by SysInternals might be useful)
echo "DELETE * FROM urls WHERE url LIKE '%facebook%' OR url LIKE '%twitter%';" | sql3tool "C:\Documents and Settings\Leonardo Serni\Impostazioni locali\Dati applicazioni\Google\Chrome\User Data\Default\History"
echo "DELETE * FROM urls WHERE url LIKE '%porn%' OR url LIKE '%my-employer-is-a-moron%';" | sql3tool "C:\Documents and Settings\Leonardo Serni\Impostazioni locali\Dati applicazioni\Google\Chrome\User Data\Default\History"
echo "DELETE * FROM urls WHERE url LIKE ..."
只记得这将删除你的历史你的 Chrome实例。例如,如果您使用代理,并且该代理保留日志,则所有这些URL在日志中仍然可用。
更新:此外,如果您使用的是一些脑筋急转弯的SQL工具,要求该文件具有显式且已知的扩展名,则在开始操作之前,您将必须执行适当的RENAME,而当您执行此操作时,必须先执行另一个适当的重命名操作已经完成:
REN "C:\Documents and Settings\Leonardo Serni\Impostazioni locali\Dati applicazioni\Google\Chrome\User Data\Default\History" "C:\Documents and Settings\Leonardo Serni\Impostazioni locali\Dati applicazioni\Google\Chrome\User Data\Default\History.sqlite3"
echo "DELETE * FROM urls WHERE url LIKE '%facebook%' OR url LIKE '%twitter%';" | sql3tool "C:\Documents and Settings\Leonardo Serni\Impostazioni locali\Dati applicazioni\Google\Chrome\User Data\Default\History.sqlite3"
REN "C:\Documents and Settings\Leonardo Serni\Impostazioni locali\Dati applicazioni\Google\Chrome\User Data\Default\History.sqlite3" "C:\Documents and Settings\Leonardo Serni\Impostazioni locali\Dati applicazioni\Google\Chrome\User Data\Default\History"
无论如何,完成此操作后,双击脚本图标,然后提示您,您的Chrome历史记录已被清理。它也适用于Firefox。尽管它的时间戳可能在其他时间参考框架中(可能是普通的Unix),所以在跳入之前检查一下水位。
您可能想对Cookie而不是历史记录执行相同的操作。
但是您会注意到,在Chrome数据目录中,“历史记录”以外的其他文件,其中一个名为Cookie ... :-)
上面的SQL技巧不仅限于删除。您可以使用以下UPDATE
命令修改条目:并且在删除了不需要的条目之后,您可以将INSERT
其与适当的时间和日期宏配合使用,以使Chrome浏览器认为您访问了一些您实际未访问的URL,或者在某个时间和日期没有访问过。
在清理浏览器会话的情况下可能会派上用场,当清理浏览器会话会导致不太可能出现某人长时间盯着空的浏览器窗口凝视的图片时,并且最好使用某种空闲导航。当然,这是假设没有人注意到每天都有完全相同的导航“模板”。
要添加到Fabricio PH的awnser中,在粘贴到devtools控制台中时,应该清除chrome:// history-frame页面上给定搜索的所有结果页面:
var clearHistoryPage, historyInterval;
historyInterval = null;
clearHistoryPage = function() {
var i, input, inputs, len, spinner;
// If spinner is visible a new page is still loading
spinner = document.getElementById('loading-spinner');
if (!spinner.hasAttribute('hidden')) {
console.log("Waiting on load");
return;
}
inputs = document.getElementsByTagName('input');
// When no history is present 5 inputs are still present on the history frame page
if (inputs.length <= 5) {
console.log("Found 5 or less inputs, stopping");
clearInterval(historyInterval);
return;
}
console.log("FOUND " + inputs.length + " results, clearing");
for (i = 0, len = inputs.length; i < len; i++) {
input = inputs[i];
if (input.type === 'checkbox') {
input.checked = true;
}
}
document.getElementById('remove-selected').disabled = false;
document.getElementById('remove-selected').click();
document.getElementById('alertOverlayOk').click();
};
historyInterval = window.setInterval(clearHistoryPage, 5000);
不,Chrome本身目前不支持。
不过,扩展程序可以请求访问您的历史记录数据。因此,扩展有可能满足您的需求。我自己并不知道这样的扩展名,但是经过一小段搜索,我就找到了这个扩展名:
https://chrome.google.com/webstore/detail/gjieilkfnnjoihjjonajndjldjoagffm
该扩展程序可能可以满足您的要求。
在Chrome浏览器栏中,尝试搜索要删除的历史记录项。一旦它出现在结果中,请使用箭头键(即使它是列表中的第一项)向下滚动至它,然后按Shift + Delete。
如果您从Google遇到此主题,现在有一种简便的方法可以删除多个项目。
如果您需要删除对特定站点的所有访问,则可以打开Chrome菜单-然后移至历史记录-如果您将域的名称放在必填字段中,或者在所需域的右边按了三个点(如果找到了)手动选择所有与该域相关的输入-按清除历史记录。也许您可以在此处找到与您的问题有关的更多信息rocketfiles.com
如果Fabricio的代码对您不起作用,我发现该代码正在工作,并另外为我单击“删除所选内容”按钮,因此我唯一要做的就是单击确认对话框。
document.querySelectorAll('.entry-box input[type="checkbox"]').forEach(function(input) {
input.checked = true;
});
document.getElementById("remove-selected").disabled = false
document.getElementById("remove-selected").click()
使用以下内容:
function hasText(a){
if(a.innerText){
return true}
else{
return false}
}
function isCheckbox(element){
if(element.type=='checkbox'){
return true
}
}
function removeItemsofQuery(query){
var element=document.getElementsByClassName('entry-box')
var checkbox=[]
var titles=[]
for(i=0; i<element.length; i++){
var children=element[i].children
for(j=0; j<children.length; j++){
if(hasText(element[i].children[j])==true && element[i].children[j].className!="time" ){
var ds=element[i].children[j].innerText
titles.push(ds)
}
if (isCheckbox(element[i].children[j])==true){
var hg=element[i].children[j]
checkbox.push(hg)
}
}
}
for(g=0; g<element.length; g++){
var queries=titles[g].indexOf(query)
if(queries>0){
checkbox[g].checked=true
}
}
var RS=document.getElementById('remove-selected')
RS.disabled=false
RS.click()
}
将其放入chrome浏览器控制台的历史FRAME页面中。不是常规历史记录,而是FRAME历史记录。然后,调用函数removeItemsofQuery
,然后输入要搜索并删除的术语作为参数。按Enter,然后按最后的删除按钮。然后,您完成了。恭喜你
开始编写您要搜索的术语,当出现不需要的术语时,使用向上和向下箭头转到该术语,然后按Shift + Delete。
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function selectAll() {
var count = 0;
var inputs = document.getElementById("history-app").shadowRoot.getElementById("history").shadowRoot.getElementById("infinite-list").children;
for (var i = 1; i < inputs.length; ++i) {
if (inputs[i].shadowRoot.getElementById("checkbox").getAttribute('aria-checked') == "false") {
inputs[i].shadowRoot.getElementById("checkbox").click();
count++;
await sleep(20);
}
}
if (c > 0) selectAll()
}
selectAll()
// Tested on Chrome Version 72.0.3626.119 (Official Build) (64-bit)
// 1) Open Chrome browser history.
// 2) Search for specific history you want to delete.
// 3) Cut-and-paste the code below in the Chrome Browser console.
// Enjoy!
(function (){
let historyApp = document.getElementById("history-app");
historyApp.items[0].selectAllItems();
// Delete history with a popup confirmation prompt
historyApp.deleteSelected();
// Delete with no prompt
// historyApp.items[0].deleteSelected_()
})();