Веб-переглядач із власним файлом хостів?


36

У мене є ряд серверів для постановки та тестування, які мені потрібно постійно змінювати файл хостів для доступу (вони залежать від доменного імені, тому мені потрібно змінити файл хостів, щоб змусити їх працювати).

Мені це дратує. Я хотів би встановити якийсь портативний браузер для кожного типу веб-сайтів, з якими я хочу працювати. Чи є версія будь-якого графічного веб-браузера (включаючи браузери, засновані на системах візуалізації інших браузерів), яка буде це робити?

Таким чином я можу просто запустити екземпляр, який вже налаштований на роботу з інсценуванням, якщо я хочу перевірити постановку.

Будь-які ідеї?

РЕДАКТУВАННЯ: Важливою особливістю є можливість запускати два веб-переглядачі, обидва переглядаючи some-address.com, але один браузер направляє запити на сервер на, 1.2.3.4а інший браузер направляє запити на сервер на 5.6.7.8.

РЕДАКТУВАТИ : (16.03.14)

Це питання було задано кілька років тому, і я досі не знаю, як можна це зробити. Дозвольте спробувати пояснити далі, тому що люди, здається, неправильно розуміють проблему. Це не те, що можна легко виправити лише за допомогою проксі-сервера. Я припускаю, що можливо вирішити проблеми на проксі-сервері, щоб вирішити проблеми, але це величезне складне рішення того, що має бути простою проблемою.

Отже, для уточнення:

Є три веб-сервери. Виробництво, випробування та розробка Кожен запускає багатокористувацьку програму, яка налаштовує себе на основі імені хоста, використовуваного для доступу до нього. Концептуально це схоже на систему управління контентом або блог-механізм, який дозволяє запускати кілька сайтів на одному екземплярі сервера. Ви просто вказуєте ім'я хоста на сервер, і яке саме ім'я хоста використовується для доступу до нього через відображення імені хоста HTTP 1.1, - це сайт, який він відображає.

Будь-яке рішення, яке просто переписує файл хоста, не працює через необхідність запускати декілька вікон браузера одночасно на різних сайтах, виробництві, розробці, тесті тощо ... Тому просто постійно змінювати файл хосту не працювати, оскільки це впливає на всі екземпляри браузера. Якщо ви зміните відображення для одного браузера, то інші браузери також тепер відображаються на цьому сервері, щоб усі наступні запити переходили на неправильний сервер.

Все, що я шукаю, - це спосіб змусити цей екземпляр браузера використовувати цей хост-файл, а цей екземпляр браузера використовувати цей хост-файл, наприклад, через параметр командного рядка. Мене навіть не хвилює, чи потрібно мені встановлювати кілька копій браузера.

Це можливо зробити з портативним файлом firefox, оскільки я думаю, що він використовує власні конфігураційні файли на встановлену копію, але проблема полягає в тому, що програмне забезпечення сторонніх розробників, яке використовується для адміністрування сайтів, не працює з firefox (самі сайти роблять це, але інструменти адміністратора не треба, вони добре працюють з chrome та IE та Opera, однак .. і я не маю доступу до джерела, щоб це виправити).


Більшість людей у ​​вашій ситуації мають пару віртуальних машин WinXP або Ubuntu з різними конфігураціями HOSTS.
digitxp

@digitxp - Так, я вже про це думав, але мені дуже не хочеться, щоб накладні витрати декількох ВМ та кількох цілих ОС просто переглядали пару сайтів. Очевидно, якщо іншого вибору не буде, це, мабуть, доведеться робити ..
Ерік Функенбуш

Якщо все інше не вдається: Веб-налагоджувач Fiddler (Windows) або GlimmerBlocker та проксі- сервер Charles Debugging (Mac) можуть переписати запити на льоту ...
Ар'ян

@Arjan - Проксі-сервери будуть працювати певною мірою, але мені доведеться мати окремий екземпляр проксі для кожного екземпляра браузера або змінювати налаштування проксі кожного разу, що ще більше дратує те, що змінюються файли хоста.
Ерік Функенбуш

1
Можливо, веб-проксі, як кальмар, дозволить вам перенаправляти так, що робить те, що ви хочете зробити з роздільної здатності DNS? (звичайно, веб-проксі можна налаштувати на кожному веб-переглядачі)
барлоп

Відповіді:


19

Кальмари вирішили проблему для мене. Я думаю, що багато проксі-серверів могли зробити те саме.

Зокрема, мені довелося встановити Squid. Потім змініть squid.conf, щоб він отримав доступ до альтернативного файлу хостів. Це рядок, який ви хочете змінити:

#hosts_file /etc/hosts

У моєму випадку я використовував hosts_file /etc/hosts-squid. Я створив /etc/hosts-squidфайл і змінив файл host-squid, щоб він дав мені доступ до нових IP-адрес, які я хотів отримати за вказаною URL-адресою. Це було все, що мені потрібно було зробити для налаштування проксі-сервера Squid.

Потім я створив команду для запуску браузера з налаштуваннями проксі. Я використав:

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

Запуск цієї команди ефективно дає мені запущений екземпляр хрому, який може отримати доступ до налаштування доменів у створеному мною файлі hosts-squid.

Мені також вдалося налаштувати більше проксі-серверів за допомогою декількох екземплярів Squid для доступу до виробництва, розробки та місцевого веб-сайту на одному комп’ютері. Інструкції щодо запуску декількох екземплярів Squid є тут . Я також написав повідомлення в блозі, де трохи детальніше пояснював проблему та рішення.


8

Я вважаю, що ви просите налаштувати віртуальне середовище для кожного браузера, що включає власний файл хостів.

Одним з варіантів може бути використання Sandboxie для створення окремої пісочниці, кожна з яких містить власний файл хостів. Браузер не потрібно встановлювати в пісочницю, щоб використовувати файл хостів, щойно розпочався з цієї пісочної скриньки. Клавіші швидкого доступу на робочому столі можуть бути створені для запуску браузера з пісочної скриньки.

Недоліком буде те, що браузери будуть ізольовані від реальної файлової системи, наприклад, під час завантаження файлів з Інтернету, але Sandboxie включає механізми для копіювання таких файлів поза пісочницею.

На жаль, функція запуску програм у більш ніж одній пісочниці одночасно доступна лише у платній версії Sandboxie (15 євро плюс податок за однорічну ліцензію для особистого користування вдома). Тестування техніко-економічного обґрунтування може бути здійснено за допомогою безкоштовної версії.

Для користувачів Linux подібними продуктами є:


Вибачте за пізню відповідь harrymc. Незрозуміло, чи програма дозволяє надати системні файли за допомогою песочниць, як %SYSTEM32%/Drivers/etc/hostsу Windows та /etc/hostsLinux. Ви можете підтвердити? Я вважаю за краще версію Linux, тому що я зробив швидку оцінку безпеки Sandboxie пару років тому в Windows (це не вдалося, і звіти автору залишилися без відповіді).
jww

якщо Sandboxie підтримує системні файли на основі пісочного типу %SYSTEM32%/Drivers/etc/hosts, то бали за вами. ОС не було визначено, і вам не чесно відмовлятись від них, якщо Windows / Sandboxie працює.
jww

AFAIK Sandboxie створює повністю паралельну файлову систему та реєстр. Для Linux проста програма пісочниці - це arkose або, можливо, sandfox, але я не маю досвіду роботи з ними.
harrymc

Дякую, harrymc. У мене проблеми з присвоєнням балів. Я бачу коробку з +50, але не можу натиснути на неї. Плюс, я подумав, що це коштує 100. Будь-які ідеї (чи мені потрібно блукати мета)?
jww

Дивіться поширені запитання щодо баунті: З 100-ти класів половина була присуджена автоматично через 7 + 1 дні без визначеної відповіді, половина була втрачена.
harrymc

4

Ви можете автоматизувати процес зміни файлу хоста за допомогою firefox + HostAdmin

HostAdmin - це Firefox Addon, який допоможе вам змінити файл Hosts, переключити відображення домену-ip. HostAdmin може зрозуміти ваш файл Hosts за допомогою вдосконаленого синтаксису файлів Hosts. Крім того, HostAdmin автоматично оновлює кеш-пам'ять DNS кожного разу, коли ви змінюєте файл хостів, навіть вручну.

Приклад конфігурації

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

Детальніше на https://addons.mozilla.org/en-US/firefox/addon/hostadmin/

Кілька екземплярів

Щоб запустити два екземпляри браузера firefox навмисно і незалежно в Linux, створіть кілька пускових установок з наступним сценарієм. Також встановіть плагін у всі 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  

Ви можете використовувати параметр профілю ( firefox -P) у веб-переглядачі, щоб використовувати рідні профілі для різних налаштувань, а також можете використовувати їх одночасно.


1
Він просить 2 браузери, які використовують одночасно 2 файли хостів .
harrymc


@harrym c оновлено.
тотті

2

Я знаю, що це не те, про що ви просите, але тимчасовим рішенням може бути написання пакетного сценарію, щоб поміняти файли хостів, а потім запустити браузер.

Принаймні, це мінімізувало б роботу, яку ви виконуєте.

Або ви можете просто назвати цей сервер чимось зовсім іншим у файлі хостів, тому вам ніколи не доведеться перемикати його на початок.


Я не можу перейменувати їх, оскільки веб-програми залежать від імені хоста для надання потрібного вмісту. Крім того, причиною, яку я хочу зробити це, є те, що я можу запускати декілька браузерів одночасно і мати один перехід на інсценування, а інший на розробник. Ви не можете цього зробити, поміняючи файли хостів.
Ерік Функенбуш

@MystereMan: Якщо ви говорите про META BASE, просто виконайте виявлення браузера на стороні сервера. У вас не повинно бути власного імені хоста в будь-якій іншій URL-адресі ...
Tamara Wijsman

@TomWij - Ні, я не говорю про МЕТА БАЗУ. Я говорю про віртуальний хостинг на основі хоста, а не на основі IP. Поле імені хоста визначає, до якого веб-сайту можна отримати доступ.
Ерік Функенбуш

@MystereMan: Тоді ваш перший коментар до цієї відповіді не має сенсу. Коли ви говорите про "рендерінг веб-додатків потрібного вмісту", я не бачу, що з цим мають робити віртуальні хости?
Тамара Війсман

@TomWij - У нас є система багатофункціональної CMS, яка розміщує кілька сайтів на одному сервері, з одним IP. Щоб переглянути будь-який сайт, ви повинні використовувати ім'я хоста, інакше ви маєте доступ лише до екземпляра за замовчуванням. Мені потрібно перейти між виробництвом, постановкою та розробкою версій цього сервера, а це означає змінити відображення доменних імен на їхні IP адреси на ходу. Я можу це зробити у файлі хостів, але це міняє речі в усьому світі, тому я не можу відкривати одночасні копії постановки та виготовлення у двох різних екземплярах браузера.
Ерік Функенбуш

1

Для цього можна використовувати Privoxy .


Як саме, працював би Privoxy для цієї мети? Це схоже на ще один локальний проксі-сервер, жоден з яких не працює, оскільки в більшості браузерів ви не можете визначити проксі-екземпляр. Ви можете визначити лише глобальний проксі-сервер для всіх примірників
Erik Funkenbusch,

@MystereMan: Це б проксі ваші запити і таким чином маніпулювало запити в інші запити, це зробити досить просто . Ви не чуєте про проксі-сервери: Mirosoft Internet Explorer (GUI), Mozilla Firefox (GUI), Google Chrome (CLI - проксі-сервер =), Apple Safari (GUI), Opera (GUI) та будь-який інший браузер (GUI або CLI) дозволяє встановити власний проксі-сервер ...
Tamara Wijsman

@TomWij - Ні. IE, Chrome і Safari використовують глобальний параметр проксі-сервера в "Налаштуваннях Інтернету". Це означає, що якщо змінити його в одному веб-браузері, він зміниться у всіх них. Firefox має власні налаштування для цього, але, на жаль, я не можу використовувати Firefox, оскільки він не працює з CMS, який ми використовуємо (все інше).
Ерік Функенбуш

@Майстер Людина: Неправильно. Перестаньте повторювати свої думки і замість цього подивіться, яку конфігурацію дає кожен окремий браузер. Якщо ви не витрачаєте зусиль на те, щоб насправді прочитати документацію, ви ніколи не вирішите свою проблему, оскільки ви запитуєте щось занадто конкретне, що не стосується решти людей. Як я вже говорив, але ви, схоже, не читали: будь-який браузер дозволяє встановити проксі-сервер для цього браузера. Google Chrome надає параметр CLI--proxy-server= .
Тамара Війсман

1
Гм, я можу помилитися з Safari, оскільки не користувався цим досить довго. Але я думаю, що я неправильно зрозумів вас, чому ви хочете мати інший проксі-сервер у кожному браузері? Я заплутався, тому що щось на кшталт "x.com = production; stage.x.com = staging; dev.x.com = development" не спрацювало б для вас, маючи єдине перенаправлення заголовка IP та хоста на сервері ...
Тамара Війсман

1

Не знаєте, чи це вам досить зручно, але одним із можливих рішень було б встановити IIS на машину разом із браузерами та надати серверні скрипти (наприклад ASP.net, PHP, Ruby ...), які змінюють hostsфайл та потім перенаправляємо на фактичну сторінку. Потім у своїх браузерах ви створюєте закладку до цього сценарію, наприклад, http://localhost/config_ie.rbяка змінює hostsфайл (звичайно, вимагає правильних дозволів на цей файл), а потім перенаправляє 302 на реальну сторінку.


1
Частина, про яку більшість людей не розуміє цього, полягає в тому, що для ефективної роботи вам потрібно мати змогу запускати кілька браузерів одночасно, використовуючи різні хост / ip відображення. Наприклад, мені потрібно відкрити як екземпляри мого виробництва, так і тестування та налагодження в різних екземплярах браузера. Кожен повинен використовувати одне і те ж ім’я хоста (оскільки відображення імені хоста HTTP 1.1 відображає правильний сайт на основі імені хоста). Якщо ви просто змінюєте файл хосту, то кожен екземпляр браузерів тепер відображається на новому сервері, а не лише на одному його екземплярі.
Ерік Функенбуш

@Erik Funkenbusch: Дякую за роз’яснення. Ну, і мої залишилися ідеї: а) Одна концепція використовувала б щось на зразок віртуалізації файлової системи, яке в Windows називається "Перенаправлення даних" і зазвичай використовується для UAC для підтримки застарілих програм, які записують дані на чутливі шляхи. Можливо, є якийсь варіант, який дозволяє використовувати це у власних цілях. Тоді ви можете мати спеціальний hostsфайл для кожного процесу. b) DNS-перехоплення локально: запитом від "iexplore.exe" тощо може бути маніпульовано відповідно до деякого списку, який ви надаєте. - Чи є якась ідея, яка вам подобається?
Майкл Кремсер

1

Якщо повної VM занадто багато, це може зробити рішення на основі контейнерів.

Якщо ми говоримо тут про Linux, це lxcможе бути можливим рішенням.

Крім цього - навіть повна VM з мінімальним X11-Linux не така вже й велика (диск не більше 2 Гб) і не споживає стільки ресурсів (максимум 512 Мб оперативної пам’яті) з сучасним обладнанням ...

Тут Lubuntuможе зробити VM.


Я знаходжу оперативну пам’ять і обробку в порядку. Спільний диск - це те, що калічить систему.
jww

0

Одним з відносно простих рішень (але, можливо, трохи важких ресурсів) буде наявність декількох віртуальних машин у вашому хості. Кожна віртуальна машина має власний файл хосту.

Отже, у вас буде одна віртуальна машина для постановочного середовища, одна для prod та ін.


Можливо, вам слід прочитати перші два коментарі під питанням. Це було вирішено 4 роки тому.
Ерік Функенбуш

Насправді я побачив коментар, але не після того, як я опублікував цю відповідь. Але я все ще вважаю, що має сенс мати це окрему відповідь (на відміну від просто коментаря), оскільки це може допомогти іншим людям з тим же типом проблем.
Піт

Дві віртуальні машини будуть калічити більшість робочих станцій через вузьке вузьке місце. Я м'яко страждаю з одним відкритим VM (один - це сучасний Mac Mac Book Pro з подвійними квадратичними ядрами; другий - це сучасний ноутбук ASUS з одним чотирьохядерним ядром). Двоє ВМ було б болісно.
jww
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.