Trình duyệt với tập tin máy chủ của riêng mình?


36

Tôi có một số máy chủ dàn và kiểm tra mà tôi cần liên tục sửa đổi tệp máy chủ của mình để truy cập (chúng phụ thuộc vào tên miền, vì vậy tôi phải thay đổi tệp máy chủ để chúng hoạt động).

Tôi thấy điều này gây phiền nhiễu. Tôi muốn thiết lập một trình duyệt di động thuộc loại nào đó cho từng loại trang web tôi muốn làm việc. Có phiên bản nào của bất kỳ trình duyệt web đồ họa nào (bao gồm các trình duyệt dựa trên công cụ kết xuất của các trình duyệt khác) sẽ làm điều này không?

Bằng cách này, tôi có thể đơn giản khởi chạy phiên bản đã được cấu hình để hoạt động với dàn nếu tôi muốn kiểm tra dàn.

Có ý kiến ​​gì không?

EDIT: Tính năng quan trọng là khả năng chạy đồng thời hai trình duyệt, cả trình duyệt some-address.com, nhưng với một trình 1.2.3.4duyệt điều hướng các yêu cầu đến máy chủ tại và trình duyệt khác điều hướng các yêu cầu đến máy chủ tại 5.6.7.8.

EDIT: (16/03/14)

Câu hỏi này đã được hỏi vài năm trước, và tôi vẫn không biết một cách hay để làm điều này. Hãy để tôi cố gắng giải thích thêm, bởi vì mọi người dường như hiểu sai vấn đề. Đây không phải là thứ có thể dễ dàng sửa chữa chỉ bằng cách sử dụng máy chủ proxy. Tôi cho rằng có thể viết các quy tắc mở rộng trong một máy chủ proxy để giải quyết các vấn đề, nhưng đó là một giải pháp phức tạp rất lớn cho vấn đề đơn giản.

Vì vậy, để làm rõ:

Có ba máy chủ web. Sản xuất, thử nghiệm và phát triển. Mỗi ứng dụng chạy một ứng dụng nhiều người thuê tùy chỉnh chính nó dựa trên tên máy chủ được sử dụng để truy cập nó. Về mặt khái niệm, điều này tương tự như Hệ thống quản lý nội dung hoặc công cụ blog cho phép nhiều trang web chạy cùng một phiên bản máy chủ. Bạn chỉ cần trỏ tên máy chủ đến máy chủ và bất kỳ tên máy chủ nào được sử dụng để truy cập thông qua ánh xạ tên máy chủ HTTP 1.1, là trang web mà nó hiển thị.

Bất kỳ giải pháp nào chỉ đơn giản là viết lại tệp máy chủ không hoạt động do yêu cầu chạy nhiều cửa sổ trình duyệt cùng một lúc đến các trang web khác nhau, sản xuất, phát triển, kiểm tra, v.v ... Vì vậy, đơn giản là liên tục thay đổi tệp máy chủ không hoạt động vì nó ảnh hưởng đến tất cả các trường hợp trình duyệt. Nếu bạn thay đổi ánh xạ cho một trình duyệt, thì các trình duyệt khác hiện cũng được ánh xạ tới máy chủ đó để mọi yêu cầu tiếp theo sẽ chuyển đến máy chủ sai.

Tất cả những gì tôi đang tìm kiếm là một cách để buộc phiên bản trình duyệt này sử dụng tệp máy chủ này và phiên bản trình duyệt đó sử dụng tệp máy chủ đó, chẳng hạn như thông qua một tham số dòng lệnh. Tôi thậm chí không quan tâm nếu tôi cần cài đặt nhiều bản sao của trình duyệt.

Điều này có thể thực hiện được với firefox di động, vì tôi nghĩ rằng nó sử dụng các tệp cấu hình riêng cho mỗi bản sao được cài đặt, nhưng vấn đề là phần mềm bên thứ ba được sử dụng để quản trị các trang web không hoạt động với firefox (các trang web tự làm, nhưng các công cụ quản trị không, chúng hoạt động tốt với chrome và IE và Opera, tuy nhiên .. và tôi không có quyền truy cập vào nguồn để sửa lỗi này).


Hầu hết mọi người trong tình huống của bạn đều chạy một vài máy ảo WinXP hoặc Ubuntu với các cấu hình HOSTS khác nhau.
Digitxp

@digitxp - Vâng, tôi đã nghĩ về điều đó nhưng tôi thực sự không muốn chi phí hoạt động của nhiều máy ảo và toàn bộ hệ điều hành chỉ để duyệt một vài trang web. Rõ ràng, nếu không có lựa chọn nào khác, đó là điều tôi có thể phải làm ..
Erik Funkenbusch

Nếu vẫn thất bại: Fiddler Web Debugger (Windows) hoặc GlimmerBlockerCharles Web Debugging Proxy (Mac) có thể viết lại các yêu cầu một cách nhanh chóng ...
Arjan

@Arjan - Proxy sẽ hoạt động ở một mức độ nào đó, nhưng tôi sẽ phải có một phiên bản proxy riêng cho từng phiên bản trình duyệt hoặc thay đổi cài đặt proxy mỗi lần gây khó chịu hơn khi thay đổi tệp máy chủ.
Erik Funkenbusch

1
Có lẽ một Web Proxy như mực, sẽ cho phép bạn chuyển hướng theo cách thực hiện những gì bạn muốn thực hiện từ độ phân giải DNS? (tất nhiên một proxy web có thể được cấu hình trên cơ sở mỗi trình duyệt)
barlop

Câu trả lời:


19

Mực đã giải quyết vấn đề cho tôi. Tôi nghĩ rằng nhiều máy chủ proxy có thể làm như vậy.

Cụ thể, tôi đã phải cài đặt Squid. Sau đó thay đổi squid.conf để nó truy cập vào tệp máy chủ thay thế. Đây là dòng bạn muốn thay đổi:

#hosts_file /etc/hosts

Trong trường hợp của tôi, tôi đã sử dụng hosts_file /etc/hosts-squid. Tôi đã tạo /etc/hosts-squidtệp và thay đổi tệp máy chủ-mực để nó cấp cho tôi quyền truy cập vào các địa chỉ IP mới mà tôi muốn cho URL đã cho. Đó là tất cả những gì tôi cần làm để cấu hình máy chủ proxy Squid.

Sau đó tôi đã tạo một lệnh để khởi chạy trình duyệt của mình với các cài đặt proxy. Tôi đã sử dụng:

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

Việc chạy lệnh đó thực sự mang lại cho tôi một phiên bản crom đang chạy có thể truy cập vào thiết lập tên miền trong tệp máy chủ lưu trữ mà tôi đã tạo.

Tôi cũng có thể thiết lập nhiều máy chủ proxy hơn bằng cách sử dụng nhiều phiên bản của Squid để truy cập tất cả trang web sản xuất, phát triển và địa phương trên cùng một máy tính. Hướng dẫn về cách chạy nhiều phiên bản Squid ở đây . Tôi cũng đã viết một bài đăng blog giải thích vấn đề và giải pháp chi tiết hơn một chút.


8

Tôi tin rằng bạn đang yêu cầu thiết lập một môi trường ảo cho mỗi trình duyệt bao gồm tệp máy chủ của riêng nó.

Một giải pháp có thể là sử dụng Sandboxie để thiết lập một hộp cát riêng, mỗi hộp chứa tệp lưu trữ riêng. Không cần cài đặt trình duyệt vào hộp cát để sử dụng tệp máy chủ, chỉ cần bắt đầu từ bên trong hộp cát đó. Phím tắt trên màn hình có thể được tạo để khởi chạy trình duyệt từ trong hộp cát.

Nhược điểm sẽ là các trình duyệt sẽ bị cô lập khỏi hệ thống tệp thực, ví dụ như khi tải xuống các tệp từ Internet, nhưng Sandboxie bao gồm các cơ chế để sao chép các tệp đó bên ngoài hộp cát.

Thật không may, tính năng chạy các chương trình trong nhiều hộp cát cùng một lúc chỉ có trong phiên bản trả phí của Sandboxie (15 euro cộng với thuế cho một năm giấy phép sử dụng cá nhân tại nhà). Kiểm tra khả thi có thể được thực hiện bằng cách sử dụng phiên bản miễn phí.

Đối với người dùng Linux, các sản phẩm tương tự là:


Xin lỗi về harrymc trả lời muộn. Không rõ liệu chương trình có cho phép một người cung cấp các tệp hệ thống theo hộp cát như %SYSTEM32%/Drivers/etc/hoststrên Windows và /etc/hoststrên Linux hay không. Bạn có thể xác nhận? Tôi thích phiên bản Linux hơn vì tôi đã đánh giá bảo mật nhanh về Sandboxie vài năm trước trên Windows (nó không thành công và các báo cáo cho tác giả không được trả lời).
jww

nếu Sandboxie hỗ trợ các tệp hệ thống trên mỗi hộp cát %SYSTEM32%/Drivers/etc/hosts, thì các điểm là của bạn. Hệ điều hành chưa được xác định rõ ràng và sẽ không công bằng khi bạn giữ lại chúng nếu Windows / Sandboxie hoạt động.
jww

AFAIK Sandboxie tạo ra một hệ thống tệp và sổ đăng ký hoàn toàn song song. Đối với Linux, một chương trình hộp cát đơn giản là arkose hoặc có thể là sandfox nhưng tôi không có kinh nghiệm với chúng.
harrymc

Cảm ơn harrymc. Tôi đang gặp khó khăn khi trao điểm cho bạn. Tôi thấy một hộp có +50, nhưng tôi không thể nhấp vào nó. Thêm vào đó, tôi nghĩ rằng nó đáng giá 100. Bất kỳ ý tưởng nào (hoặc tôi cần đi lang thang đến Meta)?
jww

Xem Câu hỏi thường gặp về Tiền thưởng: Trong số tiền thưởng 100, một nửa được trao tự động sau 7 + 1 ngày mà không có câu trả lời được chỉ định, một nửa đã bị mất.
harrymc

4

Bạn có thể tự động hóa quá trình thay đổi tệp máy chủ bằng firefox + HostAdmin

HostAdmin là một Addon Firefox, giúp bạn sửa đổi tệp Hosts, chuyển đổi ánh xạ tên miền-ip. HostAdmin có thể hiểu tệp Máy chủ của bạn thông qua cú pháp tệp Máy chủ lưu trữ nâng cao. Ngoài ra, HostAdmin tự động làm mới bộ đệm DNS của bạn bất cứ khi nào bạn thay đổi tệp Máy chủ, thậm chí theo cách thủ công.

Cấu hình ví dụ

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

Thêm thông tin tại https://addons.mozilla.org/en-US/firefox/addon/hostadmin/

Nhiều trường hợp

Để chạy hai phiên bản trình duyệt firefox đồng thời và độc lập trong linux, hãy tạo nhiều trình khởi chạy với tập lệnh sau. Cũng cài đặt plugin trong tất cả 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  

Bạn có thể sử dụng tùy chọn cấu hình ( firefox -P) trong trình duyệt để sử dụng cấu hình gốc cho các cài đặt khác nhau và có thể sử dụng đồng thời.


1
Anh ta yêu cầu 2 trình duyệt sử dụng 2 tệp lưu trữ cùng một lúc .
harrymc


@harrym c cập nhật.
totti

2

Tôi biết đây không phải là những gì bạn yêu cầu, nhưng một giải pháp tạm thời có thể là viết một tập lệnh bó để hoán đổi các tập tin máy chủ và sau đó đóng gói trình duyệt.

Ít nhất nó sẽ giảm thiểu công việc bạn đang làm.

Hoặc bạn chỉ có thể đặt tên cho các máy chủ này một cái gì đó hoàn toàn khác trong tệp máy chủ để bạn không bao giờ phải chuyển đổi nó để bắt đầu.


Tôi không thể đổi tên chúng vì các ứng dụng web phụ thuộc vào tên máy chủ để hiển thị đúng nội dung. Ngoài ra, lý do tôi muốn làm điều này là vì tôi có thể chạy nhiều trình duyệt cùng một lúc và có một trình duyệt và một trình duyệt khác để phát triển. Bạn không thể làm điều đó bằng cách hoán đổi các tập tin máy chủ.
Erik Funkenbusch

@MystereMan: Nếu bạn đang nói về META BASE, chỉ cần làm phía máy chủ phát hiện trình duyệt. Bạn không nên có tên máy chủ của riêng mình trong bất kỳ URL nào khác ...
Tamara Wijsman

@TomWij - Không, tôi không nói về META BASE. Tôi đang nói về lưu trữ ảo dựa trên máy chủ, không dựa trên IP. Trường tên máy chủ xác định trang web nào được truy cập.
Erik Funkenbusch

@MystereMan: Sau đó, nhận xét đầu tiên của bạn về câu trả lời này không có ý nghĩa gì. Như bạn đang nói về "ứng dụng web hiển thị đúng nội dung", tôi không thấy máy chủ ảo phải làm gì với điều đó?
Tamara Wijsman

@TomWij - Chúng tôi có một hệ thống CMS nhiều tầng lưu trữ nhiều trang web trên một máy chủ, với một IP duy nhất. Để xem bất kỳ trang web cụ thể, bạn phải sử dụng tên máy chủ, nếu không bạn chỉ truy cập vào thể hiện mặc định. Tôi cần chuyển đổi giữa các phiên bản sản xuất, dàn dựng và phát triển của máy chủ này, có nghĩa là thay đổi ánh xạ tên miền thành địa chỉ IP của họ một cách nhanh chóng. Tôi có thể làm điều này trong tệp máy chủ, nhưng điều đó thay đổi mọi thứ trên toàn cầu vì vậy tôi không thể mở các bản sao dàn dựng và sản xuất đồng thời trong hai trường hợp trình duyệt khác nhau.
Erik Funkenbusch

1

Privoxy có thể được sử dụng cho mục đích này.


Chính xác thì, làm thế nào để Privoxy hoạt động cho mục đích này? Nó trông giống như một máy chủ proxy cục bộ khác, không có máy chủ nào hoạt động được vì với hầu hết các trình duyệt bạn không thể xác định proxy cho mỗi phiên bản .. bạn chỉ có thể xác định proxy toàn cầu cho tất cả các phiên bản
Erik Funkenbusch

@MystereMan: Nó sẽ ủy quyền các yêu cầu của bạn và do đó thao túng các yêu cầu thành các yêu cầu khác, khá dễ dàng để thực hiện điều đó . Bạn đang nói không có ý nghĩa về các máy chủ proxy: Mirosoft Internet Explorer (GUI), Mozilla Firefox (GUI), Google Chrome (CLI --proxy-server =), Apple Safari (GUI), Opera (GUI) và bất kỳ trình duyệt nào khác (GUI hoặc CLI) cho phép bạn đặt máy chủ proxy của riêng mình ...
Tamara Wijsman

@TomWij - Không. IE, Chrome và Safari đều sử dụng cài đặt máy chủ proxy toàn cầu trong "Cài đặt Internet". Điều đó có nghĩa là, nếu bạn thay đổi nó trong một trình duyệt web, nó sẽ thay đổi trong tất cả chúng. Firefox có các cài đặt riêng cho việc này, nhưng thật không may, tôi không thể sử dụng Firefox vì nó không hoạt động với CMS chúng tôi sử dụng (mọi thứ khác đều như vậy).
Erik Funkenbusch

@Mystere Man: Không chính xác. Dừng lặp lại suy nghĩ của bạn và thay vào đó hãy xem cấu hình của từng trình duyệt riêng lẻ mang lại cho bạn. Nếu bạn không dành nỗ lực để thực sự đọc tài liệu thì bạn sẽ không bao giờ giải quyết được vấn đề của mình vì bạn đang hỏi điều gì đó quá cụ thể không áp dụng cho những người còn lại. Như tôi đã nói trước đây nhưng dường như bạn chưa đọc: Bất kỳ trình duyệt nào cũng cho phép bạn đặt máy chủ proxy cho trình duyệt đó. Google Chrome cung cấp tham số CLI--proxy-server= .
Tamara Wijsman

1
Hmm, tôi có thể sai về Safari vì tôi đã không sử dụng nó trong một thời gian khá lâu. Nhưng tôi nghĩ rằng tôi đã hiểu lầm bạn, tại sao bạn muốn có một máy chủ proxy khác nhau trong mỗi trình duyệt? Tôi đang bối rối vì lý do tại sao một cái gì đó như "x.com = sản xuất; giai đoạn.x.com = dàn dựng; dev.x.com = phát triển" sẽ không chỉ hoạt động cho bạn khi bạn chuyển hướng một tiêu đề IP và máy chủ ...
Tamara Wijsman

1

Không biết điều này có đủ thuận tiện cho bạn không, nhưng một giải pháp khả thi là cài đặt IIS trên máy với các trình duyệt và cung cấp các tập lệnh phía máy chủ (như ASP.net, PHP, Ruby ...) để thay đổi hoststệp và sau đó chuyển hướng đến trang thực tế. Trong các trình duyệt của bạn, sau đó bạn tạo một dấu trang cho tập lệnh đó, ví dụ như http://localhost/config_ie.rbthay đổi hoststệp (tất nhiên yêu cầu quyền chính xác trên tệp đó) và sau đó thực hiện 302-redirct vào trang thực.


1
Phần mà hầu hết mọi người không hiểu về điều này là để hoạt động hiệu quả, bạn cần có thể chạy nhiều trình duyệt cùng một lúc, sử dụng ánh xạ máy chủ / ip khác nhau. Ví dụ, tôi cần mở cả hai phiên bản sản xuất và kiểm tra và gỡ lỗi trong các phiên bản trình duyệt khác nhau. Mỗi người phải sử dụng cùng một tên máy chủ (vì ánh xạ tên máy chủ HTTP 1.1 ánh xạ trang web chính xác dựa trên tên máy chủ). Nếu bạn chỉ thay đổi tệp máy chủ, thì mọi phiên bản trình duyệt hiện sẽ ánh xạ tới máy chủ mới, không chỉ là phiên bản duy nhất của nó.
Erik Funkenbusch

@Erik Funkenbusch: Cảm ơn đã làm rõ. Chà, ý tưởng còn lại của tôi: a) Một khái niệm sẽ sử dụng thứ gì đó như ảo hóa hệ thống tập tin, được gọi là "Chuyển hướng dữ liệu" trong Windows và thường được sử dụng cho UAC để hỗ trợ các ứng dụng kế thừa ghi dữ liệu vào các đường dẫn nhạy cảm. Có thể có một số tùy chọn cho phép bạn sử dụng nó cho mục đích riêng của bạn. Sau đó, bạn có thể có một hoststệp tùy chỉnh cho mọi quá trình. b) Đánh chặn DNS cục bộ: Yêu cầu từ "iexplore.exe", v.v. có thể bị thao túng theo một số danh sách bạn cung cấp. - Có một số ý tưởng mà bạn thích?
Michael Kremser

1

Nếu một VM đầy đủ quá nhiều, một giải pháp dựa trên container có thể làm được.

Nếu chúng ta đang nói về linux ở đây, lxccó thể là một giải pháp khả thi.

Ngoài ra - ngay cả một máy ảo đầy đủ với X11-linux tối thiểu cũng không lớn (đĩa tối đa 2 GB) và không tiêu tốn nhiều tài nguyên (RAM tối đa 512 MB) với phần cứng hiện nay ...

Một LubuntuVM có thể làm ở đây.


Tôi tìm thấy RAM và xử lý là OK. Các đĩa được chia sẻ là những gì làm tê liệt hệ thống.
jww

0

Một giải pháp tương đối đơn giản (nhưng có thể hơi nặng tài nguyên) sẽ có một vài máy ảo chạy trong máy chủ của bạn. Mỗi máy ảo có tệp lưu trữ riêng của nó.

Vì vậy, bạn sẽ có một máy ảo cho môi trường dàn dựng, một cho prod, v.v.


Có lẽ bạn nên đọc hai bình luận đầu tiên dưới câu hỏi. Điều này đã được giải quyết 4 năm trước.
Erik Funkenbusch

Thật ra tôi đã thấy bình luận, nhưng mãi đến sau khi tôi đăng câu trả lời này. Nhưng tôi vẫn nghĩ rằng nó có ý nghĩa khi có nó như một câu trả lời riêng biệt (trái ngược với chỉ một nhận xét), vì nó có thể giúp những người khác có cùng loại vấn đề.
Pete

Hai máy ảo sẽ làm tê liệt hầu hết các máy trạm do tắc nghẽn ổ đĩa chung. Tôi hơi đau khổ với một VM mở (một là Mac Mac Book Pro hiện đại với lõi kép, thứ hai là máy tính xách tay ASUS hiện đại với lõi tứ đơn). Hai máy ảo sẽ đau đớn.
jww
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.