Browser mit eigener Hosts-Datei?

36

Ich habe eine Reihe von Staging- und Testservern, auf die ich meine Hosts-Datei für den Zugriff ständig ändern muss (sie hängen vom Domain-Namen ab, daher muss ich die Hosts-Datei ändern, damit sie funktionieren).

Das finde ich nervig. Ich möchte einen tragbaren Browser für jede Art von Site einrichten, mit der ich arbeiten möchte. Gibt es eine Version eines grafischen Webbrowsers (einschließlich Browsern, die auf den Rendering-Engines anderer Browser basieren), die dies ermöglicht?

Auf diese Weise kann ich einfach die Instanz starten, die bereits für die Arbeit mit Staging konfiguriert ist, wenn ich Staging testen möchte.

Irgendwelche Ideen?

BEARBEITEN: Die wichtige Funktion ist die Fähigkeit, zwei Browser gleichzeitig auszuführen, wobei beide zu some-address.comeinem Browser navigieren, wobei jedoch ein Browser die Anforderungen an den Server 1.2.3.4und der andere Browser die Anforderungen an den Server weiterleitet 5.6.7.8.

EDIT: (16.03.14)

Diese Frage wurde vor einigen Jahren gestellt, und ich kenne immer noch keinen vernünftigen Weg, dies zu tun. Lassen Sie mich versuchen, es weiter zu erklären, da die Leute das Problem falsch zu verstehen scheinen. Dies kann nicht einfach mit einem Proxy-Server behoben werden. Ich nehme an, es könnte möglich sein, umfangreiche Regeln in einen Proxy-Server zu schreiben, um die Probleme zu lösen, aber das ist eine sehr komplexe Lösung für das, was ein einfaches Problem sein sollte.

So zu klären:

Es gibt drei Webserver. Produktion, Test und Entwicklung. Auf jedem Server wird eine mandantenfähige Anwendung ausgeführt, die sich basierend auf dem Hostnamen, der für den Zugriff verwendet wird, selbst anpasst. Konzeptionell ähnelt dies einem Content Management System oder einer Blog-Engine, mit der mehrere Websites auf derselben Serverinstanz ausgeführt werden können. Sie zeigen den Hostnamen einfach auf den Server. Der angezeigte Standort ist der Hostname, der für den Zugriff über die HTTP 1.1-Hostnamenzuordnung verwendet wird.

Jede Lösung, bei der die Hostdatei einfach neu geschrieben wird, funktioniert nicht, da mehrere Browserfenster gleichzeitig auf den verschiedenen Sites, in der Produktion, in der Entwicklung, im Test usw. ausgeführt werden müssen arbeiten, weil es alle Browser-Instanzen betrifft. Wenn Sie die Zuordnung für einen Browser ändern, werden auch die anderen Browser diesem Server zugeordnet, sodass alle nachfolgenden Anforderungen an den falschen Server gesendet werden.

Alles, wonach ich suche, ist eine Möglichkeit, diese Browserinstanz zur Verwendung dieser Hostdatei und diese Browserinstanz zur Verwendung dieser Hostdatei zu zwingen, beispielsweise über einen Befehlszeilenparameter. Es ist mir sogar egal, ob ich mehrere Kopien des Browsers installieren muss.

Dies kann mit Firefox Portable möglich sein, da es meiner Meinung nach seine eigenen Konfigurationsdateien pro installierter Kopie verwendet. Das Problem ist jedoch, dass die zur Verwaltung der Sites verwendete Software von Drittanbietern nicht mit Firefox funktioniert (die Sites selbst tun dies, aber die Admin-Tools) nicht, sie funktionieren jedoch gut mit Chrome und IE und Opera.

Erik Funkenbusch
quelle
Die meisten Personen in Ihrer Situation führen mehrere virtuelle WinXP- oder Ubuntu-Maschinen mit unterschiedlichen HOSTS-Konfigurationen aus.
digitxp
@digitxp - Ja, daran hatte ich bereits gedacht, aber ich möchte nicht, dass der Overhead mehrerer VMs und mehrerer ganzer Betriebssysteme nur zum Durchsuchen einiger Websites verwendet wird. Natürlich, wenn es keine andere Wahl gibt, werde ich das wahrscheinlich tun müssen.
Erik Funkenbusch
Wenn alles andere fehlschlägt: Fiddler Web Debugger (Windows) oder GlimmerBlocker und Charles Web Debugging Proxy (Mac) können die Anforderungen im Handumdrehen umschreiben ...
Arjan
@Arjan - Proxies funktionieren in gewissem Umfang, aber ich müsste für jede Browser-Instanz eine eigene Proxy-Instanz haben oder die Proxy-Einstellungen jedes Mal ändern, was noch ärgerlicher ist als das Ändern von Host-Dateien.
Erik Funkenbusch
1
Vielleicht würde ein Webproxy wie Squid Sie so umleiten lassen, wie Sie es von der DNS-Auflösung gewollt haben? (Natürlich kann ein Web-Proxy auf
Browserbasis

Antworten:

19

Squid hat das Problem für mich gelöst. Ich denke, viele Proxy-Server könnten dasselbe tun.

Insbesondere musste ich Squid installieren. Ändern Sie dann die Datei squid.conf so, dass sie auf eine alternative Hostdatei zugreift. Dies ist die Zeile, die Sie ändern möchten:

#hosts_file /etc/hosts

In meinem Fall habe ich verwendet hosts_file /etc/hosts-squid. Ich habe die /etc/hosts-squidDatei erstellt und die hosts-squid-Datei so geändert, dass ich auf die neuen IP-Adressen zugreifen kann, die ich für die angegebene URL gewünscht habe. Das war alles, was ich tun musste, um den Squid-Proxy-Server zu konfigurieren.

Ich habe dann einen Befehl erstellt, um meinen Browser mit den Proxy-Einstellungen zu starten. Ich benutzte:

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

Wenn ich diesen Befehl ausführe, erhalte ich eine laufende Instanz von Chromium, die auf die in der von mir erstellten hosts-squid-Datei eingerichteten Domänen zugreifen kann.

Ich konnte auch mehr Proxy-Server mit mehreren Instanzen von Squid einrichten, um auf eine Produktions-, Entwicklungs- und lokale Website auf demselben Computer zuzugreifen. Anweisungen zum Ausführen mehrerer Squid-Instanzen finden Sie hier . Ich schrieb auch einen Blog-Beitrag , in dem ich das Problem und die Lösung etwas ausführlicher erläuterte.

Dave Parrish
quelle
8

Ich glaube, Sie möchten für jeden Browser eine virtuelle Umgebung einrichten, die eine eigene Hosts-Datei enthält.

Eine Lösung könnte darin bestehen, mit Sandboxie eine separate Sandbox einzurichten, die jeweils eine eigene Hostdatei enthält. Der Browser muss nicht in der Sandbox installiert sein, um die Hosts-Datei zu verwenden, die gerade in dieser Sandbox gestartet wurde. Desktop-Verknüpfungen können erstellt werden, um den Browser aus der Sandbox heraus zu starten.

Der Nachteil besteht darin, dass die Browser beispielsweise beim Herunterladen von Dateien aus dem Internet vom realen Dateisystem isoliert werden. Sandboxie enthält jedoch Mechanismen zum Kopieren solcher Dateien außerhalb der Sandbox.

Leider ist die Funktion zum Ausführen von Programmen in mehreren Sandboxen gleichzeitig nur in der kostenpflichtigen Version von Sandboxie verfügbar (15 Euro zzgl. MwSt. Für eine einjährige Lizenz für den persönlichen Gebrauch zu Hause). Machbarkeitstests können mit der kostenlosen Version durchgeführt werden.

Für Linux-Benutzer sind ähnliche Produkte:

Harrymc
quelle
Entschuldigung für die verspätete Antwort, harrymc. Es ist nicht klar, ob das Programm die Bereitstellung von Systemdateien pro Sandbox wie %SYSTEM32%/Drivers/etc/hostsunter Windows und /etc/hostsLinux zulässt . Kannst du bestätigen? Ich bevorzuge die Linux-Version, weil ich vor ein paar Jahren eine schnelle Sicherheitsbewertung von Sandboxie unter Windows durchgeführt habe (es ist fehlgeschlagen und die Berichte an den Autor sind unbeantwortet geblieben).
Jww
Wenn Sandboxie Systemdateien pro Sandbox unterstützt %SYSTEM32%/Drivers/etc/hosts, sind die Punkte Ihre. Das Betriebssystem ist nicht genau spezifiziert und es ist nicht fair, sie zurückzuhalten, wenn Windows / Sandboxie funktioniert.
JWW
AFAIK Sandboxie erstellt ein vollständig paralleles Dateisystem und eine Registrierung. Für Linux ist ein einfaches Sandbox-Programm Arkose oder vielleicht Sandfox, aber ich habe keine Erfahrung mit ihnen.
Harrymc
Vielen Dank, Harrymc. Ich habe Probleme, Ihnen die Punkte zuzuerkennen. Ich sehe eine Box mit +50, kann sie aber nicht anklicken. Außerdem dachte ich, es wäre 100 wert. Irgendwelche Ideen (oder muss ich zu Meta hinüberwandern)?
JWW
Siehe die Kopfgeld-FAQ : Von den 100 Kopfgeldern wurde eine Hälfte nach 7 + 1 Tagen automatisch gutgeschrieben, eine Hälfte ging verloren.
Harrymc
4

Sie können den Prozess der Änderung der Host-Datei mit Firefox + HostAdmin automatisieren

HostAdmin ist ein Firefox-Addon, mit dem Sie die Hosts-Datei ändern und die Domain-IP-Zuordnung ändern können. HostAdmin kann Ihre Hosts-Datei anhand einer erweiterten Hosts-Dateisyntax verstehen. Darüber hinaus aktualisiert HostAdmin Ihren DNS-Cache automatisch, wenn Sie Ihre Hosts-Datei ändern, auch manuell.

Beispielkonfiguration

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

Weitere Informationen unter https://addons.mozilla.org/en-US/firefox/addon/hostadmin/

Mehrfachinstanz

Um zwei Instanzen des Firefox-Browsers gleichzeitig und unabhängig voneinander unter Linux auszuführen, erstellen Sie mehrere Startprogramme mit dem folgenden Skript. Installieren Sie das Plugin auch in allen 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  

Sie können die Profiloption ( firefox -P) in einem Browser verwenden, um native Profile für unterschiedliche Einstellungen zu verwenden und diese gleichzeitig zu verwenden.

Totti
quelle
1
Er fragt nach 2 Browsern, die gleichzeitig 2 Hosts-Dateien verwenden .
Harrymc
@harrym c aktualisiert.
Totti
2

Ich weiß, das ist nicht das, wonach Sie fragen, aber eine vorübergehende Lösung könnte darin bestehen, ein Batch-Skript zu schreiben, um die Hosts-Dateien auszutauschen und dann den Browser zu starten.

Zumindest würde es die von Ihnen geleistete Arbeit minimieren.

Oder Sie können diesen Server in der Hosts-Datei einfach einen völlig anderen Namen geben, damit Sie ihn nicht von Anfang an wechseln müssen.

Chris Harrod
quelle
Ich kann sie nicht umbenennen, da die Webanwendungen vom Hostnamen abhängen, um den richtigen Inhalt zu rendern. Der Grund, warum ich dies tun möchte, ist, dass ich mehrere Browser gleichzeitig ausführen und einen zum Staging und einen zum Entwickeln haben kann. Sie können das nicht tun, indem Sie die Hosts-Dateien austauschen.
Erik Funkenbusch
@MystereMan: Wenn Sie über META BASE sprechen, führen Sie die Browsererkennung nur serverseitig durch. Sie sollten keinen eigenen Hostnamen in einer anderen URL haben ...
Tamara Wijsman
@TomWij - Nein, ich spreche nicht über META BASE. Ich spreche von hostbasiertem virtuellem Hosting, nicht von IP-basiertem. Das Feld Hostname bestimmt, auf welche Site zugegriffen wird.
Erik Funkenbusch
@MystereMan: Dann macht dein erster Kommentar zu dieser Antwort keinen Sinn. Wenn Sie von "der Webanwendung, die den richtigen Inhalt wiedergibt" sprechen, sehe ich nicht, was virtuelle Hosts damit zu tun haben.
Tamara Wijsman
@TomWij - Wir haben ein CMS-System mit mehreren Mandanten, das mehrere Standorte auf einem einzigen Server mit einer einzigen IP-Adresse hostet. Um eine gegebene Seite zu sehen wollen , Sie müssen einen Hostnamen verwenden, da sonst nur Sie die Standardinstanz zugreifen. Ich muss zwischen Produktions-, Staging- und Entwicklungsversionen dieses Servers wechseln, was bedeutet, dass die Zuordnung von Domänennamen zu ihren IP-Adressen im laufenden Betrieb geändert wird. Ich kann dies in der hosts-Datei tun, aber das ändert die Dinge global, so dass ich keine gleichzeitigen Kopien von Staging und Produktion in zwei verschiedenen Browser-Instanzen öffnen kann.
Erik Funkenbusch
1

Privoxy kann zu diesem Zweck verwendet werden.

Tamara Wijsman
quelle
Wie genau würde Privoxy für diesen Zweck funktionieren? Es sieht aus wie ein weiterer lokaler Proxy-Server, von denen keiner funktioniert, da Sie mit den meisten Browsern keinen Proxy pro Instanz definieren können. Sie können nur den globalen Proxy für alle Instanzen definieren
Erik Funkenbusch
@MystereMan: Es würde Ihre Anfragen per Proxy senden und somit die Anfragen in andere Anfragen umwandeln, das ist ziemlich einfach . Sie sprechen unsinnig über die Proxy-Server: Mirosoft Internet Explorer (GUI), Mozilla Firefox (GUI), Google Chrome (CLI - Proxy-Server =), Apple Safari (GUI), Opera (GUI) und jeden anderen Browser (GUI oder CLI) können Sie Ihren eigenen Proxy-Server einrichten ...
Tamara Wijsman
@TomWij - Nein. IE, Chrome und Safari verwenden alle die globale Proxy-Server-Einstellung in "Interneteinstellungen". Das heißt, wenn Sie es in einem Webbrowser ändern, ändert es sich in allen. Firefox hat seine eigenen Einstellungen dafür, aber leider kann ich Firefox nicht verwenden, weil es mit dem von uns verwendeten CMS nicht funktioniert (alles andere funktioniert).
Erik Funkenbusch
@Mystere Man: Falsch. Hören Sie auf, Ihre Gedanken zu wiederholen, und sehen Sie stattdessen, welche Konfiguration jeder einzelne Browser Ihnen gibt. Wenn Sie sich nicht die Mühe machen, die Dokumentation tatsächlich zu lesen, werden Sie Ihr Problem niemals lösen können, da Sie etwas zu Spezifisches fragen, das für den Rest der Leute nicht zutrifft. Wie ich schon sagte, aber Sie schienen nicht gelesen zu haben: In jedem Browser können Sie den Proxy-Server für diesen Browser einstellen. Google Chrome stellt den CLI- Parameter bereit --proxy-server=.
Tamara Wijsman
1
Hmm, ich könnte mich in Bezug auf Safari irren, da ich das für einige Zeit nicht genutzt habe. Aber ich glaube, ich habe Sie falsch verstanden, warum sollten Sie in jedem einzelnen Browser einen anderen Proxy-Server haben wollen? Ich bin verwirrt darüber, warum so etwas wie "x.com = production; stage.x.com = staging; dev.x.com = development" bei einer einzigen IP-Adresse und Host-Header-Umleitung auf dem Server nicht für Sie funktioniert ...
Tamara Wijsman
1

Ich weiß nicht, ob dies für Sie praktisch genug ist, aber eine mögliche Lösung wäre, IIS mit den Browsern auf dem Computer zu installieren und serverseitige Skripts (wie ASP.net, PHP, Ruby ...) bereitzustellen, die die hostsDatei und ändern dann zur eigentlichen Seite umleiten. In Ihren Browsern erstellen Sie dann ein Lesezeichen für dieses Skript, das beispielsweise http://localhost/config_ie.rbdie hostsDatei ändert (für diese Datei sind natürlich die richtigen Berechtigungen erforderlich), und führen dann eine 302-Weiterleitung zur realen Seite durch.

Michael Kremser
quelle
1
Der Teil, den die meisten Leute nicht verstehen, ist, dass Sie in der Lage sein müssen, mehrere Browser gleichzeitig mit unterschiedlichen Host- / IP-Zuordnungen auszuführen, um effektiv zu arbeiten. Beispielsweise müssen sowohl meine Produktions- als auch Test- und Debug-Instanzen in verschiedenen Browserinstanzen geöffnet sein. Jeder muss denselben Hostnamen verwenden (da die HTTP 1.1-Hostnamenzuordnung die richtige Site basierend auf dem Hostnamen zuordnet). Wenn Sie nur die Hostdatei ändern, wird jetzt jede Instanz des Browsers dem neuen Server zugeordnet, nicht nur die einzelne Instanz.
Erik Funkenbusch
@Erik Funkenbusch: Danke für die Klarstellung. Nun, meine verbleibenden Ideen: a) Ein Konzept wäre die Verwendung einer Dateisystemvirtualisierung, die unter Windows als "Datenumleitung" bezeichnet wird und normalerweise für die Benutzerkontensteuerung zur Unterstützung älterer Anwendungen verwendet wird, die Daten auf vertrauliche Pfade schreiben. Vielleicht gibt es eine Option, mit der Sie das für Ihre eigenen Zwecke verwenden können. Dann könnten Sie eine benutzerdefinierte hostsDatei für jeden Prozess haben. b) DNS-Überwachung lokal: Die Anforderung von "iexplore.exe" usw. kann gemäß einer von Ihnen angegebenen Liste bearbeitet werden. - Gibt es eine Idee, die du magst?
Michael Kremser
1

Wenn eine vollständige VM zu groß ist, kann eine container-basierte Lösung verwendet werden.

Wenn wir hier über Linux sprechen, lxckönnte dies eine praktikable Lösung sein.

Abgesehen davon - selbst eine vollständige VM mit einem minimalen X11-Linux ist nicht so groß (max. 2 GB Festplatte) und verbraucht mit heutiger Hardware nicht so viele Ressourcen (max. 512 MB RAM) ...

Eine LubuntuVM könnte hier tun.

Nils
quelle
Ich finde den Arbeitsspeicher und die Verarbeitung in Ordnung. Die gemeinsam genutzte Festplatte ist das, was das System lähmt.
JWW
0

Eine relativ einfache Lösung (aber vielleicht ein bisschen ressourcenintensiv) wäre, ein paar virtuelle Maschinen auf Ihrem Host laufen zu lassen. Jede virtuelle Maschine verfügt über eine eigene Hostdatei.

Sie hätten also eine virtuelle Maschine für die Staging-Umgebung, eine für Prod usw.

Pete
quelle
Vielleicht solltest du die ersten beiden Kommentare unter der Frage lesen. Dies wurde vor 4 Jahren angesprochen.
Erik Funkenbusch
Eigentlich habe ich den Kommentar gesehen, aber erst nachdem ich diese Antwort gepostet habe. Aber ich denke immer noch, dass es Sinn macht, es als separate Antwort zu haben (im Gegensatz zu nur einem Kommentar), da es anderen Menschen mit der gleichen Art von Problem helfen kann.
Pete
Zwei VMs würden die meisten Workstations aufgrund des Engpasses bei gemeinsam genutzten Festplatten lahm legen. Ich leide leicht unter einer offenen VM (eine ist das moderne Mac Mac Book Pro mit zwei Quad-Kernen; die zweite ist ein modernes ASUS-Notebook mit einem einzelnen Quad-Kern). Zwei VMs wären schmerzhaft.
Jww