Navegador com seu próprio arquivo de hosts?


36

Eu tenho vários servidores de armazenamento temporário e de teste que preciso modificar constantemente meu arquivo de hosts para acessar (eles dependem do nome do domínio, por isso preciso alterar o arquivo de hosts para fazê-los funcionar).

Eu acho isso irritante. Gostaria de configurar algum tipo de navegador portátil para cada tipo de site com o qual quero trabalhar. Existe alguma versão de qualquer navegador gráfico (incluindo navegadores baseados nos mecanismos de renderização de outros navegadores) que fará isso?

Dessa forma, eu posso simplesmente iniciar a instância que já está configurada para funcionar com o armazenamento temporário, se desejar testar o armazenamento temporário.

Alguma ideia?

EDIT: O recurso importante é a capacidade de executar dois navegadores simultaneamente, ambos navegando para some-address.com, mas com um navegador direcionando as solicitações para o servidor 1.2.3.4e o outro navegador direcionando as solicitações para o servidor 5.6.7.8.

EDIT: (16/3/14)

Esta pergunta foi feita há vários anos e ainda não conheço uma maneira decente de fazer isso. Deixe-me tentar explicar mais, porque as pessoas parecem entender mal o problema. Não é algo que pode ser facilmente corrigido usando apenas um servidor proxy. Suponho que seja possível escrever regras extensas em um servidor proxy para resolver os problemas, mas essa é uma solução enorme e complexa para o que deveria ser um problema simples.

Então, para esclarecer:

Existem três servidores web. Produção, Teste e Desenvolvimento. Cada um executa um aplicativo multilocatário que se personaliza com base no nome do host usado para acessá-lo. Conceitualmente, isso é semelhante a um sistema de gerenciamento de conteúdo ou mecanismo de blog que permite que vários sites sejam executados na mesma instância do servidor. Você apenas aponta o nome do host para o servidor e o nome do host usado para acessá-lo via mapeamento de nome de host HTTP 1.1 é o site que ele exibe.

Qualquer solução que simplesmente reescreva o arquivo host não funciona devido ao requisito de executar várias janelas do navegador ao mesmo tempo em diferentes sites, produção, desenvolvimento, teste, etc ... Então, simplesmente alterar constantemente o arquivo host não funciona porque afeta todas as instâncias do navegador. Se você alterar o mapeamento para um navegador, agora os outros navegadores também serão mapeados para esse servidor, para que quaisquer solicitações subsequentes sejam direcionadas ao servidor errado.

Tudo o que estou procurando é uma maneira de forçar essa instância do navegador a usar esse arquivo host e a instância do navegador para usar esse arquivo host, como por meio de um parâmetro de linha de comando. Eu nem me importo se preciso instalar várias cópias do navegador.

Isso pode ser possível com o firefox portable, pois acho que ele usa seus próprios arquivos de configuração por cópia instalada, mas o problema é que o software de terceiros usado para administrar os sites não funciona com o firefox (os próprios sites, mas as ferramentas administrativas) no entanto, eles funcionam bem com o chrome, o IE e o Opera, no entanto ... e não tenho acesso à fonte para que isso seja corrigido).


A maioria das pessoas na sua situação executa duas máquinas virtuais WinXP ou Ubuntu com diferentes configurações de HOSTS.
usar o seguinte

@ Digitxp - Sim, eu já tinha pensado nisso, mas eu realmente não quero a sobrecarga de várias VMs e vários SOs inteiros apenas para navegar em alguns sites. Obviamente, se não houver nenhuma outra escolha que é o que eu provavelmente vai ter que fazer ..
Erik Funkenbusch

Se tudo mais falhar: o Fiddler Web Debugger (Windows) ou o GlimmerBlocker e o Charles Web Debugging Proxy (Mac) podem reescrever as solicitações em tempo real ...
Arjan

@Arjan - Os proxies funcionarão até certo ponto, mas eu precisaria ter uma instância de proxy separada para cada instância do navegador ou alterar as configurações de proxy cada vez que for ainda mais irritante que a alteração dos arquivos do host.
Erik Funkenbusch

1
Talvez um proxy da Web, como o squid, permita redirecionar de uma maneira que faça o que você quer que seja feito na resolução do DNS? (é claro que um proxy da web pode ser configurado por navegador) #
barlop

Respostas:


19

Lula resolveu o problema para mim. Eu acho que muitos servidores proxy poderiam fazer o mesmo.

Especificamente, eu tive que instalar o Squid. Em seguida, altere o squid.conf para que ele acesse um arquivo de hosts alternativos. Esta é a linha que você deseja alterar:

#hosts_file /etc/hosts

No meu caso eu usei hosts_file /etc/hosts-squid. Criei o /etc/hosts-squidarquivo e alterei o arquivo hosts-squid para que ele me desse acesso aos novos endereços IP que eu queria para o URL especificado. Era tudo o que eu precisava fazer para configurar o servidor proxy Squid.

Criei um comando para iniciar meu navegador com as configurações de proxy. Eu usei:

chromium-browser --proxy-server=localhost:3128

A execução efetiva desse comando me fornece uma instância em execução do chromium, que pode acessar a configuração de domínios no arquivo hosts-squid que eu criei.

Também pude configurar mais servidores proxy usando várias instâncias do Squid para acessar um site de produção, desenvolvimento e local no mesmo computador. As instruções sobre como executar várias instâncias do Squid estão aqui . Também escrevi um post explicando o problema e a solução com mais detalhes.


8

Acredito que você esteja solicitando a configuração de um ambiente virtual para cada navegador que inclua seu próprio arquivo de hosts.

Uma solução pode ser usar o Sandboxie para configurar um sandbox separado, cada um contendo seu próprio arquivo de hosts. O navegador não precisa ser instalado na caixa de proteção para usar o arquivo hosts, apenas iniciado a partir dessa caixa de proteção. Atalhos da área de trabalho podem ser criados para iniciar o navegador de dentro da sandbox.

A desvantagem será que os navegadores serão isolados do sistema de arquivos real, por exemplo, ao baixar arquivos da Internet, mas o Sandboxie inclui mecanismos para copiar esses arquivos fora da sandbox.

Infelizmente, o recurso de executar programas em mais de uma sandbox ao mesmo tempo só está disponível na versão paga do Sandboxie (15 euros mais impostos por uma licença de um ano para uso pessoal em casa). O teste de viabilidade pode ser feito usando a versão gratuita.

Para usuários do Linux, produtos similares são:


Desculpe pela resposta tardia harrymc. Não está claro se o programa permite fornecer arquivos de sistema por área restrita, como %SYSTEM32%/Drivers/etc/hostsno Windows e /etc/hostsno Linux. VocÊ poderia confirmar? Eu preferiria a versão Linux porque fiz uma rápida avaliação de segurança do Sandboxie há alguns anos no Windows (ela falhou e os relatórios ao autor ficaram sem resposta).
JWW

se o Sandboxie suportar arquivos de sistema por sandbox, como %SYSTEM32%/Drivers/etc/hosts, então os pontos são seus. O sistema operacional estava subespecificado e não é justo retê-lo se o Windows / Sandboxie funcionar.
JWW

O AFAIK Sandboxie cria um sistema de arquivos e um registro completamente paralelos. Para o Linux, um simples programa sandbox é arkose ou talvez sandfox, mas não tenho experiência com eles.
harrymc

Obrigado harrymc. Estou tendo problemas para conceder-lhe os pontos. Eu vejo uma caixa com +50, mas não consigo clicar nela. Além disso, eu pensei que valia 100. Alguma idéia (ou preciso ir até o Meta)?
JWW

Veja as Perguntas frequentes sobre recompensas : Da recompensa de 100, metade foi concedida automaticamente após 7 + 1 dias sem resposta designada, metade foi perdida.
precisa saber é

4

Você pode automatizar o processo de alteração do arquivo host com o firefox + HostAdmin

HostAdmin é um complemento do Firefox, que ajuda a modificar o arquivo Hosts, alternar o mapeamento de domínio-IP. O HostAdmin pode entender seu arquivo Hosts por meio de uma sintaxe aprimorada. Além disso, o HostAdmin atualiza seu cache DNS automaticamente sempre que você altera o arquivo Hosts, mesmo manualmente.

Exemplo de configuração

#==== 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  

Mais informações em https://addons.mozilla.org/en-US/firefox/addon/hostadmin/

Instância múltipla

Para executar duas instâncias do navegador firefox de forma simultânea e independente no linux, crie vários lançadores com o seguinte script. Instale também o plugin em todo o firefox.

Firefox 1

#!/bin/bash
th="/home/$USER/tmp/p1"
mkdir -p "$th"
export HOME="$th"
firefox -no-remote

Firefox 2

#!/bin/bash
th="/home/$USER/tmp/p2"
mkdir -p "$th"
export HOME="$th"
firefox -no-remote  

Você pode usar a opção de perfil ( firefox -P) em um navegador para usar perfis nativos para configurações diferentes e pode usar simultaneamente.


1
Ele está pedindo dois navegadores usando dois arquivos de hosts ao mesmo tempo .
harrymc


@harrym c atualizado.
totti 16/03/14

2

Sei que não é isso que você está pedindo, mas uma solução temporária pode ser escrever um script em lote para trocar os arquivos de hosts e, em seguida, reiniciar o navegador.

Pelo menos, minimizaria o trabalho que você está fazendo.

Ou você pode simplesmente nomear esses servidores como algo totalmente diferente no arquivo hosts, para nunca precisar trocá-lo.


Não consigo renomeá-los porque os aplicativos da Web dependem do nome do host para renderizar o conteúdo correto. Além disso, a razão pela qual desejo fazer isso é que eu posso executar vários navegadores ao mesmo tempo e fazer um ir para o teste e outro para o dev. Você não pode fazer isso trocando arquivos de hosts.
Erik Funkenbusch

@MystereMan: Se você está falando sobre o META BASE, basta fazer a detecção do navegador no lado do servidor. Você não deve ter o seu próprio nome de host em qualquer outro URL ...
Tamara Wijsman

@ TomWij - Não, eu não estou falando sobre META BASE. Estou falando de hospedagem virtual baseada em host, não baseada em IP. O campo hostname determina qual site é acessado.
Erik Funkenbusch

@MystereMan: Então seu primeiro comentário sobre esta resposta não faz sentido. Como você está falando sobre "o aplicativo Web que renderiza o conteúdo certo", não vejo o que os hosts virtuais têm a ver com isso?
Tamara Wijsman

@ TomWij - Temos um sistema CMS com vários locatários que hospeda vários sites em um único servidor, com um único IP. Para visualizar qualquer site, você deve usar um nome de host, caso contrário, você acessa apenas a instância padrão. Preciso alternar entre as versões de produção, preparo e desenvolvimento deste servidor, o que significa alterar o mapeamento de nomes de domínio para seus endereços IP em tempo real. Eu posso fazer isso no arquivo hosts, mas isso muda as coisas globalmente, para que eu não possa abrir cópias simultâneas de preparação e produção em duas instâncias diferentes do navegador.
Erik Funkenbusch

1

Privoxy pode ser usado para esse fim.


Como, exatamente, o Privoxy funcionaria para esse fim? Parece apenas mais um servidor proxy local, nenhum dos quais trabalho, porque com a maioria dos navegadores, você não pode definir um proxy por exemplo .. você só pode definir o proxy global para todas as instâncias
Erik Funkenbusch

@MystereMan: Proxy suas solicitações e, portanto, manipula as solicitações em outras solicitações, é bastante fácil fazer isso . Você está falando sem sentido sobre os servidores proxy: Mirosoft Internet Explorer (GUI), Mozilla Firefox (GUI), Google Chrome (CLI --proxy-server =), Apple Safari (GUI), Opera (GUI) e qualquer outro navegador (GUI ou CLI) permite que você defina seu próprio servidor proxy ...
Tamara Wijsman

@TomWij - Não. O IE, o Chrome e o Safari usam a configuração do servidor proxy global em "Configurações da Internet". Isso significa que, se você o alterar em um navegador da Web, ele será alterado em todos eles. O Firefox tem suas próprias configurações para isso, mas infelizmente não posso usar o Firefox porque não funciona com o CMS que usamos (tudo o resto faz).
Erik Funkenbusch

@Mystere Man: incorreto. Pare de repetir seus pensamentos e veja a configuração que cada navegador individual fornece. Se você não estiver se esforçando para realmente ler a documentação, nunca conseguirá resolver seu problema, pois está perguntando algo muito específico que não se aplica ao restante das pessoas. Como eu disse antes, mas você parecia não ter lido: Qualquer navegador permite definir o servidor proxy para esse navegador. O Google Chrome fornece o parâmetro CLI--proxy-server= .
Tamara Wijsman

1
Hmm, posso estar errado sobre o Safari, pois não o uso há algum tempo. Mas acho que o entendi errado, por que você gostaria de ter um servidor proxy diferente em cada navegador? Estou ficando confuso por que algo como "x.com = produção; stage.x.com = teste; dev.x.com = desenvolvimento" não funcionaria apenas para você, dado um único redirecionamento de cabeçalho de IP e host no servidor ...
Tamara Wijsman

1

Não sei se isso é conveniente o suficiente para você, mas uma solução possível seria instalar o IIS na máquina com os navegadores e fornecer scripts no servidor (como ASP.net, PHP, Ruby ...) que alteram o hostsarquivo e em seguida, redirecione para a página real. Nos navegadores, você cria um marcador para esse script, por exemplo, http://localhost/config_ie.rbque altera o hostsarquivo (requer permissões corretas nesse arquivo, é claro) e, em seguida, faz um redirecionamento 302 para a página real.


1
A parte que a maioria das pessoas não entende sobre isso é que, para funcionar de maneira eficaz, você precisa executar vários navegadores simultaneamente, usando diferentes mapeamentos de host / ip. Por exemplo, eu preciso ter minhas instâncias de produção e teste e depuração abertas em diferentes instâncias do navegador. Cada um deve usar o mesmo nome de host (porque o mapeamento de nome de host HTTP 1.1 mapeia o site correto com base no nome de host). Se você apenas alterar o arquivo host, todas as instâncias dos navegadores serão mapeadas para o novo servidor, não apenas para a instância única.
Erik Funkenbusch

@ Erik Funkenbusch: Obrigado pelo esclarecimento. Bem, minhas idéias restantes: a) Um conceito seria usar algo como virtualização de sistema de arquivos, que é chamada de "Redirecionamento de dados" no Windows e normalmente é usada pelo UAC para oferecer suporte a aplicativos legados que gravam dados em caminhos confidenciais. Talvez haja alguma opção que permita que você a use para seus próprios fins. Então você pode ter um hostsarquivo personalizado para cada processo. b) Interceptação de DNS localmente: a solicitação de "iexplore.exe" etc. pode ser manipulada de acordo com alguma lista que você fornecer. - Tem alguma ideia que você gosta?
precisa

1

Se uma VM completa é demais, uma solução baseada em contêiner pode funcionar.

Se estamos falando de linux aqui, lxcpode ser uma solução viável.

Além disso - mesmo uma VM completa com um mínimo de X11-linux não é tão grande (máximo de 2 GB de disco) e não consome tantos recursos (máx. 512 MB de RAM) com o hardware atual ...

Uma LubuntuVM pode fazer aqui.


Acho que a RAM e o processamento estão OK. O disco compartilhado é o que paralisa o sistema.
JWW

0

Uma solução relativamente simples (mas talvez com um pouco de recursos) seria ter algumas máquinas virtuais em execução no seu host. Cada máquina virtual que possui seu próprio arquivo host.

Então você teria uma máquina virtual para o ambiente de preparação, uma para prod, etc.


Talvez você deva ler os dois primeiros comentários da pergunta. Isso foi abordado há 4 anos.
Erik Funkenbusch 18/03/2014

Na verdade, eu vi o comentário, mas não depois de postar esta resposta. Mas ainda acho que faz sentido tê-la como uma resposta separada (em vez de apenas um comentário), pois pode ajudar outras pessoas com o mesmo tipo de problema.
Pete

Duas VMs danificariam a maioria das estações de trabalho devido ao gargalo de disco compartilhado. Sofro levemente com uma VM aberta (uma é o moderno Mac Mac Book Pro com dois núcleos quad; o segundo é um laptop ASUS moderno com um único quad core). Duas VMs seriam dolorosas.
JWW
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.