Browser con il proprio file host?


36

Ho un certo numero di server di gestione temporanea e di test ai quali ho bisogno di modificare costantemente il mio file hosts per accedere (dipendono dal nome del dominio, quindi devo cambiare il file hosts per farlo funzionare).

Lo trovo fastidioso. Vorrei installare un browser portatile di qualche tipo per ogni tipo di sito con cui voglio lavorare. Esiste una versione di qualsiasi browser Web grafico (inclusi i browser basati sui motori di rendering di altri browser) che lo farà?

In questo modo posso semplicemente avviare l'istanza che è già configurata per funzionare con la stadiazione se voglio testare la stadiazione.

Qualche idea?

EDIT: la caratteristica importante è la possibilità di eseguire due browser contemporaneamente, entrambi navigando verso some-address.com, ma con un browser che indirizza le richieste al server 1.2.3.4e l'altro che dirige le richieste al server su 5.6.7.8.

EDIT: (16/03/14)

Questa domanda è stata posta diversi anni fa e ancora non conosco un modo decente per farlo. Vorrei provare a spiegare ulteriormente, perché le persone sembrano fraintendere il problema. Non è qualcosa che può essere facilmente risolto semplicemente usando un server proxy. Suppongo che potrebbe essere possibile scrivere regole estese in un server proxy per risolvere i problemi, ma questa è un'enorme soluzione complessa a quello che dovrebbe essere un semplice problema.

Quindi per chiarire:

Esistono tre server Web. Produzione, test e sviluppo. Ognuno esegue un'applicazione multi-tenant che si personalizza in base al nome host utilizzato per accedervi. Concettualmente, questo è simile a un Content Management System o un motore di blog che consente a più siti di essere eseguiti dalla stessa istanza del server. È sufficiente puntare il nome host sul server e qualunque sia il nome host utilizzato per accedervi tramite la mappatura del nome host HTTP 1.1, è il sito che visualizza.

Qualsiasi soluzione che riscrive semplicemente il file host non funziona a causa della necessità di eseguire più finestre del browser contemporaneamente su diversi siti, produzione, sviluppo, test, ecc ... Quindi semplicemente alterando costantemente il file host non funziona funziona perché interessa tutte le istanze del browser. Se si modifica il mapping per un browser, anche gli altri browser vengono ora mappati su quel server in modo che eventuali richieste successive vengano indirizzate al server errato.

Tutto quello che sto cercando è un modo per forzare questa istanza del browser a utilizzare questo file host e quell'istanza del browser a utilizzare quel file host, ad esempio tramite un parametro della riga di comando. Non mi interessa nemmeno se devo installare più copie del browser.

Questo può essere fattibile con firefox portable, poiché penso che utilizzi i propri file di configurazione per copia installata, ma il problema è che il software di terze parti utilizzato per amministrare i siti non funziona con Firefox (i siti stessi lo fanno, ma gli strumenti di amministrazione no, funzionano bene con Chrome, IE e Opera, comunque .. e non ho accesso al sorgente per questo per risolverlo).


Molte persone nella tua situazione eseguono un paio di macchine virtuali WinXP o Ubuntu con diverse configurazioni HOSTS.
digitxp,

@digitxp - Sì, ci avevo già pensato, ma in realtà non voglio l'overhead di più VM e diversi interi SO solo per navigare in un paio di siti. Ovviamente, se non c'è altra scelta, è quello che probabilmente dovrò fare ..
Erik Funkenbusch,

Se tutto il resto fallisce: Fiddler Web Debugger (Windows) o GlimmerBlocker e Charles Web Debugging Proxy (Mac) possono riscrivere al volo le richieste ...
Arjan

@Arjan - I proxy funzioneranno in una certa misura, ma dovrei avere un'istanza proxy separata per ogni istanza del browser, o modificare le impostazioni del proxy ogni volta che è ancora più fastidioso che cambiare i file host.
Erik Funkenbusch,

1
Forse un proxy Web come calamari, ti consentirebbe di reindirizzare in un modo che fa quello che vuoi fatto dalla risoluzione DNS? (ovviamente un proxy web può essere configurato in base al browser)
barlop il

Risposte:


19

Il calamaro ha risolto il problema per me. Penso che molti server proxy possano fare lo stesso.

In particolare, ho dovuto installare Squid. Quindi modificare squid.conf in modo che acceda a un file host alternativo. Questa è la linea che vuoi cambiare:

#hosts_file /etc/hosts

Nel mio caso ho usato hosts_file /etc/hosts-squid. Ho creato il /etc/hosts-squidfile e modificato il file hosts-squid in modo che mi desse accesso ai nuovi indirizzi IP desiderati per l'URL specificato. Era tutto ciò che dovevo fare per configurare il server proxy Squid.

Ho quindi creato un comando per avviare il mio browser con le impostazioni proxy. Ero solito:

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

L'esecuzione di quel comando mi dà effettivamente un'istanza corrente di chromium che può accedere all'impostazione dei domini nel file hosts-squid che ho creato.

Sono stato anche in grado di configurare più server proxy utilizzando più istanze di Squid per accedere a un sito Web di produzione, sviluppo e locale sullo stesso computer. Le istruzioni su come eseguire più istanze di Squid sono disponibili qui . Ho anche scritto un post sul blog che spiega il problema e la soluzione in modo un po 'più dettagliato.


8

Credo che tu stia chiedendo di configurare un ambiente virtuale per ogni browser che include il proprio file host.

Una soluzione potrebbe essere quella di utilizzare Sandboxie per configurare un sandbox separato, ognuno contenente il proprio file host. Non è necessario installare il browser nella sandbox per utilizzare il file hosts, appena avviato da quella sandbox. I collegamenti sul desktop possono essere creati per l'avvio del browser dalla sandbox.

Lo svantaggio sarà che i browser verranno isolati dal vero file system, ad esempio quando si scaricano file da Internet, ma Sandboxie include meccanismi per copiare tali file all'esterno della sandbox.

Sfortunatamente, la funzione di eseguire programmi in più di un sandbox contemporaneamente è disponibile solo nella versione a pagamento di Sandboxie (15 euro più tasse per un anno di licenza per uso personale a casa). Il test di fattibilità può essere eseguito utilizzando la versione gratuita.

Per gli utenti Linux, prodotti simili sono:


Mi dispiace per la risposta in ritardo harrymc. Non è chiaro se il programma consente di fornire file di sistema per sandbox come %SYSTEM32%/Drivers/etc/hostssu Windows e /etc/hostssu Linux. Potresti confermare? Preferirei la versione Linux perché ho fatto una rapida valutazione della sicurezza di Sandboxie un paio di anni fa su Windows (non è riuscito e i rapporti all'autore sono rimasti senza risposta).
JWW

se Sandboxie supporta file di sistema per sandbox simili %SYSTEM32%/Drivers/etc/hosts, i punti sono tuoi. Il sistema operativo non era specificato e non è corretto trattenerli se Windows / Sandboxie funziona.
1414

AFAIK Sandboxie crea un file system e un registro completamente paralleli. Per Linux un semplice programma sandbox è arkose o forse sandfox ma non ho esperienza con loro.
harrymc,

Grazie harrymc. Ho problemi a assegnarti i punti. Vedo una casella con +50, ma non posso fare clic su di essa. Inoltre, ho pensato che valesse 100. Qualche idea (o devo vagare su Meta)?
JWW

Vedi le Domande frequenti su Bounty : del valore di 100, una metà è stata assegnata automaticamente dopo 7 + 1 giorni senza risposta designata, una metà è andata persa.
Harry

4

È possibile automatizzare il processo di modifica del file host con firefox + HostAdmin

HostAdmin è un componente aggiuntivo di Firefox, che ti aiuta a modificare il file Hosts, cambiare la mappatura dominio-ip. HostAdmin può comprendere il tuo file Hosts tramite una sintassi del file Hosts migliorata. Inoltre, HostAdmin aggiorna automaticamente la cache DNS ogni volta che modifichi il file Hosts, anche manualmente.

Esempio di configurazione

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

Maggiori informazioni su https://addons.mozilla.org/en-US/firefox/addon/hostadmin/

Istanza multipla

Per eseguire due istanze del browser Firefox in modo simultaneo e indipendente in Linux, creare più launcher con il seguente script. Installa anche il plugin in tutto 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  

È possibile utilizzare l'opzione del profilo ( firefox -P) in un browser per utilizzare i profili nativi per impostazioni diverse e utilizzare contemporaneamente.


1
Chiede 2 browser usando 2 file host contemporaneamente .
harrymc,


@harrym c aggiornato.
Totti,

2

So che questo non è ciò che stai chiedendo, ma una soluzione temporanea potrebbe essere quella di scrivere uno script batch per scambiare i file host e quindi lanciare il browser.

Almeno minimizzerebbe il lavoro che stai facendo.

Oppure potresti semplicemente nominare questi server con qualcosa di completamente diverso nel file hosts in modo da non doverlo cambiare per cominciare.


Non riesco a rinominarli perché le applicazioni Web dipendono dal nome host per il rendering del contenuto giusto. Inoltre, il motivo per cui desidero farlo è che posso eseguire più browser contemporaneamente e andare in scena e un altro in sviluppo. Non puoi farlo scambiando i file hosts.
Erik Funkenbusch,

@MystereMan: se stai parlando di META BASE, esegui il rilevamento del browser sul lato server. Non dovresti avere il tuo nome host in nessun altro URL ...
Tamara Wijsman,

@TomWij - No, non sto parlando di META BASE. Sto parlando di hosting virtuale basato su host, non basato su IP. Il campo hostname determina a quale sito si accede.
Erik Funkenbusch,

@MystereMan: Quindi il tuo primo commento su questa risposta non ha alcun senso. Mentre parli di "l'applicazione web che rende il contenuto giusto", non vedo che cosa hanno a che fare gli host virtuali?
Tamara Wijsman,

@TomWij - Abbiamo un sistema CMS multi-tennant che ospita più siti su un singolo server, con un singolo IP. Per visualizzare un determinato sito, è necessario utilizzare un nome host, altrimenti si accede solo all'istanza predefinita. Devo passare tra la produzione, la gestione temporanea e le versioni di sviluppo di questo server, il che significa cambiare al volo la mappatura dei nomi di dominio con i loro indirizzi IP. Posso farlo nel file hosts, ma questo cambia le cose a livello globale, quindi non posso aprire copie simultanee della stadiazione e della produzione in due diverse istanze del browser.
Erik Funkenbusch,

1

Privoxy può essere utilizzato per questo scopo.


Come funzionerebbe esattamente Privoxy per questo scopo? Sembra solo un altro server proxy locale, nessuno dei quali funziona perché con la maggior parte dei browser non è possibile definire un proxy per istanza .. è possibile definire solo il proxy globale per tutte le istanze
Erik Funkenbusch

@MystereMan: Proporrebbe le tue richieste e quindi le manipolerebbe in altre richieste, è abbastanza facile farlo . Stai parlando senza senso dei server proxy: Mirosoft Internet Explorer (GUI), Mozilla Firefox (GUI), Google Chrome (CLI --proxy-server =), Apple Safari (GUI), Opera (GUI) e qualsiasi altro browser (GUI o CLI) ti consente di impostare il tuo server proxy ...
Tamara Wijsman

@TomWij - No. IE, Chrome e Safari utilizzano tutti l'impostazione del server proxy globale in "Impostazioni Internet". Ciò significa che, se lo si modifica in un browser Web, cambia in tutti. Firefox ha le sue impostazioni per questo, ma sfortunatamente non posso usare Firefox perché non funziona con il CMS che usiamo (tutto il resto lo fa).
Erik Funkenbusch,

@Mystere Man: errato. Smetti di ripetere i tuoi pensieri e vedi invece quale configurazione ti offre ogni singolo browser. Se non stai spendendo lo sforzo per leggere effettivamente la documentazione, non riuscirai mai a risolvere il tuo problema poiché stai chiedendo qualcosa di troppo specifico che non si applica al resto delle persone. Come ho detto prima, ma non sembra che tu abbia letto: qualsiasi browser ti consente di impostare il server proxy per quel browser. Google Chrome fornisce il parametro CLI--proxy-server= .
Tamara Wijsman,

1
Hmm, potrei sbagliarmi su Safari perché non lo uso da un po 'di tempo. Ma penso di averti frainteso, perché dovresti avere un server proxy diverso in ogni singolo browser? Mi sto confondendo perché qualcosa come "x.com = production; stage.x.com = staging; dev.x.com = development" non funzionerebbe solo per te dato un singolo IP e reindirizzamento dell'intestazione host sul server ...
Tamara Wijsman,

1

Non so se questo è abbastanza conveniente per te, ma una possibile soluzione sarebbe installare IIS sul computer con i browser e fornire script lato server (come ASP.net, PHP, Ruby ...) che cambiano il hostsfile e quindi reindirizzare alla pagina effettiva. Nel tuo browser, crei quindi un segnalibro per quello script, ad esempio http://localhost/config_ie.rbche modifica il hostsfile (richiede le autorizzazioni corrette su quel file, ovviamente) e quindi esegui un reindirizzamento 302 sulla pagina reale.


1
La parte che la maggior parte delle persone non riesce a capire a questo proposito è che per funzionare in modo efficace, è necessario essere in grado di eseguire più browser contemporaneamente, utilizzando diversi mapping host / ip. Ad esempio, devo avere le istanze di produzione e test e debug aperte in diverse istanze del browser. Ognuno deve utilizzare lo stesso nome host (poiché la mappatura del nome host HTTP 1.1 mappa il sito corretto in base al nome host). Se si modifica semplicemente il file host, ogni istanza dei browser ora esegue il mapping al nuovo server, non solo alla singola istanza di esso.
Erik Funkenbusch,

@Erik Funkenbusch: grazie per il chiarimento. Bene, le mie idee rimanenti: a) Un concetto sarebbe usare qualcosa come la virtualizzazione del filesystem, che si chiama "Reindirizzamento dei dati" in Windows e viene normalmente utilizzato per UAC per supportare applicazioni legacy che scrivono dati su percorsi sensibili. Forse c'è qualche opzione che ti consente di usarlo per i tuoi scopi. Quindi potresti avere un hostsfile personalizzato per ogni processo. b) Intercettazione DNS locale: la richiesta da "iexplore.exe" ecc. potrebbe essere manipolata in base all'elenco fornito. - C'è qualche idea che ti piace?
Michael Kremser,

1

Se una VM completa è troppo, potrebbe fare una soluzione basata su container.

Se stiamo parlando di Linux qui, lxcpotrebbe essere una soluzione fattibile.

A parte questo, anche una VM completa con un X11-linux minimo non è così grande (massimo 2 GB di disco) e non consuma molte risorse (massimo 512 MB di RAM) con l'hardware di oggi ...

Una LubuntuVM potrebbe fare qui.


Trovo che la RAM e l'elaborazione siano OK. Il disco condiviso è ciò che paralizza il sistema.
JWW

0

Una soluzione relativamente semplice (ma forse un po 'pesante di risorse) sarebbe quella di avere alcune macchine virtuali in esecuzione nel tuo host. Ogni macchina virtuale ha il proprio file host.

Quindi avresti una macchina virtuale per l'ambiente di gestione temporanea, una per prod, ecc.


Forse dovresti leggere i primi due commenti sotto la domanda. Questo è stato risolto 4 anni fa.
Erik Funkenbusch,

In realtà ho visto il commento, ma non fino a quando ho pubblicato questa risposta. Ma penso ancora che abbia senso avere una risposta separata (al contrario di un semplice commento), in quanto può aiutare altre persone con lo stesso tipo di problema.
Pete,

Due macchine virtuali paralizzerebbero la maggior parte delle workstation a causa del collo di bottiglia del disco condiviso. Soffro leggermente con una VM aperta (una è il moderno Mac Mac Book Pro con dual quad core; la seconda è un moderno laptop ASUS con un singolo quad core). Due VM sarebbero dolorose.
JWW
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.