在构建或更具体地说将网站/网络应用程序迁移到新平台/服务器时,我经常需要切换名称解析到的 IP 以执行某些任务。很多时候我必须快速来回切换,这意味着编辑 etc/hosts 并进行大量刷新,这很烦人。
是否有任何程序/插件/浏览器扩展(最好是 Chrome 或 FF)允许我快速来回更改 IP,或者让浏览器选择自己的 DNS 服务器或独立于系统的主机文件(这样我就可以使用一个浏览器使用系统设置,另一个浏览器使用它自己的设置,例如 Chrome 将 example.com 解析为 1.1.1.1 而 FF 将 example.com 解析为 1.2.2.2)?
我在 Mac 上进行开发,因此您可以提供 PC 扩展作为答案的一部分,但请确保您至少有一个可以在 Mac 上运行的解决方案。
答案1
Firefox 插件
SwitchHost(Mozilla/Firefox 附加站点)。
根据以下描述,这是 100% OP 的要求(切换/使用主机文件)
SwitchHosts 允许您快速轻松地管理和在多个主机文件之间切换......
(1)和(2)都是通过修改主机文件来存档结果,这将影响其他程序。
(3) 如果您不想影响其他程序,这可能更适合您的需求。它还有一个优点,就是不需要更改文件的写入权限/etc/hosts
,这在 OS X 中可能会出现问题(甚至没有效果)。
答案2
您可以运行代理服务器并让一个浏览器使用它,另一个浏览器直接运行。我不确定哪种现成的代理最适合这种情况 - 如果它位于单独的机器/VM 上,那么任何东西都可以,因为您可以配置机器的 DNS。您可能可以告诉 Apache 或 squid 使用自定义 DNS 或重写规则,或者您可以编写自己的代理来在不到 100 行 Python 中执行此操作...
答案3
一个选项是设置你自己的 DNS 服务器,然后使用动态域名解析更新。您可能仍需要清除浏览器 DNS 缓存,因为DNS 固定。如果您使用代理,DNS 是代理的责任(除非 Chrome 中存在 DNS 预取问题),因此代理是最干净的解决方案。
有两个 HTTP 代理可以执行此操作:
- Fiddler有 hosts 文件覆盖:http://www.fiddler2.com/fiddler/help/hosts.asp 虽然它只能在 Windows 上运行——但由于它是一个完整的 HTTP 代理,因此它可以按预期在其他系统上使用。
- 查尔斯代理具有 DNS 欺骗功能:http://www.charlesproxy.com/documentation/tools/dns-spoofing/ 这可能更合适,它是多平台的,包括 Mac OS。
Fiddler 是免费的,而 Charles 不是,尽管它有限时免费试用。
在 Chrome 中,你可以轻松检查和清除 DNS 缓存:chrome://net-internals/#dns
我不认为扩展程序能够覆盖DNS(尽管它可以进行 DNS 查找)。
使用代理切换浏览器插件,您可以通过启用或切换代理来切换网站。
为了完整起见,这种方法可能存在两个问题:饼干和缓存。一台服务器上的 State 或 auth cookies 可能在另一台服务器上不起作用。测试站点上的新内容可能不会出现,因为它尚未过期,这取决于服务器和内容中的缓存设置。如果发生这种情况,刷新浏览器缓存和 cookies 应该可以解决问题。
您还可以对面的内容问题不是由于 Web 服务器Etag
对相同静态内容使用不同的标头,因此缓存的内容与预期一致。这通常不会造成大问题,但可能会在性能报告中被标记。
由于您当前的手动 DNS 切换方法也可能受到上述问题的影响,因此它们对您来说可能不是什么问题,或者您已经注意到了 ;-)
(如果可能的话,我更喜欢使用通常更清晰的替代方法来解决整个问题:添加“dev-www”,“prod-www”,“test-www”等虚拟主机别名,尽管有时这有其自身的复杂性。)
答案4
在 FireFox 中,您可以使用重定向器附加组件它允许指定应自动重定向到其他页面的页面模式。例如重定向http://example.com/foo.html
到http://example.com/bar.html
。
该扩展支持模式中的通配符和正则表达式。正则表达式支持捕获括号,因此您可以重定向http://example.com/(.*)
到http://1.1.1.1/$1
。
要暂时禁用重定向器,请单击R
状态栏中的 或按
Alt+ R。右键单击图标可打开重定向器选项窗口。
(免责声明:我自己从未使用过此插件。)