我有许多暂存服务器和测试服务器,需要不断修改我的主机文件才能访问(它们依赖于域名,所以我必须更改主机文件才能使它们工作)。
我觉得这很烦人。我想为我想要使用的每种类型的网站设置某种便携式浏览器。是否有任何版本的图形 Web 浏览器(包括基于其他浏览器的渲染引擎的浏览器)可以做到这一点?
这样,如果我想测试暂存,我可以简单地启动已配置为与暂存一起工作的实例。
有任何想法吗?
编辑:其重要的特性是能够同时运行两个浏览器,都浏览some-address.com
,但一个浏览器将请求定向到 的服务器1.2.3.4
,另一个浏览器将请求定向到 的服务器5.6.7.8
。
编辑:(2014 年 3 月 16 日)
这个问题是几年前提出的,但我仍然不知道有什么好办法可以解决。让我进一步解释一下,因为人们似乎误解了这个问题。这不是仅使用代理服务器就能轻松解决的问题。我想也许可以在代理服务器中编写广泛的规则来解决这些问题,但这是一个非常复杂的解决方案,而本来应该是一个很简单的问题。
因此需要澄清的是:
有三台 Web 服务器。生产、测试和开发。每台服务器都运行一个多租户应用程序,该应用程序根据用于访问它的主机名进行自定义。从概念上讲,这类似于内容管理系统或博客引擎,允许多个站点在同一个服务器实例上运行。您只需将主机名指向服务器,无论使用哪个主机名通过 HTTP 1.1 主机名映射访问它,它都会显示该站点。
任何仅仅重写主机文件的解决方案都行不通,因为需要同时运行多个浏览器窗口来访问不同的站点、生产、开发、测试等... 因此,仅仅不断更改主机文件是行不通的,因为它会影响所有浏览器实例。如果您更改一个浏览器的映射,那么其他浏览器现在也会映射到该服务器,因此任何后续请求都将发送到错误的服务器。
我所寻找的只是一种方法来强制此浏览器实例使用此主机文件,并强制该浏览器实例使用该主机文件,例如通过命令行参数。我甚至不关心是否需要安装多个浏览器副本。
这可能可以通过 Firefox 便携版来实现,因为我认为它在每个安装的副本中使用自己的配置文件,但问题是用于管理网站的第三方软件不适用于 Firefox(网站本身可以,但管理工具不行,它们可以与 Chrome、IE 和 Opera 配合使用,但是... 我无法访问此源代码来修复它)。
答案1
Squid 帮我解决了这个问题。我认为许多代理服务器都可以做到这一点。
具体来说,我必须安装 Squid。然后更改 squid.conf,以便它访问备用主机文件。这是您要更改的行:
#hosts_file /etc/hosts
在我的情况下,我使用了hosts_file /etc/hosts-squid
。我创建了/etc/hosts-squid
文件并更改了 hosts-squid 文件,以便它能够让我访问给定 URL 所需的新 IP 地址。这就是配置 Squid 代理服务器所需要做的全部工作。
然后我创建了一个命令来使用代理设置启动我的浏览器。我使用了:
chromium-browser --proxy-server=localhost:3128
运行该命令可以有效地给我一个正在运行的 chromium 实例,它可以访问我在 hosts-squid 文件中创建的域设置。
我还能够使用多个 Squid 实例设置更多代理服务器,以便在同一台计算机上访问生产、开发和本地网站。有关如何运行多个 Squid 实例的说明是这里我还写了一篇博客文章更详细地解释问题和解决方案。
答案2
我相信您要求为每个包含其自己的 hosts 文件的浏览器设置一个虚拟环境。
一种解决方案可能是使用沙盒设置单独的沙盒,每个沙盒包含自己的 hosts 文件。浏览器无需安装到沙盒中即可使用 hosts 文件,只需从沙盒内部启动即可。可以创建桌面快捷方式以从沙盒内部启动浏览器。
缺点是浏览器将与真实文件系统隔离,例如从互联网下载文件时,但 Sandboxie 包含将此类文件复制到沙箱之外的机制。
不幸的是,同时在多个沙箱中运行程序的功能仅在 Sandboxie 的付费版本中可用(家庭个人使用一年许可证费用为 15 欧元加税)。可以使用免费版本进行可行性测试。(编辑:Sandboxie 现在是免费软件。)
对于 Linux 用户,类似的产品有:
答案3
您可以使用以下方式自动更改主机文件 Firefox + HostAdmin
HostAdmin 是一个 Firefox 插件,可帮助您修改 Hosts 文件、切换域名-IP 映射。HostAdmin 可以通过增强的 Hosts 文件语法理解您的 Hosts 文件。此外,每当您更改 Hosts 文件时,HostAdmin 都会自动刷新您的 DNS 缓存,即使是手动更改。
示例配置
#==== Project 1
# 127.0.0.1 localhost1
127.0.0.1 localhost2
127.0.0.1 localhost3
#====
#==== Project 2
# 127.0.0.1 localhost1
# 127.0.0.1 localhost2
# 127.0.0.1 localhost3
更多信息https://addons.mozilla.org/en-US/firefox/addon/hostadmin/
多实例
要在 Linux 中同时独立运行两个 Firefox 浏览器实例,请使用以下脚本创建多个启动器。同时在所有 Firefox 中安装插件。
火狐 1
#!/bin/bash
th="/home/$USER/tmp/p1"
mkdir -p "$th"
export HOME="$th"
firefox -no-remote
火狐 2
#!/bin/bash
th="/home/$USER/tmp/p2"
mkdir -p "$th"
export HOME="$th"
firefox -no-remote
firefox -P
您可以在浏览器中使用配置文件选项( )来使用本机配置文件进行不同的设置,并且可以同时使用。
答案4
私有网络可用于此目的。