Browser dengan file hostnya sendiri?

36

Saya memiliki sejumlah server pementasan dan pengujian yang harus saya modifikasi secara konstan untuk mengakses file host saya (mereka bergantung pada nama domain, jadi saya harus mengubah file host agar dapat berfungsi).

Saya menemukan ini menjengkelkan. Saya ingin mengatur semacam browser portabel untuk setiap jenis situs yang ingin saya gunakan. Apakah ada versi browser web grafis apa pun (termasuk browser berdasarkan mesin rendering browser lain) yang akan melakukan ini?

Dengan cara ini saya bisa langsung meluncurkan instance yang sudah dikonfigurasi untuk bekerja dengan pementasan jika saya ingin menguji pementasan.

Ada ide?

EDIT: Fitur penting adalah kemampuan untuk menjalankan dua browser secara bersamaan, keduanya untuk browsing some-address.com, tetapi dengan satu browser mengarahkan permintaan ke server di 1.2.3.4dan browser lainnya mengarahkan permintaan ke server di 5.6.7.8.

EDIT: (3/16/14)

Pertanyaan ini diajukan beberapa tahun yang lalu, dan saya masih belum tahu cara yang layak untuk melakukan ini. Biarkan saya mencoba menjelaskan lebih lanjut, karena orang-orang tampaknya salah paham masalah. Itu bukan sesuatu yang dapat dengan mudah diperbaiki hanya dengan menggunakan server proxy. Saya kira mungkin untuk menulis aturan yang luas di server proxy untuk memecahkan masalah, tapi itu solusi yang sangat kompleks untuk apa yang seharusnya menjadi masalah sederhana.

Jadi untuk memperjelas:

Ada tiga server web. Produksi, Uji, dan Pengembangan. Masing-masing menjalankan aplikasi multi-penyewa yang mengkustomisasi sendiri berdasarkan nama host yang digunakan untuk mengaksesnya. Secara konseptual, ini mirip dengan Sistem Manajemen Konten atau mesin blog yang memungkinkan beberapa situs dijalankan dari server yang sama. Anda cukup arahkan nama host ke server, dan siapa pun nama host yang digunakan untuk mengaksesnya melalui pemetaan hostname HTTP 1.1, adalah situs yang ditampilkannya.

Solusi apa pun yang hanya menulis ulang file host tidak berfungsi karena persyaratan untuk menjalankan beberapa jendela browser pada saat yang sama ke situs yang berbeda, produksi, pengembangan, pengujian, dll ... Jadi hanya mengubah file host secara konstan berfungsi karena memengaruhi semua instance browser. Jika Anda mengubah pemetaan untuk satu browser, maka browser lain sekarang juga dipetakan ke server itu sehingga permintaan berikutnya akan masuk ke server yang salah.

Yang saya cari adalah cara untuk memaksa instance browser ini menggunakan file host ini, dan instance browser itu untuk menggunakan file host itu, seperti melalui parameter baris perintah. Saya bahkan tidak peduli jika saya perlu menginstal banyak salinan browser.

Ini mungkin dapat dilakukan dengan firefox portable, karena saya pikir itu menggunakan file konfigurasi sendiri per salinan yang diinstal, tetapi masalahnya adalah perangkat lunak pihak ketiga yang digunakan untuk mengelola situs tidak bekerja dengan firefox (situs itu sendiri melakukannya, tetapi alat admin tidak, mereka bekerja dengan baik dengan chrome dan IE dan Opera, namun .. dan saya tidak memiliki akses ke sumber untuk memperbaikinya).

Erik Funkenbusch
sumber
Kebanyakan orang dalam situasi Anda menjalankan beberapa mesin virtual WinXP atau Ubuntu dengan konfigurasi HOSTS yang berbeda.
digitxp
@digitxp - Ya, saya sudah memikirkan itu, tetapi saya benar-benar tidak ingin overhead dari beberapa VM dan beberapa OS hanya untuk menelusuri beberapa situs. Jelas, jika tidak ada pilihan lain yang mungkin harus saya lakukan ..
Erik Funkenbusch
Jika semuanya gagal: Fiddler Web Debugger (Windows) atau GlimmerBlocker dan Charles Web Debugging Proxy (Mac) dapat menulis ulang permintaan dengan cepat ...
Arjan
@Arjan - Proxy akan berfungsi sampai batas tertentu, tetapi saya harus memiliki instance proxy terpisah untuk setiap instance browser, atau mengubah pengaturan proxy setiap kali yang bahkan lebih menyebalkan daripada mengubah file host.
Erik Funkenbusch
1
Mungkin Proksi Web seperti cumi-cumi, akan membiarkan Anda mengarahkan ulang dengan cara yang melakukan apa yang Anda inginkan dari resolusi DNS? (tentu saja proxy web dapat dikonfigurasi berdasarkan per browser)
barlop

Jawaban:

19

Squid memecahkan masalah bagi saya. Saya pikir banyak server proxy dapat melakukan hal yang sama.

Secara khusus, saya harus menginstal Squid. Kemudian ubah squid.conf sehingga mengakses file host alternatif. Ini adalah baris yang ingin Anda ubah:

#hosts_file /etc/hosts

Dalam kasus saya, saya menggunakan hosts_file /etc/hosts-squid. Saya membuat /etc/hosts-squidfile dan mengubah file host-squid sehingga akan memberi saya akses ke alamat IP baru yang saya inginkan untuk URL yang diberikan. Hanya itu yang perlu saya lakukan untuk mengkonfigurasi server proxy Squid.

Saya kemudian membuat perintah untuk meluncurkan browser saya dengan pengaturan proxy. Saya menggunakan:

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

Menjalankan perintah itu secara efektif memberi saya contoh menjalankan krom yang dapat mengakses pengaturan domain di file hosts-squid yang saya buat.

Saya juga dapat mengatur lebih banyak server proxy menggunakan beberapa instance Squid untuk mengakses situs web produksi, pengembangan, dan lokal semua di komputer yang sama. Petunjuk tentang cara menjalankan beberapa instance Squid ada di sini . Saya juga menulis posting blog yang menjelaskan masalah dan solusinya dengan sedikit lebih detail.

Dave Parrish
sumber
8

Saya yakin Anda meminta pengaturan lingkungan virtual untuk setiap browser yang menyertakan file host-nya sendiri.

Salah satu solusinya mungkin menggunakan Sandboxie untuk mengatur kotak pasir terpisah, masing-masing berisi file host sendiri. Browser tidak perlu diinstal ke dalam kotak pasir untuk menggunakan file host, baru saja dimulai dari dalam kotak pasir itu. Pintasan desktop dapat dibuat untuk meluncurkan browser dari dalam kotak pasir.

Kerugiannya adalah browser akan diisolasi dari sistem file nyata misalnya ketika mengunduh file dari Internet, tetapi Sandboxie menyertakan mekanisme untuk menyalin file seperti itu di luar sandbox.

Sayangnya, fitur menjalankan program di lebih dari satu kotak pasir pada saat yang sama hanya tersedia dalam versi berbayar dari Sandboxie (15 euro ditambah pajak untuk lisensi satu tahun untuk penggunaan pribadi di rumah). Pengujian kelayakan dapat dilakukan menggunakan versi gratis.

Untuk pengguna Linux, produk serupa adalah:

harrymc
sumber
Maaf tentang balasan terlambat harrymc. Tidak jelas apakah program ini memungkinkan seseorang untuk menyediakan file sistem per-sandbox seperti %SYSTEM32%/Drivers/etc/hostspada Windows dan /etc/hostsLinux. Dapatkah kamu mengkonfirmasi? Saya lebih suka versi Linux karena saya melakukan evaluasi keamanan cepat dari Sandboxie beberapa tahun yang lalu di Windows (gagal, dan laporan kepada penulis tidak dijawab).
jww
jika Sandboxie mendukung file sistem per-sandbox seperti %SYSTEM32%/Drivers/etc/hosts, maka poinnya adalah milik Anda. OS tidak ditentukan secara spesifik, dan tidak adil bagi Anda untuk menahannya jika Windows / Sandboxie berfungsi.
jww
AFAIK Sandboxie menciptakan sistem file dan registri yang sepenuhnya paralel. Untuk Linux program sandbox sederhana adalah arkose atau mungkin sandfox tapi saya tidak punya pengalaman dengan mereka.
harrymc
Terima kasih, harrymc. Saya kesulitan memberi Anda poin. Saya melihat kotak dengan +50, tetapi saya tidak bisa mengkliknya. Plus, saya pikir itu bernilai 100. Ada ide (atau saya harus berkeliaran ke Meta)?
jww
Lihat FAQ Bounty : Dari bounty 100, satu setengah diberikan secara otomatis setelah 7 + 1 hari tanpa jawaban yang ditentukan, satu setengah hilang.
harrymc
4

Anda dapat mengotomatiskan proses mengubah file host dengan firefox + HostAdmin

HostAdmin adalah Addon Firefox, yang membantu Anda memodifikasi file Host, beralih pemetaan domain-ip. HostAdmin dapat memahami file Hosts Anda melalui sintaksis file Host yang disempurnakan. Selain itu, HostAdmin menyegarkan cache DNS Anda secara otomatis setiap kali Anda mengubah file Host Anda, bahkan secara manual.

Contoh konfigurasi

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

Info lebih lanjut di https://addons.mozilla.org/en-US/firefox/addon/hostadmin/

Banyak contoh

Untuk menjalankan dua instance browser firefox secara bersamaan dan mandiri di linux, buat beberapa peluncur dengan skrip berikut. Juga instal plugin di semua 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  

Anda dapat menggunakan opsi profil ( firefox -P) di browser untuk menggunakan profil asli untuk pengaturan yang berbeda dan dapat digunakan secara bersamaan.

totti
sumber
1
Dia meminta 2 browser menggunakan 2 file host sekaligus .
harrymc
@harrym diperbarui.
totti
2

Saya tahu ini bukan yang Anda minta, tetapi solusi sementara bisa dengan menulis skrip batch untuk menukar file host dan kemudian membuka browser.

Setidaknya itu akan meminimalkan pekerjaan yang Anda lakukan.

Atau Anda bisa memberi nama server ini sesuatu yang sama sekali berbeda dalam file host sehingga Anda tidak perlu beralih untuk memulainya.

Chris Harrod
sumber
Saya tidak dapat mengganti nama mereka karena aplikasi web bergantung pada nama host untuk membuat konten yang tepat. Juga, alasan saya ingin melakukan ini adalah bahwa saya dapat menjalankan beberapa browser pada saat yang sama dan memiliki satu pergi ke pementasan dan yang lainnya ke dev. Anda tidak dapat melakukannya dengan menukar file host.
Erik Funkenbusch
@MystereMan: Jika Anda berbicara tentang META BASE, lakukan saja sisi server deteksi browser. Anda seharusnya tidak memiliki nama host Anda sendiri di URL lain ...
Tamara Wijsman
@ TomWij - Tidak, saya tidak berbicara tentang META BASE. Saya berbicara tentang hosting virtual berbasis host, bukan berbasis IP. Bidang hostname menentukan situs mana yang diakses.
Erik Funkenbusch
@MystereMan: Maka komentar pertama Anda tentang jawaban ini tidak masuk akal. Ketika Anda berbicara tentang "aplikasi web yang menyajikan konten yang tepat", saya tidak melihat apa yang harus dilakukan oleh host virtual dengan itu?
Tamara Wijsman
@ TomWij - Kami memiliki sistem CMS multi-penyewa yang meng-host beberapa situs di server tunggal, dengan IP tunggal. Untuk melihat situs tertentu, Anda harus menggunakan nama host, jika tidak, Anda hanya mengakses instance default. Saya perlu beralih di antara versi produksi, pementasan, dan pengembangan server ini, yang berarti mengubah pemetaan nama domain menjadi alamat IP mereka dengan cepat. Saya dapat melakukan ini di file hosts, tetapi hal itu berubah secara global sehingga saya tidak dapat membuka salinan pementasan dan produksi secara simultan dalam dua contoh browser yang berbeda.
Erik Funkenbusch
1

Privoksi dapat digunakan untuk tujuan ini.

Tamara Wijsman
sumber
Bagaimana, tepatnya, Privoxy akan bekerja untuk tujuan ini? Sepertinya hanya server proxy lokal, tidak ada yang berfungsi karena dengan sebagian besar browser Anda tidak dapat menentukan proxy per instance .. Anda hanya dapat menentukan proxy global untuk semua instance
Erik Funkenbusch
@MystereMan: Ini akan mem-proxy permintaan Anda dan dengan demikian memanipulasi permintaan menjadi permintaan lain, cukup mudah untuk melakukannya . Anda berbicara tidak masuk akal tentang server proxy: Mirosoft Internet Explorer (GUI), Mozilla Firefox (GUI), Google Chrome (CLI --proxy-server =), Apple Safari (GUI), Opera (GUI) dan browser lainnya (GUI atau CLI) memungkinkan Anda untuk mengatur server proxy Anda sendiri ...
Tamara Wijsman
@ TomWij - Tidak. IE, Chrome, dan Safari semuanya menggunakan pengaturan server proxy global di "Pengaturan Internet". Itu berarti, jika Anda mengubahnya di satu browser web, itu berubah di semuanya. Firefox memiliki pengaturan sendiri untuk ini, tetapi sayangnya saya tidak dapat menggunakan Firefox karena tidak bekerja dengan CMS yang kami gunakan (yang lainnya tidak).
Erik Funkenbusch
@Mystere Man: Salah. Berhentilah mengulangi pemikiran Anda dan lihat konfigurasi apa yang diberikan masing-masing browser kepada Anda. Jika Anda tidak menghabiskan usaha untuk benar-benar membaca dokumentasi maka Anda tidak akan pernah bisa menyelesaikan masalah Anda karena Anda meminta sesuatu yang terlalu spesifik yang tidak berlaku untuk orang lain. Seperti yang saya katakan sebelumnya tetapi sepertinya Anda belum membaca: Browser apa pun memungkinkan Anda untuk mengatur server proxy untuk browser itu. Google Chrome menyediakan parameter CLI--proxy-server= .
Tamara Wijsman
1
Hmm, saya mungkin salah tentang Safari karena saya tidak menggunakannya untuk beberapa waktu. Tapi saya pikir saya salah paham, mengapa Anda ingin memiliki server proxy yang berbeda di setiap browser? Saya menjadi bingung mengapa sesuatu seperti "x.com = produksi; stage.x.com = pementasan; dev.x.com = pengembangan" tidak hanya akan bekerja untuk Anda yang diberi IP tunggal dan pengalihan header host di server ...
Tamara Wijsman
1

Tidak tahu apakah ini cukup nyaman untuk Anda, tetapi satu solusi yang mungkin adalah menginstal IIS pada mesin dengan browser dan menyediakan skrip sisi server (seperti ASP.net, PHP, Ruby ...) yang mengubah hostsfile dan lalu arahkan ke halaman yang sebenarnya. Di browser Anda, Anda kemudian membuat bookmark ke skrip itu, misalnya http://localhost/config_ie.rbyang mengubah hostsfile (tentu saja, memerlukan izin yang benar pada file itu) dan kemudian melakukan redirect-302 ke halaman sebenarnya.

Michael Kremser
sumber
1
Bagian yang kebanyakan orang tidak mengerti tentang ini adalah agar dapat bekerja secara efektif, Anda harus dapat menjalankan beberapa browser secara bersamaan, menggunakan pemetaan host / ip yang berbeda. Sebagai contoh, saya harus membuat instance produksi dan pengujian serta debug saya terbuka dalam berbagai browser yang berbeda. Masing-masing harus menggunakan nama host yang sama (karena pemetaan nama host HTTP 1.1 memetakan situs yang benar berdasarkan nama host). Jika Anda hanya mengubah file host, maka setiap instance browser sekarang memetakan ke server baru, bukan hanya satu instance saja.
Erik Funkenbusch
@Erik Funkenbusch: Terima kasih atas klarifikasi. Nah, ide-ide saya yang tersisa: a) Satu konsep akan menggunakan sesuatu seperti virtualisasi sistem file, yang disebut "Redirection Data" di Windows dan biasanya digunakan untuk UAC untuk mendukung aplikasi lama yang menulis data ke jalur sensitif. Mungkin ada beberapa opsi yang memungkinkan Anda menggunakannya untuk keperluan Anda sendiri. Maka Anda dapat memiliki hostsfile khusus untuk setiap proses. b) Intersepsi DNS secara lokal: Permintaan dari "iexplore.exe" dll. dapat dimanipulasi sesuai dengan beberapa daftar yang Anda berikan. - Apakah ada ide yang Anda sukai?
Michael Kremser
1

Jika VM penuh terlalu banyak, solusi berbasis wadah mungkin dilakukan.

Jika kita berbicara tentang linux di sini, lxcmungkin solusi yang layak.

Selain itu - bahkan VM penuh dengan X11-linux minimal tidak sebesar itu (maks 2 GB disk) dan tidak mengkonsumsi banyak sumber daya (maks. 512 MB RAM) dengan perangkat keras saat ini ...

Sebuah LubuntuVM mungkin lakukan di sini.

Nils
sumber
Saya menemukan RAM dan prosesnya OK. Disk bersama adalah yang melumpuhkan sistem.
jww
0

Salah satu solusi yang relatif sederhana (tapi mungkin sedikit sumber daya berat) adalah memiliki beberapa mesin virtual yang berjalan di host Anda. Setiap mesin virtual memiliki file host sendiri.

Jadi Anda akan memiliki satu mesin virtual untuk lingkungan pementasan, satu untuk prod, dll.

Pete
sumber
Mungkin Anda harus membaca dua komentar pertama di bawah pertanyaan. Ini telah diatasi 4 tahun yang lalu.
Erik Funkenbusch
Sebenarnya saya memang melihat komentar, tetapi tidak sampai setelah saya memposting jawaban ini. Tetapi saya masih berpikir masuk akal untuk memilikinya sebagai jawaban yang terpisah (bukan hanya komentar), karena dapat membantu orang lain dengan jenis masalah yang sama.
Pete
Dua VM akan melumpuhkan sebagian besar workstation karena bottleneck disk bersama. Saya sedikit menderita dengan satu VM terbuka (satu adalah Mac Mac Book Pro modern dengan dual quad core; yang kedua adalah laptop ASUS modern dengan single quad core). Dua VM akan menyakitkan.
jww