从命令行刷新 Chrome 和 Firefox DNS 缓存?

从命令行刷新 Chrome 和 Firefox DNS 缓存?

偶尔,我需要对我的本地 DNS 缓存进行一次焦土清理。最常见的情况是,我使用 OpenDNS,当名称解析失败时(它是我本地网络上的主机名,但未运行),OpenDNS 会将我发送到他们可爱的广告页面。然后,一旦 DNS 问题得到解决,我仍然会解析到 OpenDNS。这种情况实际上不再经常发生,但偶尔,我还是需要重新开始使用我的 DNS。

现在,如果你有可能回答我的问题,我相信你会知道现代计算机到处隐藏 DNS 缓存。你的操作系统有它,你的浏览器有它,你的其他浏览器也有它,如果你正在运行 DNSMasq(我正在运行),那么你也必须清除它。所以我写了一个小的 shell 脚本来清除大部分这些缓存,但浏览器 DNS 缓存仍然需要手动完成。

在 Chrome 上,我转到 chrome://net-internals/#dns,然后单击“清除主机缓存”

在 Firefox 上,我确信有类似的过程,只是不知道它是什么。

但是,我真的很想从命令行清除这两者,这样我就可以将它们集成到我的 DNS-burninate 脚本中。这可以做到吗?如果可以,怎么做?

如果 Chrome 或 Firefox 提供命令行界面来执行此操作,那就太酷了。

如果不是,我假设 DNS 缓存存储在一个文件或一组文件中(这是真的吗,还是它们都存储在 RAM 中?)。如果我们可以识别这些文件并删除它们,也许会产生同样的效果?这样做有效吗,还是会破坏一切?这些文件在哪里?

还有其他想法吗?

答案1

Chrome/Chromium 的 DNS 缓存全部位于 RAM 中。看来彻底重启 Chrome 必然会将其清除。

Chromium 主机缓存源代码净/dns/host_cache.cc似乎没有将任何内容提交到硬盘以进行持久保存。我只能假设官方的 Google Chrome 也做了同样的事情。


Firefox 也是如此。似乎只需重新启动 Firefox 即可清除缓存,因为dom/html/HTMLDNSPrefetch.cpp已移动2021 年 1 月)也不建议将其提交到硬盘。

答案2

您可以尝试清理 Windows(或 Linux)的 DNS 缓存

如果您使用 Windows,请执行以下操作:
1)以管理员身份运行命令提示符
2)写入以下内容:

ipconfig /flushdns 

然后按回车键。
您还可以通过输入以下内容来检查 DNS 缓存:

ipconfig /displaydns

如果你使用 Linux,请尝试以下操作:
1)以 root 身份打开命令终端
2)运行命令

/etc/init.d/nscd restart

您还可以使用此 Firefox 插件来清除 DNS 缓存:DNS 刷新器

答案3

使用私人浏览器窗口打开相关站点/页面。这将忽略 Firefox 的其他 DNS 缓存(我发现这些缓存可能会持续存在)。一旦在私人浏览器窗口中访问了域,它应该可以在常规窗口中正常工作。此操作的命令行选项为:

firefox -private-window URL

相关内容