Przeglądarka z własnym plikiem hosts?

36

Mam wiele serwerów pośrednich i testowych, które muszę stale modyfikować, aby uzyskać dostęp do mojego pliku hosts (zależą one od nazwy domeny, więc muszę zmienić plik hosts, aby je uruchomić).

Uważam to za denerwujące. Chciałbym skonfigurować przenośną przeglądarkę dla każdego rodzaju witryny, z którą chcę pracować. Czy jest jakaś wersja graficznej przeglądarki internetowej (w tym przeglądarek opartych na silnikach renderujących innych przeglądarek), która to robi?

W ten sposób mogę po prostu uruchomić instancję, która jest już skonfigurowana do pracy z przemieszczaniem, jeśli chcę przetestować przemieszczanie.

Jakieś pomysły?

EDYCJA: Ważną funkcją jest możliwość jednoczesnego uruchamiania dwóch przeglądarek, z których obie przeglądają some-address.com, ale jedna z nich kieruje żądania do serwera pod, 1.2.3.4a druga przegląda żądania do serwera pod adresem 5.6.7.8.

EDYCJA: (3/16/14)

Pytanie to zostało zadane kilka lat temu i nadal nie znam przyzwoitego sposobu na zrobienie tego. Pozwól mi spróbować wyjaśnić dalej, ponieważ ludzie wydają się źle rozumieć problem. Nie można tego łatwo naprawić za pomocą serwera proxy. Podejrzewam, że możliwe jest napisanie rozległych reguł na serwerze proxy, aby rozwiązać problemy, ale to jest bardzo złożone rozwiązanie tego, co powinno być prostym problemem.

Aby wyjaśnić:

Istnieją trzy serwery sieciowe. Produkcja, testy i rozwój. Każdy uruchamia aplikację wielu dzierżawców, która dostosowuje się na podstawie nazwy hosta używanej do uzyskania dostępu. Pod względem koncepcyjnym jest to podobne do systemu zarządzania treścią lub silnika blogów, który umożliwia uruchamianie wielu witryn z tej samej instancji serwera. Po prostu wskaż nazwę hosta na serwer, a dowolna nazwa hosta używana do uzyskania dostępu za pośrednictwem mapowania nazwy hosta HTTP 1.1, to strona, którą wyświetla.

Żadne rozwiązanie, które po prostu przepisuje plik hosta, nie działa z powodu wymogu jednoczesnego uruchamiania wielu okien przeglądarki w różnych witrynach, produkcji, rozwoju, testowaniu itp. Tak więc ciągłe modyfikowanie pliku hosta nie działa działa, ponieważ wpływa na wszystkie instancje przeglądarki. Jeśli zmienisz mapowanie dla jednej przeglądarki, wówczas inne przeglądarki również będą mapowane na ten serwer, więc wszelkie kolejne żądania będą kierowane na niewłaściwy serwer.

Wszystko, czego szukam, to sposób, aby zmusić tę instancję przeglądarki do korzystania z tego pliku hosta, a ta instancja przeglądarki do korzystania z tego pliku hosta, na przykład za pomocą parametru wiersza polecenia. Nie obchodzi mnie nawet, czy muszę zainstalować wiele kopii przeglądarki.

Może to być wykonalne w przypadku firefox Portable, ponieważ myślę, że używa własnych plików konfiguracyjnych na zainstalowaną kopię, ale problem polega na tym, że oprogramowanie innych firm służące do administrowania witrynami nie działa z firefoxem (same strony, ale narzędzia administracyjne) nie, działają one dobrze z Chrome, IE i Opera, jednak .. i nie mam dostępu do źródła, aby to naprawić).

Erik Funkenbusch
źródło
Większość osób w twojej sytuacji korzysta z kilku maszyn wirtualnych WinXP lub Ubuntu z różnymi konfiguracjami HOSTS.
digitxp
@digitxp - Tak, już o tym myślałem, ale tak naprawdę nie chcę narzutu wielu maszyn wirtualnych i kilku całych systemów operacyjnych tylko po to, aby przeglądać kilka witryn. Oczywiście, jeśli nie ma innego wyboru, prawdopodobnie będę musiał to zrobić ..
Erik Funkenbusch,
Jeśli wszystko inne zawiedzie: Fiddler Web Debugger (Windows) lub GlimmerBlocker i Charles Web Debugging Proxy (Mac) mogą przepisać żądania w locie ...
Arjan,
@Arjan - proxy będą działać do pewnego stopnia, ale musiałbym mieć osobne wystąpienie proxy dla każdego wystąpienia przeglądarki lub zmieniać ustawienia proxy za każdym razem, co jest jeszcze bardziej denerwujące ze względu na zmianę plików hosta.
Erik Funkenbusch,
1
Być może webowy serwer proxy, taki jak kałamarnica, pozwoliłby Ci przekierować w sposób, który chcesz zrobić z rozpoznawania nazw DNS? (oczywiście proxy sieci web można skonfigurować dla każdej przeglądarki)
barlop

Odpowiedzi:

19

Squid rozwiązał dla mnie problem. Myślę, że wiele serwerów proxy może zrobić to samo.

W szczególności musiałem zainstalować Squid. Następnie zmień plik squid.conf, aby uzyskać dostęp do alternatywnego pliku hosts. Oto linia, którą chcesz zmienić:

#hosts_file /etc/hosts

W moim przypadku użyłem hosts_file /etc/hosts-squid. Utworzyłem ten /etc/hosts-squidplik i zmieniłem plik hosts-squid, aby dał mi dostęp do nowych adresów IP, które chciałem dla danego adresu URL. To wszystko, co musiałem zrobić, aby skonfigurować serwer proxy Squid.

Następnie utworzyłem polecenie uruchomienia przeglądarki z ustawieniami proxy. Użyłem:

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

Uruchomienie tego polecenia skutecznie daje mi działającą instancję chromu, która może uzyskać dostęp do konfiguracji domen w utworzonym przez mnie pliku hosts-squid.

Byłem także w stanie skonfigurować więcej serwerów proxy za pomocą wielu instancji Squid, aby uzyskać dostęp do strony produkcyjnej, programistycznej i lokalnej na tym samym komputerze. Instrukcje dotyczące uruchamiania wielu instancji Squid znajdują się tutaj . Napisałem też post na blogu wyjaśniający problem i rozwiązanie bardziej szczegółowo.

Dave Parrish
źródło
8

Uważam, że chcesz skonfigurować środowisko wirtualne dla każdej przeglądarki, która zawiera własny plik hosts.

Jednym z rozwiązań może być użycie Sandboxie do skonfigurowania osobnego piaskownicy, z których każdy zawiera własny plik hosts. Przeglądarka nie musi być instalowana w piaskownicy, aby korzystać z pliku hosts, po prostu uruchomiona z tego piaskownicy. Skróty na pulpicie można tworzyć w celu uruchamiania przeglądarki z poziomu piaskownicy.

Wadą będzie to, że przeglądarki będą izolowane od prawdziwego systemu plików, na przykład podczas pobierania plików z Internetu, ale Sandboxie zawiera mechanizmy kopiowania takich plików poza piaskownicą.

Niestety funkcja uruchamiania programów w więcej niż jednym piaskownicy w tym samym czasie jest dostępna tylko w płatnej wersji Sandboxie (15 euro plus podatek za roczną licencję na użytek osobisty w domu). Testy wykonalności można wykonać przy użyciu darmowej wersji.

Dla użytkowników Linux podobne produkty to:

harrymc
źródło
Przepraszam za późną odpowiedź, harrymc. Nie jest jasne, czy program pozwala na dostarczanie plików systemowych dla piaskownicy, jak %SYSTEM32%/Drivers/etc/hostsw systemie Windows i /etc/hostsLinux. Czy mógłbyś potwierdzić? Wolałbym wersję Linuksa, ponieważ kilka lat temu przeprowadziłem szybką ocenę bezpieczeństwa Sandboxie w systemie Windows (nie udało się, a raporty dla autora pozostały bez odpowiedzi).
jww
jeśli Sandboxie obsługuje takie pliki systemowe jak piaskownica %SYSTEM32%/Drivers/etc/hosts, to punkty są twoje. System operacyjny był nieokreślony i niesprawiedliwe jest wstrzymanie go, jeśli działa system Windows / Sandboxie.
jww
AFAIK Sandboxie tworzy całkowicie równoległy system plików i rejestr. W Linuksie prostym programem piaskownicy jest arkose lub może sandfox, ale nie mam z nimi doświadczenia.
harrymc
Dzięki, harrymc. Mam problem z przyznaniem ci punktów. Widzę pole z +50, ale nie mogę na nie kliknąć. Poza tym myślałem, że to było warte 100. Jakieś pomysły (czy też muszę wędrować do Meta)?
jww
Zobacz najczęściej zadawane pytania dotyczące nagród: ze 100 nagród jedna połowa została przyznana automatycznie po 7 + 1 dniach bez wyznaczonej odpowiedzi, jedna połowa została utracona.
harrymc
4

Możesz zautomatyzować proces zmiany pliku hosta za pomocą firefox + HostAdmin

HostAdmin to dodatek do przeglądarki Firefox, który pomaga modyfikować plik Hosts, przełączać mapowanie domeny-ip. HostAdmin może zrozumieć Twój plik Hosts poprzez ulepszoną składnię pliku Hosts. Ponadto HostAdmin automatycznie odświeża pamięć podręczną DNS przy każdej zmianie pliku Hosts, nawet ręcznie.

Przykładowa konfiguracja

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

Więcej informacji na https://addons.mozilla.org/en-US/firefox/addon/hostadmin/

Wiele wystąpień

Aby uruchomić dwa wystąpienia przeglądarki firefox jednocześnie i niezależnie w systemie Linux, utwórz wiele programów uruchamiających z następującym skryptem. Zainstaluj także wtyczkę we wszystkich Firefoksie.

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  

Możesz użyć opcji profile ( firefox -P) w przeglądarce, aby użyć profili natywnych dla różnych ustawień i możesz używać ich jednocześnie.

Totti
źródło
1
Prosi dla 2 przeglądarek korzystających 2 hosty plików w tym samym czasie .
harrymc
@harrym c zaktualizowano.
totti
2

Wiem, że nie o to prosisz, ale tymczasowym rozwiązaniem może być napisanie skryptu wsadowego w celu zamiany plików hostów, a następnie uruchomienie przeglądarki.

Przynajmniej zminimalizuje to pracę, którą wykonujesz.

Lub możesz po prostu nazwać ten serwer czymś zupełnie innym w pliku hosts, abyś nigdy nie musiał go przełączać.

Chris Harrod
źródło
Nie mogę zmienić ich nazwy, ponieważ aplikacje internetowe zależą od nazwy hosta w celu wyświetlenia odpowiedniej treści. Powodem, dla którego chcę to zrobić, jest to, że mogę uruchamiać wiele przeglądarek jednocześnie i mieć jedno przejście do inscenizacji, a drugie do dewelopera. Nie możesz tego zrobić, zamieniając pliki hostów.
Erik Funkenbusch,
@MystereMan: Jeśli mówisz o META BASE, po prostu wykonaj wykrywanie przeglądarki po stronie serwera. Nie powinieneś mieć własnej nazwy hosta w żadnym innym adresie URL ...
Tamara Wijsman
@TomWij - Nie, nie mówię o META BASE. Mówię o hostingu wirtualnym opartym na hoście, a nie na IP. Pole nazwy hosta określa dostęp do witryny.
Erik Funkenbusch
@MystereMan: Zatem twój pierwszy komentarz do tej odpowiedzi nie ma sensu. Gdy mówisz o „aplikacji internetowej wyświetlającej odpowiednią treść”, nie rozumiem, co mają z tym wspólnego wirtualne hosty?
Tamara Wijsman,
@TomWij - Mamy wielosystemowy system CMS, który obsługuje wiele witryn na jednym serwerze z jednym adresem IP. Aby wyświetlić dowolną witrynę, musisz użyć nazwy hosta, w przeciwnym razie uzyskasz dostęp tylko do domyślnej instancji. Muszę przełączać się między wersją produkcyjną, testową i programistyczną tego serwera, co oznacza zmianę mapowania nazw domen na ich adresy IP w locie. Mogę to zrobić w pliku hosts, ale to zmienia rzeczy globalnie, więc nie mogę otworzyć jednoczesnych kopii inscenizacji i produkcji w dwóch różnych instancjach przeglądarki.
Erik Funkenbusch,
1

W tym celu można użyć Privoxy .

Tamara Wijsman
źródło
Jak dokładnie działałby Privoxy w tym celu? Wygląda to jak kolejny lokalny serwer proxy, z których żaden nie działa, ponieważ w większości przeglądarek nie można zdefiniować serwera proxy dla jednej instancji. Można zdefiniować globalny serwer proxy dla wszystkich instancji
Erik Funkenbusch
@MystereMan: Byłby proxy twoich żądań, a tym samym manipulować nimi w innych żądaniach, dość łatwo to zrobić . Mówisz nonsensownie o serwerach proxy: Mirosoft Internet Explorer (GUI), Mozilla Firefox (GUI), Google Chrome (CLI --proxy-server =), Apple Safari (GUI), Opera (GUI) i dowolna inna przeglądarka (GUI lub CLI) pozwala ustawić własny serwer proxy ...
Tamara Wijsman
@TomWij - Nie. IE, Chrome i Safari używają globalnego ustawienia serwera proxy w „Ustawieniach internetowych”. Oznacza to, że jeśli zmienisz go w jednej przeglądarce internetowej, zmieni się on we wszystkich. Firefox ma do tego swoje własne ustawienia, ale niestety nie mogę korzystać z Firefoksa, ponieważ nie działa z używanym przez nas CMS (wszystko inne działa).
Erik Funkenbusch
@Mystere Man: Niepoprawnie. Przestań powtarzać swoje przemyślenia, a zamiast tego sprawdź, jaką konfigurację oferuje każda przeglądarka. Jeśli nie poświęcasz wysiłku na czytanie dokumentacji, nigdy nie będziesz w stanie rozwiązać swojego problemu, ponieważ pytasz o coś zbyt konkretnego, co nie dotyczy reszty ludzi. Jak powiedziałem wcześniej, ale wydawało się, że nie przeczytałeś: Każda przeglądarka umożliwia ustawienie serwera proxy dla tej przeglądarki. Google Chrome udostępnia parametr CLI--proxy-server= .
Tamara Wijsman,
1
Hmm, mogę się mylić co do Safari, ponieważ nie używałem tego przez dłuższy czas. Ale myślę, że źle cię zrozumiałem, dlaczego chcesz mieć inny serwer proxy w każdej przeglądarce? Czuję się zagubiony, ponieważ coś takiego jak „x.com = produkcja; stage.x.com = inscenizacja; dev.x.com = programowanie” nie działałoby tylko dla Ciebie, biorąc pod uwagę pojedyncze przekierowanie IP i nagłówka hosta na serwerze ...
Tamara Wijsman,
1

Nie wiem, czy jest to dla Ciebie wystarczająco wygodne, ale jednym z możliwych rozwiązań byłoby zainstalowanie IIS na komputerze z przeglądarkami i zapewnienie skryptów po stronie serwera (takich jak ASP.net, PHP, Ruby ...), które zmieniają hostsplik i następnie przekieruj do faktycznej strony. Następnie w twoich przeglądarkach tworzysz zakładkę do tego skryptu, na przykład, http://localhost/config_ie.rbktóra zmienia hostsplik (oczywiście wymaga poprawnych uprawnień do tego pliku), a następnie robisz 302-redirct do prawdziwej strony.

Michael Kremser
źródło
1
Częścią, której większość ludzi nie rozumie na ten temat, jest to, że aby działać skutecznie, musisz być w stanie uruchomić wiele przeglądarek jednocześnie, używając różnych mapowań hosta / ip. Na przykład muszę mieć otwarte instancje produkcyjne oraz testowe i debugujące w różnych instancjach przeglądarki. Każdy musi używać tej samej nazwy hosta (ponieważ mapowanie nazwy hosta HTTP 1.1 odwzorowuje prawidłową witrynę na podstawie nazwy hosta). Jeśli po prostu zmienisz plik hosta, każda instancja przeglądarek będzie teraz mapowana na nowy serwer, a nie tylko jego jedna instancja.
Erik Funkenbusch
@Erik Funkenbusch: Dzięki za wyjaśnienia. Cóż, moje pozostałe pomysły: a) Jedną z koncepcji byłoby zastosowanie czegoś takiego jak wirtualizacja systemu plików, która w Windows nazywa się „Przekierowywanie danych” i zwykle jest używana w UAC do obsługi starszych aplikacji, które zapisują dane na wrażliwych ścieżkach. Być może istnieje jakaś opcja, która pozwala wykorzystać to do własnych celów. Następnie możesz mieć niestandardowy hostsplik dla każdego procesu. b) Lokalne przechwytywanie DNS: Żądaniem z pliku „iexplore.exe” itp. można manipulować zgodnie z dostarczoną listą. - Czy jest jakiś pomysł, który lubisz?
Michael Kremser
1

Jeśli pełna maszyna wirtualna to za dużo, może to zrobić rozwiązanie oparte na kontenerze.

Jeśli mówimy tutaj o Linuksie, lxcmoże być wykonalnym rozwiązaniem.

Poza tym - nawet pełna maszyna wirtualna z minimalnym linuksowym X11 nie jest aż tak duża (maks. 2 GB dysku) i nie zużywa tylu zasobów (maks. 512 MB pamięci RAM) przy dzisiejszym sprzęcie ...

LubuntuVM może zrobić tutaj.

Nils
źródło
Uważam, że pamięć RAM i przetwarzanie są w porządku. Współdzielony dysk jest tym, co kaleczy system.
jww
0

Jednym stosunkowo prostym rozwiązaniem (ale może nieco pochłaniającym duże zasoby) byłoby uruchomienie kilku maszyn wirtualnych na hoście. Każda maszyna wirtualna ma własny plik hosta.

Tak więc masz jedną maszynę wirtualną dla środowiska pomostowego, jedną dla prod itp.

Pete
źródło
Być może powinieneś przeczytać pierwsze dwa komentarze pod pytaniem. Zostało to rozwiązane 4 lata temu.
Erik Funkenbusch
Właściwie to widziałem komentarz, ale dopiero po opublikowaniu tej odpowiedzi. Ale nadal uważam, że sensowne jest, aby mieć to jako osobną odpowiedź (w przeciwieństwie do komentarza), ponieważ może pomóc innym osobom z tym samym rodzajem problemu.
Pete
Dwie maszyny wirtualne sparaliżowałyby większość stacji roboczych z powodu wąskiego gardła dysku współdzielonego. Nieznacznie cierpię z jedną otwartą maszyną wirtualną (jedna to nowoczesny Mac Mac Book Pro z podwójnym czterordzeniowym rdzeniem; drugi to nowoczesny laptop ASUS z pojedynczym czterordzeniowym rdzeniem). Dwie maszyny wirtualne byłyby bolesne.
jww