在Chrome扩展程序中拦截DNS请求?

7
如果我想测试http://www.domain.com,但是我想通过切换IP来测试两个版本(例如一个解析到127.0.0.1,另一个解析到192.168.1.200),是否可以编写/使用Chrome扩展程序来处理拦截DNS查询并解析为我选择的IP?
当前的解决方法是利用hosts文件并清除DNS缓存以在它们之间切换,但这不是最理想的,希望浏览器扩展程序可以处理同样的事情。

不是特定于Chrome,但调试代理Fiddler具有此功能(及更多功能):http://www.fiddler2.com/fiddler/help/hosts.asp(遗憾的是,仅适用于Windows)。 - Piskvor left the building
1个回答

2

Chrome浏览器本身没有原生机制来操作DNS请求/响应,即使是通过即将推出的WebRequest API也不行。

您是否有必要使用完全相同的域名进行测试?在类似http://dev.example.com/(或http://example.dev/如果您运行自己的DNS或编辑了hosts文件)的开发环境中设置是一种干净的机制,可以以您拥有访问权限的API的方式产生所需的效果。编写一个扩展程序,让您可以轻松地切换两个域名,只需按一下按钮即可完成。


1
那本来是我的第一种方法,但将一个包含100多个Web应用程序的生产服务器迁移到另一个包含WordPress等内容的生产服务器可能会更加困难,因为WordPress在各个地方都硬编码了URL/域信息。如果我可以保持Apache vhost配置相同,就可以避免在切换期间临时重新配置100多个具有硬编码URL的应用程序,然后再恢复原状。 - Shane
在这种情况下,你就没什么好运了。 :) 我建议采用Piskvor的建议,使用代理来伪造分辨率。Fiddler在Windows上运行良好,Charles (http://www.charlesproxy.com/) 在任何地方都可以很好地工作。 - Mike West
不知道Charles,看起来很棒。谢谢你的帮助! - Shane
实际上,我正在运行一个Virtualbox Windows XP虚拟机,只是为了使用Fiddler(它也可以作为普通的HTTP代理),但你说得对,不是每个人都有多余的Windows许可证。 - Piskvor left the building
我也在寻找这种扩展,但是在阅读了你的答案后,我意识到如果任何浏览器允许这样做会有多糟糕。比如,如果扩展制作者对您的DNS设置和像paypal.com或您银行的域名进行操作,它们将开始指向任何其他自定义服务器/IP,他们可以非常容易地获取您的密码等信息。结果,您可能会很容易地被抢劫... :D :D - Aatif Farooq
"编写一个扩展程序,可以通过按下按钮在两个域之间切换,这对于谁来说都是轻而易举的。" -- 对于谁来说是轻而易举的呢? - Jesse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接