Navigateur avec son propre fichier hôtes?

36

J'ai un certain nombre de serveurs de test et de transfert que j'ai besoin de modifier constamment mon fichier hosts pour y accéder (ils dépendent du nom de domaine, je dois donc modifier le fichier hosts pour les faire fonctionner).

Je trouve cela agaçant. J'aimerais installer un navigateur portable pour chaque type de site avec lequel je souhaite travailler. Existe-t-il une version de tout navigateur Web graphique (y compris des navigateurs basés sur les moteurs de rendu des autres navigateurs) qui le fera?

De cette façon, je peux simplement lancer l'instance déjà configurée pour fonctionner avec le transfert si je veux tester le transfert.

Des idées?

EDIT: La fonctionnalité importante est la possibilité d’exécuter deux navigateurs simultanément, les deux navigant vers some-address.com, mais avec un navigateur dirigeant les demandes au serveur 1.2.3.4et l’autre navigateur dirigeant les demandes au serveur 5.6.7.8.

EDIT: (16/03/14)

Cette question a été posée il y a plusieurs années et je ne connais toujours pas de manière décente de le faire. Permettez-moi d’essayer d’expliquer davantage, car les gens semblent mal comprendre le problème. Ce n'est pas quelque chose qui peut être facilement résolu simplement en utilisant un serveur proxy. Je suppose qu’il serait peut-être possible d’écrire des règles détaillées sur un serveur proxy pour résoudre les problèmes, mais c’est une solution extrêmement complexe à ce qui devrait être un problème simple.

Donc, pour clarifier:

Il y a trois serveurs Web. Production, test et développement. Chacun exécute une application multi-locataire qui se personnalise en fonction du nom d'hôte utilisé pour y accéder. En principe, cela ressemble à un système de gestion de contenu ou à un moteur de blog qui permet à plusieurs sites d'être exécutés à partir de la même instance de serveur. Il vous suffit de pointer le nom d'hôte vers le serveur et quel que soit le nom d'hôte utilisé pour y accéder via le mappage de nom d'hôte HTTP 1.1, correspond-il au site affiché.

Toute solution qui ne fait que réécrire le fichier hôte ne fonctionne pas car il est nécessaire d’exécuter simultanément plusieurs fenêtres de navigateur sur les différents sites, de production, de développement, de test, etc. fonctionne car il affecte toutes les instances du navigateur. Si vous modifiez le mappage pour un navigateur, les autres navigateurs sont également mappés sur ce serveur, de sorte que toute demande ultérieure sera adressée au mauvais serveur.

Tout ce que je recherche, c'est un moyen de forcer cette instance de navigateur à utiliser ce fichier hôte et cette instance de navigateur à utiliser ce fichier hôte, par exemple via un paramètre de ligne de commande. Je ne me soucie même pas si j'ai besoin d'installer plusieurs copies du navigateur.

C'est peut-être faisable avec firefox portable, car je pense qu'il utilise ses propres fichiers de configuration par copie installée, mais le problème est que le logiciel tiers utilisé pour administrer les sites ne fonctionne pas avec firefox (les sites eux-mêmes le font, mais les outils d'administration ne fonctionne pas, ils fonctionnent bien avec chrome et IE et Opera, cependant .. et je n’ai pas accès au code source pour résoudre ce problème).

Erik Funkenbusch
la source
La plupart des gens dans votre situation exécutent quelques machines virtuelles WinXP ou Ubuntu avec différentes configurations HOSTS.
digitxp
@digitxp - Oui, j'avais déjà pensé à cela, mais je ne veux vraiment pas des frais généraux occasionnés par plusieurs ordinateurs virtuels et plusieurs systèmes d'exploitation complets, juste pour parcourir quelques sites. Évidemment, s'il n'y a pas d'autre choix, c'est probablement ce que je devrai faire.
Erik Funkenbusch
Si tout le reste échoue: Fiddler Web Debugger (Windows) ou GlimmerBlocker et Charles Web Debugging Proxy (Mac) peuvent réécrire les demandes à la volée ...
Arjan
@Arjan - Les procurations fonctionneront dans une certaine mesure, mais je devrais avoir une instance de proxy distincte pour chaque instance de navigateur ou modifier les paramètres de proxy à chaque fois, ce qui est encore plus gênant que de modifier les fichiers hôtes.
Erik Funkenbusch
1
Peut-être qu'un proxy Web, tel que calmar, vous permettrait de rediriger de manière à obtenir ce que vous voulez faire à partir de la résolution DNS? (bien sûr, un proxy Web peut être configuré navigateur par navigateur)
barlop

Réponses:

19

Squid a résolu le problème pour moi. Je pense que beaucoup de serveurs proxy pourraient faire la même chose.

Plus précisément, j'ai dû installer Squid. Modifiez ensuite le fichier squid.conf afin qu’il accède à un fichier d’hôte alternatif. C'est la ligne que vous voulez changer:

#hosts_file /etc/hosts

Dans mon cas j'ai utilisé hosts_file /etc/hosts-squid. J'ai créé le /etc/hosts-squidfichier et modifié le fichier hosts-squid afin qu'il me donne accès aux nouvelles adresses IP que je voulais pour l'URL donnée. C’était tout ce dont j'avais besoin pour configurer le serveur proxy Squid.

J'ai ensuite créé une commande pour lancer mon navigateur avec les paramètres de proxy. J'ai utilisé:

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

L'exécution de cette commande me donne effectivement une instance en cours d'exécution de chrome qui peut accéder aux domaines configurés dans le fichier hosts-squid que j'ai créé.

J'ai également pu configurer davantage de serveurs proxy en utilisant plusieurs instances de Squid pour accéder à un site Web de production, de développement et local sur le même ordinateur. Les instructions sur l'exécution de plusieurs instances de Squid sont disponibles ici . J'ai également écrit un article de blog expliquant le problème et la solution de manière plus détaillée.

Dave Parrish
la source
8

Je crois que vous demandez la configuration d’un environnement virtuel pour chaque navigateur, y compris son propre fichier hosts.

Une solution pourrait être d’utiliser Sandboxie pour configurer un sandbox séparé, chacun contenant son propre fichier hosts. Le navigateur n'a pas besoin d'être installé dans le bac à sable pour utiliser le fichier hosts, qui vient de démarrer à l'intérieur de ce bac à sable. Des raccourcis sur le bureau peuvent être créés pour lancer le navigateur à partir du sandbox.

L'inconvénient sera que les navigateurs vont être isolés du système de fichiers réel, par exemple lors du téléchargement de fichiers depuis Internet, mais Sandboxie inclut des mécanismes permettant de copier ces fichiers en dehors du bac à sable.

Malheureusement, la fonctionnalité d’exécution de programmes dans plusieurs bacs à la fois n’est disponible que dans la version payante de Sandboxie (15 euros plus taxes pour une licence d’un an pour un usage personnel à la maison). Les tests de faisabilité peuvent être effectués à l'aide de la version gratuite.

Pour les utilisateurs de Linux, les produits similaires sont:

harrymc
la source
Désolé pour la réponse tardive harrymc. Ce n'est pas clair si le programme permet de fournir des fichiers système par bac à sable, comme %SYSTEM32%/Drivers/etc/hostssous Windows et /etc/hostsLinux. Pourriez-vous confirmer? Je préférerais la version Linux car j'ai effectué une évaluation rapide de la sécurité de Sandboxie il y a quelques années sous Windows (elle a échoué et les rapports à l'auteur sont restés sans réponse).
jww
Si Sandboxie prend en charge les fichiers système par bac à sable %SYSTEM32%/Drivers/etc/hosts, les points vous appartiennent. Le système d'exploitation était sous-spécifié et il n'est pas juste que vous les refusiez si Windows / Sandboxie fonctionne.
jww
AFAIK Sandboxie crée un système de fichiers et un registre complètement parallèles. Pour Linux, un programme sandbox simple est arkose ou peut-être sandfox mais je n’ai aucune expérience avec eux.
harrymc
Merci harrymc. J'ai du mal à vous attribuer les points. Je vois une boîte avec +50, mais je ne peux pas cliquer dessus. De plus, je pensais que cela valait la peine de gagner 100. Des idées (ou dois-je me déplacer vers Meta)?
jww
Voir la FAQ sur les primes: Sur la prime de 100, une moitié a été attribuée automatiquement après 7 + 1 jours sans réponse désignée, une moitié a été perdue.
harrymc
4

Vous pouvez automatiser le processus de modification du fichier hôte avec firefox + HostAdmin

HostAdmin est un addon Firefox, qui vous aide à modifier le fichier Hosts, à changer de mappage domain-ip. HostAdmin peut comprendre votre fichier Hosts via une syntaxe de fichier Hosts améliorée. En outre, HostAdmin actualise automatiquement votre cache DNS chaque fois que vous modifiez votre fichier Hosts, même manuellement.

Exemple de configuration

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

Plus d'informations sur https://addons.mozilla.org/en-US/firefox/addon/hostadmin/

Instance multiple

Pour exécuter deux instances de navigateur Firefox de manière concurrente et indépendante sous Linux, créez plusieurs lanceurs avec le script suivant. Également installer le plugin dans tous 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  

Vous pouvez utiliser l'option de profil ( firefox -P) dans un navigateur pour utiliser des profils natifs pour différents paramètres et utiliser simultanément.

totti
la source
1
Il demande 2 navigateurs utilisant 2 fichiers hôtes simultanément .
harrymc
@harrym c mis à jour.
Totti
2

Je sais que ce n’est pas ce que vous demandez, mais une solution temporaire pourrait consister à écrire un script de traitement par lots pour échanger les fichiers hôtes, puis valider le navigateur.

Au moins, cela minimiserait le travail que vous faites.

Ou vous pouvez simplement nommer ces serveurs quelque chose de complètement différent dans le fichier hosts afin de ne jamais avoir à le changer pour commencer.

Chris Harrod
la source
Je ne peux pas les renommer car les applications Web dépendent du nom d'hôte pour restituer le bon contenu. Aussi, la raison pour laquelle je souhaite faire cela est que je peux exécuter plusieurs navigateurs en même temps et avoir un accès à la mise en scène et un autre au dev. Vous ne pouvez pas faire cela en échangeant des fichiers hôtes.
Erik Funkenbusch
@MystereMan: Si vous parlez de META BASE, lancez simplement la détection du navigateur côté serveur. Vous ne devriez pas avoir votre propre nom d'hôte dans une autre URL ...
Tamara Wijsman Le
@TomWij - Non, je ne parle pas de META BASE. Je parle d’hébergement virtuel basé sur l’hôte, pas d’IP. Le champ nom d’hôte détermine le site auquel vous accédez.
Erik Funkenbusch le
@ MystereMan: Votre premier commentaire sur cette réponse n'a donc aucun sens. Comme vous parlez de "l'application Web qui restitue le bon contenu", je ne vois pas ce que les hôtes virtuels ont à voir avec cela?
Tamara Wijsman le
@TomWij - Nous avons un système de gestion de contenu multi-tennant qui héberge plusieurs sites sur un seul serveur, avec une seule adresse IP. Pour afficher un site donné, vous devez utiliser un nom d'hôte. Sinon, vous accédez uniquement à l'instance par défaut. Je dois basculer entre les versions de production, de stockage intermédiaire et de développement de ce serveur, ce qui signifie changer le mappage des noms de domaine en adresses IP à la volée. Je peux le faire dans le fichier hosts, mais cela change les choses de manière globale, donc je ne peux pas ouvrir des copies simultanées de stockage intermédiaire et de production dans deux instances de navigateur différentes.
Erik Funkenbusch le
1

Privoxy peut être utilisé à cette fin.

Tamara Wijsman
la source
Comment, exactement, Privoxy fonctionnerait-il à cette fin? Cela ressemble à un autre serveur proxy local, mais aucun ne fonctionne car avec la plupart des navigateurs, vous ne pouvez pas définir de proxy par instance. Vous ne pouvez définir que le proxy global pour toutes les instances
Erik Funkenbusch le
@MystereMan: Cela traiterait vos demandes par proxy et donc les transformerait en d'autres demandes, c'est assez facile à faire . Vous parlez incohérent à propos des serveurs proxy: Mirosoft Internet Explorer (GUI), Mozilla Firefox (GUI), Google Chrome (CLI - serveur proxy), Apple Safari (GUI), Opera (GUI) et tout autre navigateur. (GUI ou CLI) vous permet de configurer votre propre serveur proxy ...
Tamara Wijsman
@TomWij - Non. IE, Chrome et Safari utilisent tous le paramètre de serveur proxy global dans "Paramètres Internet". Cela signifie que si vous le modifiez dans un navigateur Web, cela change dans tous les cas. Firefox a ses propres paramètres pour cela, mais malheureusement, je ne peux pas utiliser Firefox car cela ne fonctionne pas avec le CMS que nous utilisons (tout le reste).
Erik Funkenbusch le
@Mystere Man: Incorrect. Arrêtez de répéter vos pensées et voyez à la place la configuration que chaque navigateur vous donne. Si vous ne faites pas l'effort de lire la documentation, vous ne pourrez jamais résoudre votre problème car vous demandez quelque chose de trop spécifique qui ne s'applique pas au reste de la population. Comme je l'ai déjà dit, vous ne semblez pas avoir lu: Tout navigateur vous permet de définir le serveur proxy pour ce navigateur. Google Chrome fournit le paramètre CLI--proxy-server= .
Tamara Wijsman le
1
Hmm, je peux me tromper à propos de Safari car je ne l'ai pas utilisé pendant un bon bout de temps. Mais je pense vous avoir mal compris, pourquoi voudriez-vous avoir un serveur proxy différent dans chaque navigateur? Je ne comprends pas très bien pourquoi quelque chose comme "x.com = production; stage.x.com = staging; dev.x.com = développement" ne fonctionnerait pas pour vous, étant donné qu'une seule adresse IP et une redirection d'en-tête d'hôte sur le serveur ...
Tamara Wijsman le
1

Je ne sais pas si cela vous convient, mais une solution possible serait d’installer IIS sur la machine équipée des navigateurs et de fournir des scripts côté serveur (tels que ASP.net, PHP, Ruby ...) qui modifient le hostsfichier et puis redirigez vers la page réelle. Dans vos navigateurs, vous créez ensuite un signet pour ce script, par exemple, http://localhost/config_ie.rbce qui modifie le hostsfichier (nécessite des autorisations correctes sur ce fichier, bien sûr), puis vous effectuez une redirection 302 vers la page réelle.

Michael Kremser
la source
1
Ce que la plupart des gens ne comprennent pas à ce sujet, c’est que pour fonctionner efficacement, vous devez pouvoir exécuter plusieurs navigateurs simultanément, en utilisant différents mappages hôte / ip. Par exemple, mes instances de production et de test et de débogage doivent être ouvertes dans différentes instances du navigateur. Chacun doit utiliser le même nom d'hôte (car le mappage de nom d'hôte HTTP 1.1 mappe le site approprié en fonction du nom d'hôte). Si vous ne modifiez que le fichier hôte, chaque instance des navigateurs est maintenant mappée sur le nouveau serveur, et pas seulement sur sa seule instance.
Erik Funkenbusch
@Erik Funkenbusch: Merci pour la clarification. Mes idées restantes sont les suivantes: a) Un des concepts serait d'utiliser quelque chose comme la virtualisation de système de fichiers, appelée "redirection de données" dans Windows et utilisée normalement pour le contrôle de compte d'utilisateur (UAC) afin de prendre en charge les applications héritées qui écrivent des données sur des chemins sensibles. Peut-être existe-t-il une option qui vous permet de l'utiliser à vos propres fins. Ensuite, vous pourriez avoir un hostsfichier personnalisé pour chaque processus. b) Interception DNS locale: les demandes provenant de "iexplore.exe", etc., pourraient être manipulées en fonction de la liste fournie. - Y a-t-il une idée que vous aimez?
Michael Kremser
1

Si un ordinateur virtuel complet est trop, une solution basée sur un conteneur peut faire l'affaire.

Si nous parlons de Linux ici, lxcpourrait être une solution réalisable.

En dehors de cela, même une machine virtuelle complète avec un minimum de linux X11 n’est pas si grosse (disque maximum de 2 Go) et ne consomme que beaucoup de ressources (512 Mo de RAM maximum) avec le matériel actuel ...

Une Lubuntumachine virtuelle pourrait faire ici.

Nils
la source
Je trouve la RAM et le traitement sont OK. Le disque partagé est ce qui paralyse le système.
jww
0

Une solution relativement simple (mais peut-être un peu lourde en ressources) consisterait à exécuter quelques machines virtuelles sur votre hôte. Chaque machine virtuelle ayant son propre fichier hôte.

Donc, vous auriez une machine virtuelle pour l'environnement de transfert, une pour la production, etc.

Pete
la source
Peut-être devriez-vous lire les deux premiers commentaires de la question. Cela a été abordé il y a 4 ans.
Erik Funkenbusch
En fait, j'ai vu le commentaire, mais pas avant d'avoir posté cette réponse. Mais je pense toujours que cela a du sens de l'avoir comme une réponse séparée (par opposition à un simple commentaire), car cela peut aider d'autres personnes avec le même type de problème.
Pete
Deux ordinateurs virtuels paralyseraient la plupart des stations de travail en raison du goulot d'étranglement partagé du disque. Je souffre légèrement d’une machine virtuelle ouverte (l’un est un Mac Mac Book Pro moderne à double cœur, le second est un ordinateur portable ASUS moderne à un seul cœur). Deux ordinateurs virtuels seraient douloureux.
jww