Mô tả
Sử dụng API chrome.proxy để quản lý chế độ cài đặt proxy của Chrome. API này dựa vào nguyên mẫu ChromeSetting của API loại để nhận và thiết lập cấu hình proxy.
Quyền
proxyTệp kê khai
Bạn phải khai báo quyền "proxy" trong tệp kê khai tiện ích để dùng API chế độ cài đặt proxy. Ví dụ:
{
"name": "My extension",
...
"permissions": [
"proxy"
],
...
}
Đối tượng và thuộc tính
Chế độ cài đặt proxy được xác định trong đối tượng proxy.ProxyConfig. Tuỳ thuộc vào chế độ cài đặt proxy của Chrome, chế độ cài đặt này có thể chứa proxy.ProxyRules hoặc proxy.PacScript.
Chế độ proxy
Thuộc tính mode của đối tượng ProxyConfig xác định hành vi tổng thể của Chrome liên quan đến việc sử dụng proxy. Tham số này có thể nhận các giá trị sau:
direct- Ở chế độ
direct, tất cả các kết nối đều được tạo trực tiếp mà không cần có bất kỳ proxy nào. Chế độ này không cho phép có thêm thông số trong đối tượngProxyConfig. auto_detect- Ở chế độ
auto_detect, cấu hình proxy được xác định bằng một tập lệnh PAC có thể tải xuống tại http://wpad/wpad.dat. Chế độ này không cho phép có thêm thông số trong đối tượngProxyConfig. pac_script- Ở chế độ
pac_script, cấu hình proxy được xác định bằng một tập lệnh PAC được truy xuất từ URL được chỉ định trong đối tượngproxy.PacScripthoặc được lấy nguyên văn từ phần tửdatađược chỉ định trong đối tượngproxy.PacScript. Ngoài ra, chế độ này không cho phép có thêm tham số nào trong đối tượngProxyConfig. fixed_servers- Ở chế độ
fixed_servers, cấu hình proxy được mã hoá trong đối tượngproxy.ProxyRules. Cấu trúc của quy tắc này được mô tả trong phần Quy tắc proxy. Ngoài ra, chế độfixed_serverskhông cho phép các tham số khác trong đối tượngProxyConfig. system- Ở chế độ
system, cấu hình proxy được lấy từ hệ điều hành. Chế độ này không cho phép thêm các tham số khác trong đối tượngProxyConfig. Xin lưu ý rằng chế độsystemkhác với việc không thiết lập cấu hình proxy. Trong trường hợp thứ hai, Chrome chỉ quay lại chế độ cài đặt hệ thống nếu không có tuỳ chọn dòng lệnh nào ảnh hưởng đến cấu hình proxy.
Quy tắc proxy
Đối tượng proxy.ProxyRules có thể chứa thuộc tính singleProxy hoặc một tập hợp con của proxyForHttp, proxyForHttps, proxyForFtp và fallbackProxy.
Trong trường hợp đầu tiên, lưu lượng truy cập HTTP, HTTPS và FTP được chuyển qua máy chủ proxy đã chỉ định. Lưu lượng truy cập khác được gửi trực tiếp. Trong trường hợp thứ hai, hành vi này tinh tế hơn một chút: Nếu một máy chủ proxy được định cấu hình cho giao thức HTTP, HTTPS hoặc FTP, thì lưu lượng truy cập tương ứng sẽ được chuyển qua proxy thông qua máy chủ đã chỉ định. Nếu bạn không chỉ định máy chủ proxy như vậy hoặc lưu lượng truy cập sử dụng một giao thức khác ngoài HTTP, HTTPS hoặc FTP, thì fallbackProxy sẽ được dùng. Nếu bạn không chỉ định fallbackProxy, lưu lượng truy cập sẽ được gửi trực tiếp mà không cần máy chủ proxy.
Đối tượng máy chủ proxy
Máy chủ proxy được định cấu hình trong đối tượng proxy.ProxyServer. Kết nối đến máy chủ proxy (do thuộc tính host xác định) sử dụng giao thức được xác định trong thuộc tính scheme. Nếu bạn không chỉ định scheme, thì kết nối proxy sẽ mặc định là http.
Nếu không có port nào được xác định trong đối tượng proxy.ProxyServer, thì cổng sẽ được lấy từ lược đồ.
Các cổng mặc định là:
| Lược đồ | Cổng |
|---|---|
| http | 80 |
| https | 443 |
| socks4 | 1080 |
| socks5 | 1080 |
Danh sách bỏ qua
Bạn có thể loại trừ các máy chủ riêng lẻ khỏi việc được uỷ quyền bằng bypassList. Danh sách này có thể chứa các mục sau:
[SCHEME://]HOST_PATTERN[:PORT]Khớp tất cả tên máy chủ khớp với mẫu
HOST_PATTERN."."ở đầu được diễn giải là"*.".Ví dụ:
"foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99".Mẫu Liên kết Không khớp ".foobar.com""www.foobar.com""foobar.com""*.foobar.com""www.foobar.com""foobar.com""foobar.com""foobar.com""www.foobar.com""*foobar.com""foobar.com","www.foobar.com","foofoobar.com"[SCHEME://]IP_LITERAL[:PORT]Khớp các URL là giá trị cố định của địa chỉ IP. Về mặt khái niệm, điều này tương tự như trường hợp đầu tiên, nhưng có các trường hợp đặc biệt để xử lý việc chuẩn hoá chữ số IP. Ví dụ: việc so khớp trên "[0:0:0::1]" cũng giống như việc so khớp trên "[::1]" vì quá trình chuẩn hoá IPv6 được thực hiện nội bộ.
Ví dụ:
127.0.1,[0:0::1],[::1]:80,https://[::1]:443IP_LITERAL/PREFIX_LENGTH_IN_BITSKhớp với mọi URL chứa một giá trị cố định IP (
IP_LITERAL) trong phạm vi đã cho. Dải IP (PREFIX_LENGTH_IN_BITS) được chỉ định bằng ký hiệu CIDR.Khớp với mọi URL chứa một giá trị cố định IP trong phạm vi đã cho. Dải IP được chỉ định bằng ký hiệu CIDR. Ví dụ:
"192.168.1.1/16", "fefe:13::abc/33"<local>Chuỗi ký tự
<local>khớp với tên máy chủ đơn giản. Tên máy chủ đơn giản là tên không chứa dấu chấm và không phải là giá trị cố định kiểu IP. Ví dụ:examplevàlocalhostlà tên máy chủ đơn giản, trong khiexample.com,example.và[::1]thì không.Ví dụ:
"<local>"
Ví dụ
Đoạn mã sau đây đặt một proxy SOCKS 5 cho các kết nối HTTP đến tất cả các máy chủ, ngoại trừ foobar.com và sử dụng các kết nối trực tiếp cho tất cả các giao thức khác. Các chế độ cài đặt này áp dụng cho cả cửa sổ thông thường và cửa sổ ẩn danh, vì cửa sổ ẩn danh sẽ kế thừa các chế độ cài đặt từ cửa sổ thông thường. Vui lòng tham khảo tài liệu về Types API.
var config = {
mode: "fixed_servers",
rules: {
proxyForHttp: {
scheme: "socks5",
host: "1.2.3.4"
},
bypassList: ["foobar.com"]
}
};
chrome.proxy.settings.set(
{value: config, scope: 'regular'},
function() {}
);
Đoạn mã sau đây đặt một tập lệnh PAC tuỳ chỉnh.
var config = {
mode: "pac_script",
pacScript: {
data: "function FindProxyForURL(url, host) {\n" +
" if (host == 'foobar.com')\n" +
" return 'PROXY blackhole:80';\n" +
" return 'DIRECT';\n" +
"}"
}
};
chrome.proxy.settings.set(
{value: config, scope: 'regular'},
function() {}
);
Đoạn mã tiếp theo truy vấn các chế độ cài đặt proxy hiện đang có hiệu lực. Một tiện ích khác hoặc một chính sách có thể xác định chế độ cài đặt proxy có hiệu lực. Hãy xem tài liệu về Types API để biết thông tin chi tiết.
chrome.proxy.settings.get(
{'incognito': false},
function(config) {
console.log(JSON.stringify(config));
}
);
Xin lưu ý rằng đối tượng value được truyền đến set() không giống với đối tượng value được truyền đến hàm callback của get(). Phần tử thứ hai sẽ chứa một phần tử rules.proxyForHttp.port.
Loại
Mode
Enum
"direct"
"auto_detect"
"pac_script"
"fixed_servers"
"system"
PacScript
Một đối tượng lưu giữ thông tin cấu hình tự động của proxy. Bạn không được để trống đúng một trong các trường.
Thuộc tính
-
data
chuỗi không bắt buộc
Tập lệnh PAC.
-
bắt buộc
boolean không bắt buộc
Nếu đúng, một tập lệnh PAC không hợp lệ sẽ ngăn ngăn xếp mạng chuyển về các kết nối trực tiếp. Giá trị mặc định là false.
-
url
chuỗi không bắt buộc
URL của tệp PAC sẽ được dùng.
ProxyConfig
Một đối tượng đóng gói cấu hình proxy hoàn chỉnh.
Thuộc tính
-
chế độ
"direct" = Không bao giờ sử dụng proxy "auto_detect" = Tự động phát hiện chế độ cài đặt proxy "pac_script" = Sử dụng tập lệnh PAC đã chỉ định "fixed_servers" = Chỉ định máy chủ proxy theo cách thủ công "system" = Sử dụng chế độ cài đặt proxy của hệ thống
-
pacScript
PacScript không bắt buộc
Tập lệnh tự động định cấu hình proxy (PAC) cho cấu hình này. Sử dụng chế độ này cho chế độ "pac_script".
-
quy tắc
ProxyRules không bắt buộc
Các quy tắc proxy mô tả cấu hình này. Sử dụng chế độ này cho chế độ "fixed_servers".
ProxyRules
Một đối tượng đóng gói tập hợp các quy tắc proxy cho tất cả các giao thức. Sử dụng "singleProxy" hoặc (một tập hợp con của) "proxyForHttp", "proxyForHttps", "proxyForFtp" và "fallbackProxy".
Thuộc tính
-
bypassList
string[] không bắt buộc
Danh sách các máy chủ để kết nối mà không cần máy chủ proxy.
-
fallbackProxy
ProxyServer không bắt buộc
Máy chủ proxy sẽ được dùng cho mọi thứ khác hoặc nếu bạn không chỉ định bất kỳ proxyFor... cụ thể nào.
-
proxyForFtp
ProxyServer không bắt buộc
Máy chủ proxy sẽ được dùng cho các yêu cầu FTP.
-
proxyForHttp
ProxyServer không bắt buộc
Máy chủ proxy sẽ được dùng cho các yêu cầu HTTP.
-
proxyForHttps
ProxyServer không bắt buộc
Máy chủ proxy sẽ được dùng cho các yêu cầu HTTPS.
-
singleProxy
ProxyServer không bắt buộc
Máy chủ proxy sẽ được dùng cho tất cả các yêu cầu theo URL (tức là http, https và ftp).
ProxyServer
Một đối tượng đóng gói thông số kỹ thuật của một máy chủ proxy duy nhất.
Thuộc tính
-
người tổ chức
chuỗi
Tên máy chủ hoặc địa chỉ IP của máy chủ proxy. Tên máy chủ phải ở định dạng ASCII (định dạng Punycode). IDNA chưa được hỗ trợ.
-
cổng
number không bắt buộc
Cổng của máy chủ proxy. Mặc định là một cổng tuỳ thuộc vào lược đồ.
-
lược đồ
Lược đồ không bắt buộc
Lược đồ (giao thức) của chính máy chủ proxy. Giá trị mặc định là "http".
Scheme
Enum
"http"
"https"
"quic"
"socks4"
"socks5"
Thuộc tính
settings
Chế độ cài đặt proxy sẽ được sử dụng. Giá trị của chế độ cài đặt này là một đối tượng ProxyConfig.
Sự kiện
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
Thông báo về lỗi proxy.
Thông số
-
callback
hàm
Tham số
callbackcó dạng như sau:(details: object) => void
-
chi tiết
đối tượng
-
chi tiết
chuỗi
Thông tin chi tiết bổ sung về lỗi, chẳng hạn như lỗi thời gian chạy JavaScript.
-
error
chuỗi
Nội dung mô tả lỗi.
-
fatal
boolean
Nếu đúng, lỗi này là lỗi nghiêm trọng và giao dịch mạng đã bị huỷ. Nếu không, hệ thống sẽ sử dụng kết nối trực tiếp.
-
-