¿Navegador con su propio archivo de hosts?

36

Tengo una serie de servidores de prueba y preparación que necesito modificar constantemente mi archivo de hosts para acceder (dependen del nombre de dominio, por lo que tengo que cambiar el archivo de hosts para que funcionen).

Esto me resulta molesto. Me gustaría configurar un navegador portátil de algún tipo para cada tipo de sitio con el que quiero trabajar. ¿Existe alguna versión de algún navegador web gráfico (incluidos los navegadores basados ​​en los motores de representación de otros navegadores) que haga esto?

De esta manera, simplemente puedo iniciar la instancia que ya está configurada para funcionar con la preparación si quiero probar la preparación.

¿Algunas ideas?

EDITAR: La característica importante es la capacidad de ejecutar dos navegadores de forma concisa, ambos navegando hacia some-address.com, pero con un navegador que dirige las solicitudes al servidor en 1.2.3.4y el otro navegador que dirige las solicitudes al servidor 5.6.7.8.

EDITAR: (16/03/14)

Esta pregunta se hizo hace varios años, y todavía no conozco una forma decente de hacerlo. Permítanme tratar de explicar más, porque la gente parece entender mal el problema. No es algo que se pueda solucionar fácilmente con solo usar un servidor proxy. Supongo que podría ser posible escribir reglas extensas en un servidor proxy para resolver los problemas, pero esa es una solución enorme y compleja para lo que debería ser un problema simple.

Entonces para aclarar:

Hay tres servidores web. Producción, prueba y desarrollo. Cada uno ejecuta una aplicación multiinquilino que se personaliza según el nombre de host utilizado para acceder. Conceptualmente, esto es similar a un sistema de gestión de contenido o motor de blog que permite ejecutar múltiples sitios desde la misma instancia del servidor. Simplemente apunte el nombre de host al servidor, y el nombre de host que se utilice para acceder a él a través de la asignación de nombres de host HTTP 1.1, es el sitio que muestra.

Cualquier solución que simplemente reescribe el archivo host no funciona debido al requisito de ejecutar múltiples ventanas del navegador al mismo tiempo en los diferentes sitios, producción, desarrollo, prueba, etc. Así que simplemente alterar constantemente el archivo host no funciona funciona porque afecta a todas las instancias del navegador. Si cambia la asignación para un navegador, los otros navegadores ahora también se asignan a ese servidor, por lo que cualquier solicitud posterior irá al servidor incorrecto.

Todo lo que estoy buscando es una forma de forzar a esta instancia del navegador a usar este archivo host, y esa instancia del navegador a usar ese archivo host, como a través de un parámetro de línea de comando. Ni siquiera me importa si necesito instalar varias copias del navegador.

Esto puede ser factible con Firefox Portable, ya que creo que usa sus propios archivos de configuración por copia instalada, pero el problema es que el software de terceros utilizado para administrar los sitios no funciona con Firefox (los sitios sí lo hacen, pero las herramientas de administración no, funcionan bien con Chrome e IE y Opera, sin embargo ... y no tengo acceso a la fuente para que esto lo solucione).

Erik Funkenbusch
fuente
La mayoría de las personas en su situación ejecutan un par de máquinas virtuales WinXP o Ubuntu con diferentes configuraciones de HOSTS.
digitxp
@digitxp: Sí, ya había pensado en eso, pero realmente no quiero la sobrecarga de varias máquinas virtuales y varios sistemas operativos completos solo para navegar en un par de sitios. Obviamente, si no hay otra opción, eso es lo que probablemente tendré que hacer ...
Erik Funkenbusch
Si todo lo demás falla: Fiddler Web Debugger (Windows) o GlimmerBlocker y Charles Web Debugging Proxy (Mac) pueden reescribir las solicitudes sobre la marcha ...
Arjan
@Arjan: los servidores proxy funcionarán hasta cierto punto, pero tendría que tener una instancia de proxy separada para cada instancia del navegador, o cambiar la configuración del proxy cada vez, lo que es aún más molesto que cambiar los archivos del host.
Erik Funkenbusch
1
¿Quizás un Proxy Web como el calamar le permitiría redirigir de una manera que haga lo que quiere hacer desde la resolución DNS? (por supuesto, un proxy web se puede configurar por navegador)
barlop

Respuestas:

19

Squid resolvió el problema por mí. Creo que muchos servidores proxy podrían hacer lo mismo.

Específicamente, tuve que instalar Squid. Luego cambie squid.conf para que acceda a un archivo de hosts alternativo. Esta es la línea que desea cambiar:

#hosts_file /etc/hosts

En mi caso lo usé hosts_file /etc/hosts-squid. Creé el /etc/hosts-squidarchivo y cambié el archivo hosts-squid para que me diera acceso a las nuevas direcciones IP que quería para la URL dada. Eso fue todo lo que necesitaba hacer para configurar el servidor proxy Squid.

Luego creé un comando para iniciar mi navegador con la configuración del proxy. Solía:

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

Ejecutar ese comando efectivamente me da una instancia en ejecución de chromium que puede acceder a la configuración de dominios en el archivo hosts-squid que creé.

También pude configurar más servidores proxy usando múltiples instancias de Squid para acceder a un sitio web de producción, desarrollo y local en la misma computadora. Las instrucciones sobre cómo ejecutar varias instancias de Squid están aquí . También escribí una publicación de blog explicando el problema y la solución con un poco más de detalle.

Dave Parrish
fuente
8

Creo que está solicitando configurar un entorno virtual para cada navegador que incluya su propio archivo de hosts.

Una solución podría ser usar Sandboxie para configurar un sandbox separado, cada uno con su propio archivo de hosts. El navegador no necesita estar instalado en el sandbox para usar el archivo hosts, solo se inició desde dentro de ese sandbox. Se pueden crear accesos directos de escritorio para iniciar el navegador desde el entorno limitado.

La desventaja será que los navegadores estarán aislados del sistema de archivos real, por ejemplo, cuando descarguen archivos de Internet, pero Sandboxie incluye mecanismos para copiar dichos archivos fuera del sandbox.

Desafortunadamente, la función de ejecutar programas en más de un sandbox al mismo tiempo solo está disponible en la versión paga de Sandboxie (15 euros más impuestos por un año de licencia para uso personal en el hogar). Las pruebas de viabilidad se pueden hacer con la versión gratuita.

Para usuarios de Linux, productos similares son:

harrymc
fuente
Perdón por la respuesta tardía harrymc. No está claro si el programa le permite a uno proporcionar archivos de sistema por espacio aislado como %SYSTEM32%/Drivers/etc/hostsen Windows y /etc/hostsLinux. ¿Podrias confirmar? Prefiero la versión de Linux porque hice una evaluación rápida de seguridad de Sandboxie hace un par de años en Windows (falló, y los informes al autor quedaron sin respuesta).
jww
si Sandboxie admite archivos de sistema por espacio aislado como %SYSTEM32%/Drivers/etc/hosts, entonces los puntos son suyos. El sistema operativo no se especificó correctamente y no es justo para usted retenerlos si Windows / Sandboxie funciona.
jww
AFAIK Sandboxie crea un sistema de archivos y registro completamente paralelos. Para Linux, un simple programa sandbox es arkose o quizás sandfox, pero no tengo experiencia con ellos.
harrymc
Gracias harrymc Tengo problemas para otorgarle los puntos. Veo un cuadro con +50, pero no puedo hacer clic en él. Además, pensé que valía 100. ¿Alguna idea (o necesito deambular por Meta)?
jww
Consulte las Preguntas frecuentes sobre recompensas : de la recompensa de 100, la mitad se otorgó automáticamente después de 7 + 1 días sin respuesta designada, la mitad se perdió.
harrymc
4

Puede automatizar el proceso de cambiar el archivo de host con firefox + HostAdmin

HostAdmin es un complemento de Firefox, que le ayuda a modificar el archivo Hosts, cambiar la asignación de dominio-ip. HostAdmin puede entender su archivo Hosts a través de una sintaxis mejorada de archivos Hosts. Además, HostAdmin actualiza su caché DNS automáticamente cada vez que cambia su archivo Hosts, incluso manualmente.

Ejemplo de configuración

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

Más información en https://addons.mozilla.org/en-US/firefox/addon/hostadmin/

Instancia múltiple

Para ejecutar dos instancias del navegador Firefox de forma concisa e independiente en Linux, cree múltiples lanzadores con el siguiente script. También instale el complemento en todo 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  

Puede usar la opción de perfil ( firefox -P) en un navegador para usar perfiles nativos para diferentes configuraciones y puede usar simultáneamente.

totti
fuente
1
Él está pidiendo 2 navegadores que usan 2 archivos hosts al mismo tiempo .
harrymc
@harrym c actualizado.
totti
2

Sé que esto no es lo que está pidiendo, pero una solución temporal podría ser escribir un script por lotes para intercambiar los archivos de host y luego bloquear el navegador.

Al menos minimizaría el trabajo que estás haciendo.

O simplemente puede nombrar a este servidor como algo completamente diferente en el archivo de hosts para que nunca tenga que cambiarlo para empezar.

Chris Harrod
fuente
No puedo cambiarles el nombre porque las aplicaciones web dependen del nombre de host para representar el contenido correcto. Además, la razón por la que deseo hacer esto es que puedo ejecutar múltiples navegadores al mismo tiempo y tener uno para organizar y otro para desarrollar. No puede hacer eso intercambiando archivos de host.
Erik Funkenbusch
@MystereMan: si está hablando de META BASE, simplemente haga la detección del navegador del lado del servidor. No debe tener su propio nombre de host en ninguna otra URL ...
Tamara Wijsman
@TomWij - No, no estoy hablando de META BASE. Estoy hablando de alojamiento virtual basado en host, no basado en IP. El campo de nombre de host determina a qué sitio se accede.
Erik Funkenbusch
@MystereMan: Entonces tu primer comentario sobre esta respuesta no tiene ningún sentido. Como está hablando de "la aplicación web que presenta el contenido correcto", no veo qué tienen que ver los hosts virtuales con eso.
Tamara Wijsman
@TomWij: tenemos un sistema CMS multi-tennant que aloja múltiples sitios en un solo servidor, con una sola IP. Para ver un sitio determinado, debe usar un nombre de host; de lo contrario, solo accederá a la instancia predeterminada. Necesito cambiar entre las versiones de producción, preparación y desarrollo de este servidor, lo que significa cambiar la asignación de nombres de dominio a sus direcciones IP sobre la marcha. Puedo hacer esto en el archivo hosts, pero eso cambia las cosas globalmente, por lo que no puedo abrir copias simultáneas de puesta en escena y producción en dos instancias de navegador diferentes.
Erik Funkenbusch
1

Privoxy puede usarse para este propósito.

Tamara Wijsman
fuente
¿Cómo, exactamente, trabajaría Privoxy para este propósito? Parece simplemente otro servidor proxy local, ninguno de los cuales funciona porque con la mayoría de los navegadores no se puede definir un proxy por instancia ... solo se puede definir el proxy global para todas las instancias
Erik Funkenbusch
@MystereMan: Representaría sus solicitudes y, por lo tanto, manipularía las solicitudes en otras solicitudes, es bastante fácil hacerlo . Está hablando sin sentido sobre los servidores proxy: Mirosoft Internet Explorer (GUI), Mozilla Firefox (GUI), Google Chrome (CLI --proxy-server =), Apple Safari (GUI), Opera (GUI) y cualquier otro navegador (GUI o CLI) le permite configurar su propio servidor proxy ...
Tamara Wijsman
@TomWij: No. IE, Chrome y Safari utilizan la configuración del servidor proxy global en "Configuración de Internet". Eso significa que si lo cambia en un navegador web, cambia en todos ellos. Firefox tiene su propia configuración para esto, pero desafortunadamente no puedo usar Firefox porque no funciona con el CMS que usamos (todo lo demás sí).
Erik Funkenbusch
@Mystere Man: Incorrecto. Deje de repetir sus pensamientos y, en cambio, vea qué configuración le ofrece cada navegador individual. Si no está haciendo el esfuerzo de leer realmente la documentación, nunca podrá resolver su problema, ya que está preguntando algo demasiado específico que no se aplica al resto de las personas. Como dije antes, pero no parecía haber leído: cualquier navegador le permite configurar el servidor proxy para ese navegador. Google Chrome proporciona el parámetro CLI--proxy-server= .
Tamara Wijsman
1
Hmm, podría estar equivocado sobre Safari ya que no lo usé durante bastante tiempo. Pero creo que te he entendido mal, ¿por qué querrías tener un servidor proxy diferente en cada navegador? Me estoy confundiendo porque algo como "x.com = producción; stage.x.com = puesta en escena; dev.x.com = desarrollo" no funcionaría para usted dada una sola IP y redirección de encabezado de host en el servidor ...
Tamara Wijsman
1

No sé si esto es lo suficientemente conveniente para usted, pero una posible solución sería instalar IIS en la máquina con los navegadores y proporcionar scripts del lado del servidor (como ASP.net, PHP, Ruby ...) que cambian el hostsarchivo y luego redirigir a la página real. En sus navegadores, crea un marcador para ese script, por ejemplo, http://localhost/config_ie.rbque cambia el hostsarchivo (requiere los permisos correctos en ese archivo, por supuesto) y luego realiza un redireccionamiento 302 a la página real.

Michael Kremser
fuente
1
La parte que la mayoría de la gente no entiende acerca de esto es que para poder trabajar de manera efectiva, debe poder ejecutar múltiples navegadores simultáneamente, utilizando diferentes asignaciones de host / ip. Por ejemplo, necesito tener abiertas mis instancias de producción y prueba y depuración en diferentes instancias del navegador. Cada uno tiene que usar el mismo nombre de host (porque la asignación de nombres de host HTTP 1.1 asigna el sitio correcto en función del nombre de host). Si solo cambia el archivo host, entonces cada instancia de los navegadores ahora se asigna al nuevo servidor, no solo la instancia única del mismo.
Erik Funkenbusch
@Erik Funkenbusch: Gracias por la aclaración. Bueno, mis ideas restantes: a) Un concepto sería usar algo como la virtualización del sistema de archivos, que se llama "Redirección de datos" en Windows y normalmente se usa para UAC para admitir aplicaciones heredadas que escriben datos en rutas sensibles. Quizás haya alguna opción que le permita usarla para sus propios fines. Entonces podría tener un hostsarchivo personalizado para cada proceso. b) Intercepción de DNS localmente: la solicitud de "iexplore.exe", etc., podría manipularse de acuerdo con alguna lista que usted proporcione. - ¿Hay alguna idea que te guste?
Michael Kremser
1

Si una máquina virtual completa es demasiado, una solución basada en contenedor podría funcionar.

Si estamos hablando de Linux aquí, lxcpodría ser una solución factible.

Aparte de eso, incluso una máquina virtual completa con un X11-linux mínimo no es tan grande (máximo 2 GB de disco) y no consume tantos recursos (máx. 512 MB de RAM) con el hardware actual ...

Una Lubuntumáquina virtual podría hacer aquí.

Nils
fuente
Encuentro que la RAM y el procesamiento están bien. El disco compartido es lo que paraliza el sistema.
jww
0

Una solución relativamente simple (pero quizás con un poco de recursos) sería tener algunas máquinas virtuales ejecutándose en su host. Cada máquina virtual tiene su propio archivo host.

Por lo tanto, tendría una máquina virtual para el entorno de preparación, una para productos, etc.

Pete
fuente
Tal vez deberías leer los dos primeros comentarios bajo la pregunta. Esto fue abordado hace 4 años.
Erik Funkenbusch
En realidad, vi el comentario, pero no hasta después de que publiqué esta respuesta. Pero sigo pensando que tiene sentido tenerlo como una respuesta separada (en lugar de solo un comentario), ya que puede ayudar a otras personas con el mismo tipo de problema.
Pete
Dos máquinas virtuales paralizarían la mayoría de las estaciones de trabajo debido al cuello de botella de disco compartido. Sufro levemente con una VM abierta (una es la moderna Mac Mac Book Pro con dos núcleos cuádruples; la segunda es una laptop ASUS moderna con un solo núcleo cuádruple). Dos máquinas virtuales serían dolorosas.
jww