我想设置我的浏览器将使用的dns记录,但是我没有root访问权,因此无法进行修改/etc/hosts
。我需要使用apache测试虚拟主机,而dns尚未设置。我可以使用firefox和chrome,因此,如果有一个插件可以方便使用它;或其他选项很有帮助。
更新:替代dns的替代方法可能是修改HTTP标头,如果将正确的标头发送到apache,则应返回正确的内容。
我想设置我的浏览器将使用的dns记录,但是我没有root访问权,因此无法进行修改/etc/hosts
。我需要使用apache测试虚拟主机,而dns尚未设置。我可以使用firefox和chrome,因此,如果有一个插件可以方便使用它;或其他选项很有帮助。
更新:替代dns的替代方法可能是修改HTTP标头,如果将正确的标头发送到apache,则应返回正确的内容。
Answers:
我一直在寻找一种方法来运行具有经过修改的DNS分辨率的程序以进行测试。对我来说,解决方案是使用HOSTALIASES
环境变量:
$ echo "foo www.google.com" >> ~/.hosts
$ HOSTALIASES=~/.hosts wget foo
请参阅hostname(7)
。
(附带说明:在示例中,HOSTALIASES
环境变量仅影响wget
进程。当然,您可以export HOSTALIASES
使它对当前Shell的所有子进程都有效。)
export
在大多数情况下:export HOSTALIASES=~/.hosts
。
您可以在libc函数周围编写包装器来解析主机名,并在与/ etc / hosts不同的文件中查找它们。然后运行您要使用hosts文件的任何应用程序
LD_PRELOAD=wrapper.so firefox
我认为最好的方法是设置SOCKS5代理,并告诉firefox通过SOCKS5代理(network.proxy.socks_remote_dns)发送DNS请求。您可以很容易地用openssh设置socks5代理(-D选项),并让远程主机运行自定义/ etc / hosts或类似DNSMasq的名称,以进行更复杂的DNS设置。实际上,这实际上将DNS设置的配置推送到可以在系统范围内进行更改的系统。
在超级用户处查看以下问题:
https://superuser.com/questions/184643/override-dns-in-firefox
如果讨论的选项和SO链接不是可行的解决方案,请查看:
https://superuser.com/questions/100239/hostname-override-in-firefox
特别是检查:
https://addons.mozilla.org/zh-CN/firefox/addon/redirector/
听起来这个插件可以提供帮助-但我取决于它的实际实现。
不幸的是,除了编写自己的Internet浏览器之外,您不能。
如果必须进行一些测试,则需要一台测试机,无论是虚拟机还是真正的测试机,因此都必须询问Unix管理员(或主机提供商)如何放置开发环境。
您还可以在PC上安装VM,安装Linux发行版,Apache并测试您的更改(听起来并不那么困难)
更新资料
为了更好地说明,每个应用程序都是使用标准库编写的,因此,无需再重写底层库和诸如gethostbyname()之类的功能。
这些功能通常设置为使用文件(/ etc / hosts)和DNS,因此,很不幸,如果您需要浏览器将解析一个名称,而不是在/ etc / hosts中设置的名称,则没有太多选择。
open()
以及任何其他低级调用..,只要涉及动态代码加载(.so)