如何删除与Google Chrome浏览器中的特定查询匹配的所有网络历史记录


77

在Google Chrome浏览器中,是否可以删除与特定查询匹配的所有搜索历史记录(例如,en.wikipedia.org)?


可以从Google网络历史记录中选择搜索中的所有项目。我想知道是否可以将Google网络历史记录与Chrome的网络历史记录同步。
安德森·格林

有一个名为“ Google网络历史记录更新程序”的扩展程序-看来该扩展程序允许Google网络历史记录在Google Chrome中运行。
安德森·格林

3
@AndersonGreen您能否从将此更新更新为superuser.com/a/791728/84229Fabricio PH。那是最初的正确答案。目前被接受的人只是简单地复制了正确答案,而没有给予任何荣誉。现在,它已恢复为原始版本。
用户

3
@AndersonGreen您应该选择Pooya作为正确答案,这是最简单,最快的方法。另外,Fabricio正在根据自己的答案做一些自我宣传,但还不完整。
LasagnaAndroid

快速操作:搜索,然后按“ ctrl + a”以选择所有结果
wuppi

Answers:


60

更新2019年1月

现在,Chrome支持键盘快捷键CtrlAA


原始答案

您可以采用黑客快捷方式注入JavaScript代码

步骤1 由于要在iFrame中查询Chrome历史记录,因此我们必须访问: chrome:// history-frame /(复制和粘贴网址)

步骤2 进行搜索查询。

步骤3 打开Chrome控制台(F12CtrlShiftii),并执行:

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 点击“ 删除选定的项目 ”按钮。

实际上,这会删除当前页面中的元素。我可能会尝试扩展它,但这是一个很好的起点。阅读完整的文章在我的博客。


3
这不再起作用了。document.getElementsByTagName('input')返回空数组。
dinesh ygv '16

2
@FabricioPH我在Chrome浏览器脚本://历史,而不是“铬://历史的框架,这就是为什么它没有工作对我来说它运作良好的框架内。
迪内希ygv

2
这很棒!最初,我在另一个选项卡中运行了它,但是该选项不起作用(出于逻辑上可以理解的原因,事后看来。)因此,我在与chrome:// history-frame相同的选项卡中重新打开了控制台,并且一切正常。
詹姆森

1
非常干净和容易的解决方案
danboh,2017年

1
该解决方案已过时:只需按“ ctrl + a”
wuppi

125

这很简单。

搜索您要删除的内容。选择第一个。现在滚动到最新结果。按shift并选择最新的。现在,所有匹配项都已选中,您可以将它们一起删除。


在某些情况下,从历史记录结果中删除地址不足以阻止该地址出现在网址栏自动建议中。

在这种情况下,请访问此处:https : //superuser.com/a/273280/121184


1
进一步的信息在这里:superuser.com/a/747816/85129
Anderson Green

2
或者,您也可以采取黑客快捷方式,请参见下面的答案;)
Fabricio PH 2014年

4
@AndersonGreen这是正确的答案,不是Fabricio的。
LasagnaAndroid

这一点并不明显。我希望文本被选中。
dinesh ygv '16

1
进一步的答案之一也涵盖了这一点(在发表我的评论后才发现)
wuppi

15

对于“查询”的文字值...

您甚至可以使用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实用程序,例如sqlite3sql3tool。然后编写脚本或批处理文件,并使用适当的路径修改下面的代码(您不想清除我的历史记录,保持不变,对吗?):

# 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,或者在某个时间和日期没有访问过。

在清理浏览器会话的情况下可能会派上用场,当清理浏览器会话会导致不太可能出现某人长时间盯着空的浏览器窗口凝视的图片时,并且最好使用某种空闲导航。当然,这是假设没有人注意到每天都有完全相同的导航“模板”


命令将是“从URL删除...”
Anwar

3

按住shift键并单击第一个URL复选框,然后向下滚动到最后一个。这告诉Google选择介于两者之间的所有帖子。然后,您单击“删除”,Voila历史消失了该特定的URL


欢迎使用SuperUser Meron。虽然这可能是有效的,但它会复制至少在其他两个答案中发布的信息。
bertieb

2

要添加到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);

2

您可以访问chrome:// history或chrome:// history-frame。在页面上,您可以开始搜索,当列出所有结果时,只需单击CTRL + A以选择所有可见的项目。再按一次则取消选择所有项目。

选中的项目只需通过DEL键将其删除。


1

不,Chrome本身目前不支持。

不过,扩展程序可以请求访问您的历史记录数据。因此,扩展有可能满足您的需求。我自己并不知道这样的扩展名,但是经过一小段搜索,我就找到了这个扩展名:

https://chrome.google.com/webstore/detail/gjieilkfnnjoihjjonajndjldjoagffm

该扩展程序可能可以满足您的要求。


2
这个答案已经过时-看到一个这个
Garrulinae 2014年

对不起,我也无法删除它
史蒂文·罗斯

很好-我只是向未来的观众指出这一点。
Garrulinae 2014年

可悲的是,我为此失去了代表:p
史蒂芬·罗斯2014年

无需扩展名,请查看我的回答:)
Fabricio PH

1

只需将Chrome与以下网址一起使用:chrome:// history /#e = 1&p = 0

您可能需要将其复制/粘贴到您的网址栏中。


1

在Chrome浏览器栏中,尝试搜索要删除的历史记录项。一旦它出现在结果中,请使用箭头键(即使它是列表中的第一项)向下滚动至它,然后按Shift + Delete。



1

在“历史记录”选项卡中键入要删除的url,如下面的屏幕截图所示,切换开发者控制台(mac:opt + cms + i)并选择<iron-list元素。然后切换js控制台(esc),然后在控制台中键入以下代码:

$0.querySelectorAll('history-item').forEach(_ => _.root.querySelectorAll('cr-checkbox').forEach(_ => _.click()))

它应该选择所有可见元素。单击删除,然后重复直到列表为空或镶边出现奇怪的错误。

历史记录标签


1

如果您需要删除对特定站点的所有访问,则可以打开Chrome菜单-然后移至历史记录-如果您将域的名称放在必填字段中,或者在所需域的右边按了三个点(如果找到了)手动选择所有与该域相关的输入-按清除历史记录。也许您可以在此处找到与您的问题有关的更多信息rocketfiles.com


0

在Google Chrome浏览器中使用此扩展程序: 历史记录日历

它正是我要搜索的内容……它使历史记录删除等,就像firefox一样,即快速又流畅。如果您为amazon.com之类的网站拥有超过2000个历史标记,则谷歌chrome历史记录查看器会花费时间(逐页浏览),但是在Firefox历史记录窗口中(或使用上述chrome extn),您可以选择全部2000个并删除一气呵成


它在该链接上显示404
Anwar

0
  • 打开 chrome:history并搜索要删除的网站。
  • 使用打开您的Chrome控制台ctrl-shift-j

  • 如果适用,请确保控制台上方的下拉列表显示为history (history-frame)而不是其他top,

  • 在控制台中运行以下代码:

$$('input[type=checkbox]').forEach(el => el.checked = true); $("remove-selected").disabled = false;


0

如果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()

0
  1. 单击第一个复选框。
  2. 向下滚动到页面底部。
  3. 按住shift键并单击最后一个复选框。
  4. 所有复选框将被选中;滚动到顶部,显示“删除所选项目”按钮。
  5. 点击按钮。所选项目将被删除:)

欢迎来到超级用户。我建议这样的问题不是最好的答案!其他答案已经包括如何执行此操作的选项,包括您的方法。
Lister

0

使用以下内容:

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,然后按最后的删除按钮。然后,您完成了。恭喜你


0

开始编写您要搜索的术语,当出现不需要的术语时,使用向上和向下箭头转到该术语,然后按Shift + Delete。


0
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()

1
请解释(用英语单词)这将如何回答问题。
G人

转到chrome:// history,搜索所需内容,打开Chrome控制台,复制并粘贴上面的代码以全选
konstruktor

0
// 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_()  

})();
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.