chrome.proxy

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 cài đặt Chrome của loại API để nhận và đặt cấu hình proxy.

Quyền

proxy

Bạn phải khai báo "proxy" quyền sử dụng chế độ cài đặt proxy trong tệp kê khai tiện ích API. Ví dụ:

{
  "name": "My extension",
  ...
  "permissions": [
    "proxy"
  ],
  ...
}

Khái niệm và cách sử dụng

Chế độ cài đặt proxy được xác định trong đối tượng proxy.ProxyConfig. Tuỳ vào chế độ cài đặt proxy của Chrome, chế độ cài đặt 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 máy chủ proxy. Thuộc tính này có thể nhận các giá trị sau:

direct
Trong chế độ direct, tất cả các kết nối đều được tạo trực tiếp mà không cần bất kỳ proxy nào. Chế độ này cho phép không có thêm tham số nào trong đối tượng ProxyConfig.
auto_detect
Ở chế độ auto_detect, cấu hình proxy được xác định bằng tập lệnh PAC mà bạn có thể tải xuống tại http://wpad/wpad.dat. Chế độ này không cho phép thêm tham số nào trong đối tượng ProxyConfig.
pac_script
Ở chế độ pac_script, cấu hình proxy được xác định bởi tập lệnh PAC được truy xuất từ URL được chỉ định trong đối tượng proxy.PacScript hoặc lấy theo nghĩa đen từ phần tử data được chỉ định trong đối tượng proxy.PacScript. Ngoài ra, chế độ này không cho phép thêm tham số trong đối tượng ProxyConfig.
fixed_servers
Ở chế độ fixed_servers, cấu hình proxy được mã hoá trong đối tượng proxy.ProxyRules. cấu trúc được mô tả trong Quy tắc proxy. Ngoài ra, chế độ fixed_servers không cho phép các tham số trong đối tượng ProxyConfig.
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 các tham số khác trong đối tượng ProxyConfig. Lưu ý rằng chế độ system khác với không cài đặt cấu hình proxy. Trong trường hợp sau, Chrome chỉ quay lại cài đặt hệ thống khi 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, proxyForFtpfallbackProxy.

Trong trường hợp đầu tiên, lưu lượng truy cập HTTP, HTTPS và FTP được xử lý qua máy chủ proxy được chỉ định. Thông tin khác lưu lượng truy cập được gửi trực tiếp. Trong trường hợp sau, hành vi tinh tế hơn một chút: Nếu 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 xử lý qua proxy máy chủ đã chỉ định. Nếu không có máy chủ proxy như vậy được chỉ định hoặc lưu lượng truy cập sử dụng một giao thức khác với Giao thức HTTP, HTTPS hoặc FTP, thì fallbackProxy đều được sử 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 với 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 không scheme đã được chỉ định, kết nối proxy theo 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
http80
https443
socks41080
socks51080

Danh sách bỏ qua

bypassList có thể sẽ không hỗ trợ từng máy chủ riêng lẻ. 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. "." đứng đầu được hiểu là "*.".

Ví dụ: "foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99".

MẫuKhớp vớiKhô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]

So khớp các URL dưới dạng giá trị cố định địa chỉ IP. Về mặt lý thuyết thì trường hợp này tương tự như trường hợp đầu tiên, nhưng với các trường hợp đặc biệt để xử lý quá trình chuẩn hoá IP theo nghĩa đen. Ví dụ: khớp trên "[0:0:0::1]" giống như 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]:443

IP_LITERAL/PREFIX_LENGTH_IN_BITS

Khớp với bất kỳ URL nào chứa giá trị cố định IP (IP_LITERAL) trong giá trị cho trước dải ô. Dải IP (PREFIX_LENGTH_IN_BITS) được chỉ định bằng CIDR ký hiệu.

Khớp với bất kỳ URL nào chứa giá trị cố định của IP trong dải ô đã cho. Dải IP được chỉ định bằng CIDR . Ví dụ: "192.168.1.1/16", "fefe:13::abc/33"

<local>

Chuỗi ký tự <local> khớp với các tên máy chủ đơn giản. Tên máy chủ đơn giản là tên không chứa và không phải là giá trị IP bằng chữ. Ví dụ: examplelocalhost là các tên máy chủ đơn giản, trong khi example.com, example.[::1] thì không.

Ví dụ: "<local>"

Ví dụ

Đoạn mã sau đây sẽ đặt proxy SOCKS 5 cho các kết nối HTTP tới tất cả máy chủ trừ foobar.com và sử dụng kết nối trực tiếp cho tất cả các giao thức khác. Các cài đặt này áp dụng cho cửa sổ thông thường và cửa sổ ẩn danh, như cửa sổ ẩn danh kế thừa cài đặt từ cửa sổ thông thường. Xem thêm API Loại tài liệu.

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() {}
);

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ài đặt proxy hiệu quả hiện tại. Cài đặt proxy hiệu quả có thể là được xác định bởi một tiện ích khác hoặc bởi một chính sách. Xem tài liệu về API loại để biết thông tin chi tiết.

chrome.proxy.settings.get(
  {'incognito': false},
  function(config) {
    console.log(JSON.stringify(config));
  }
);

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ử sau sẽ chứa phần tử rules.proxyForHttp.port.

Loại

Mode

Chrome 54 trở lên

Enum

"direct"

"auto_detect"

"pac_script"

"Fix_servers"

"hệ thống"

PacScript

Đối tượng chứa thông tin tự động định cấu hình proxy. Không được để trống một trong các trường.

Thuộc tính

  • dữ liệu

    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, tập lệnh PAC không hợp lệ sẽ ngăn ngăn xếp mạng quay trở lại 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 sử dụng.

ProxyConfig

Đố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" = Cài đặt tự động phát hiện proxy "pac_script" = Sử dụng tập lệnh PAC được chỉ định "Fixed_servers" (máy chủ cố định) = Chỉ định máy chủ proxy theo cách thủ công "system" = Sử dụng 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. Dùng tên này cho "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 thuộc tính này cho "fixed_servers" .

ProxyRules

Đối tượng đóng gói bộ quy tắc proxy cho tất 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 máy chủ có thể 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 được sử dụng cho mọi thứ khác hoặc nếu có bất kỳ proxyFor cụ thể nào... chưa được chỉ định.

  • proxyForFtp

    ProxyServer không bắt buộc

    Máy chủ proxy được sử dụng cho các yêu cầu FTP.

  • proxyForHttp

    ProxyServer không bắt buộc

    Máy chủ proxy được sử dụng cho các yêu cầu HTTP.

  • proxyForHttps

    ProxyServer không bắt buộc

    Máy chủ proxy được sử dụng cho các yêu cầu HTTPS.

  • singleProxy

    ProxyServer không bắt buộc

    Máy chủ proxy được sử dụng cho tất cả các yêu cầu theo từng URL (tức là http, https và ftp).

ProxyServer

Đối tượng đóng gói thông số kỹ thuật của một máy chủ proxy.

Thuộc tính

  • người tổ chức

    string

    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

    số không bắt buộc

    Cổng của máy chủ proxy. Mặc định là một cổng phụ 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

Chrome 54 trở lên

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.

Tham số

  • số gọi lại

    hàm

    Tham số callback sẽ có dạng như sau:

    (details: object) => void

    • chi tiết

      đối tượng

      • chi tiết

        string

        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

        string

        Nội dung mô tả về lỗi.

      • fatal

        boolean

        Nếu đúng, lỗi nghiêm trọng và giao dịch mạng đã bị huỷ. Nếu không, kết nối trực tiếp sẽ được sử dụng.