Cách chỉ dùng proxy cho một số trang web trong Chrome
Mục lục

Tóm lại: Chrome trên máy tính không có thiết lập nào áp dụng proxy cho từng trang web cụ thể. Nó chạy một cấu hình proxy cho mọi hoạt động duyệt web, lấy từ hệ điều hành, một cờ khởi chạy, chính sách của quản trị viên hoặc một tiện ích. Để chỉ gửi một số trang qua proxy, Chrome cần một script PAC, tức một hàm ngắn chọn proxy cho từng yêu cầu, do bạn tự viết hoặc do một tiện ích tạo ra từ các quy tắc.
Để dùng proxy cho một số trang cụ thể trong Chrome, bạn đưa cho trình duyệt một script PAC nêu tên các trang đó, và Chrome tra cứu nó ở mọi yêu cầu. Script có thể đến từ ba nơi: hệ điều hành của bạn, một Chrome được khởi chạy riêng, hoặc một tiện ích.
Chrome có thiết lập proxy cho từng trang không?
Không. Trang cài đặt của Chrome chỉ có một mục proxy, mang nhãn “Open your computer’s proxy settings” (mở thiết lập proxy của máy tính), và Chromium mô tả các thiết lập đó là áp dụng cho toàn bộ máy tính (chuỗi cài đặt của Chromium).
Ghi chú về proxy của Chromium liệt kê bốn nơi Chrome có thể lấy cấu hình proxy: chính sách của quản trị viên, cờ dòng lệnh, một tiện ích và hệ điều hành. Nơi nào đang có hiệu lực sẽ cung cấp một cấu hình cho mọi thứ trình duyệt tải, và quyết định theo từng trang nằm bên trong cấu hình đó dưới dạng một script PAC.
Script PAC làm gì?
Script PAC (proxy auto-configuration, tự động cấu hình proxy) là một hàm
JavaScript tên FindProxyForURL. Chrome gọi nó cho mỗi yêu cầu với địa chỉ và
tên host, rồi dùng chuỗi nó trả về: DIRECT nghĩa là không dùng proxy, hoặc
PROXY host:port nghĩa là dùng một máy chủ proxy, như
tài liệu tham khảo PAC của MDN
mô tả.
Script này gửi một tên miền và các tên miền con của nó qua proxy, còn mọi thứ khác đi trực tiếp. Địa chỉ proxy lấy từ một dải dành riêng cho tài liệu (RFC 5737); hãy thay bằng địa chỉ của bạn.
function FindProxyForURL(url, host) {
if (host === "example.com" || dnsDomainIs(host, ".example.com")) {
return "PROXY 203.0.113.10:8080";
}
return "DIRECT";
}
Thêm một điều kiện cho mỗi trang bạn muốn đi qua proxy. Lệnh return cuối cùng
quyết định điều gì xảy ra với mọi trang không có trong danh sách.
Có những cách nào để đưa script PAC cho Chrome?
Ba cách: qua thiết lập proxy của hệ thống, qua một Chrome khởi chạy riêng, hoặc qua một tiện ích. Chúng khác nhau ở mức độ tác động lên máy tính và ở cách một thay đổi có hiệu lực.
Qua thiết lập proxy của hệ thống
Trên Windows, thiết lập proxy có tùy chọn “setup script” (script thiết lập) nhận địa chỉ của script, như hướng dẫn của Microsoft trình bày, và Chrome làm theo thiết lập của hệ thống. Script phải truy cập được tại một URL. Mọi ứng dụng đọc thiết lập proxy của hệ thống cũng sẽ dùng nó, nên cách này hợp với một script bạn định dùng cho cả máy.
Trong một phiên bản Chrome riêng
Chrome nhận các cờ proxy khi khởi chạy, được liệt kê trên
trang network settings của Chromium:
--proxy-server nêu một proxy, --proxy-bypass-list nêu các host bỏ qua nó,
và --proxy-pac-url trỏ tới một script. Khi được khởi chạy với
--user-data-dir riêng, Chrome thứ hai chạy song song với Chrome bạn vẫn dùng,
vì hai phiên bản đang chạy không thể dùng chung một thư mục dữ liệu
(ghi chú của Chromium về thư mục dữ liệu người dùng).
google-chrome --user-data-dir="$HOME/chrome-proxied" --proxy-server="http://203.0.113.10:8080"
Phiên bản đó gửi toàn bộ lưu lượng của nó qua proxy, nên việc bạn mở một trang trong cửa sổ nào sẽ quyết định tuyến đường của trang đó. Đổi proxy nghĩa là thoát phiên bản đó rồi khởi chạy lại với cờ mới.
Với một tiện ích proxy
Một tiện ích đặt proxy của Chrome cho hồ sơ mà nó được cài vào, thông qua API chrome.proxy, và một trình chuyển đổi có quy tắc sẽ biên dịch các quy tắc đó thành một script PAC. Tiện ích miễn phí ProxyJam Connector của chúng tôi hoạt động theo cách này, trên Chrome và trên Microsoft Edge:
- Thêm một hồ sơ với host, cổng và giao thức của proxy.
- Thêm một quy tắc, ví dụ “Domain + subdomains” (tên miền và tên miền con) với
example.com, trỏ tới hồ sơ đó. Quy tắc đầu tiên khớp với một trang sẽ thắng. - Để fallback ở Direct để các trang không khớp quy tắc nào kết nối không qua proxy.
- Chọn Auto trong cửa sổ bật lên trên thanh công cụ.
Với một trang khớp quy tắc, script của Connector nêu đúng một proxy đó mà không có tùy chọn đi trực tiếp phía sau. Nếu proxy ngừng hoạt động, trang sẽ không tải được và địa chỉ của chính bạn không bao giờ được dùng cho nó.
Mỗi tab có thể dùng một proxy khác nhau không?
Trong Chrome thì không. API chrome.proxy lưu một giá trị cho một hồ sơ và không nhận tab làm tham số, nên một tab không có gì riêng để đặt.
Đơn vị khả thi là một hồ sơ hoặc một phiên bản. Hãy tạo một hồ sơ Chrome thứ hai cho công việc qua proxy và cài tiện ích ở đó, hoặc khởi chạy một phiên bản thứ hai với cờ riêng, rồi đặt hai cửa sổ cạnh nhau. Khi đó mỗi cửa sổ mang proxy riêng của nó.
Vì sao một quy tắc có path lại không khớp trên trang HTTPS?
Chrome chỉ đưa cho script PAC scheme, host và cổng của một địa chỉ https://.
Path, query và fragment đã bị loại bỏ từ Chrome 52, và tùy chọn tắt hành vi này
đã bị gỡ ở Chrome 75
(ghi chú về proxy của Chromium).
Vì vậy, một quy tắc như example.com/shop/* không khớp với trang HTTPS nào. Hãy
viết quy tắc theo tên host, và cho một phần của trang web một tên miền con
riêng nếu phần đó cần tuyến đường riêng. Các địa chỉ http:// thông thường vẫn
đến script kèm path, dù Chromium khuyên không nên dựa vào điều đó. Connector
hiển thị cảnh báo bên cạnh mọi quy tắc phụ thuộc vào path.
Bạn nên chọn cách nào?
Với vài trang và một proxy, một tiện ích là cách ít công sức nhất, và trang tiện ích liệt kê những gì Connector làm được và không làm được trên Chrome. Proxy đòi mật khẩu được nói tới trong vì sao Chrome cứ hỏi tên người dùng và mật khẩu proxy, còn việc chuyển quy tắc từ một trình chuyển đổi cũ có trong những gì đã thay đổi với Manifest V3. Thiết lập một hồ sơ và một proxy cho mỗi quốc gia để kiểm tra trang web của chính bạn hiển thị thế nào ở từng thị trường được trình bày trong xem trang web của bạn từ một quốc gia khác.
Nếu proxy bạn dùng để định tuyến những trang đó cần giữ một địa chỉ trên mạng của một nhà cung cấp internet, đó chính là proxy ISP. ProxyJam bán proxy dân cư tĩnh (ISP) trên trang proxy ISP, với giá trên trang bảng giá.
