chrome.proxy

Deskripsi

Gunakan chrome.proxy API untuk mengelola setelan proxy Chrome. API ini bergantung pada prototipe ChromeSetting dari jenis API untuk mendapatkan dan menyetel konfigurasi proxy.

Izin

proxy

Anda harus mendeklarasikan izin "proxy" dalam manifes ekstensi untuk menggunakan API setelan proxy. Contoh:

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

Konsep dan penggunaan

Setelan proxy ditentukan dalam objek proxy.ProxyConfig. Bergantung pada setelan proxy Chrome, setelan dapat berisi proxy.ProxyRules atau proxy.PacScript.

Mode proxy

Atribut mode objek ProxyConfig menentukan perilaku Chrome secara keseluruhan terkait penggunaan proxy. Parameter ini dapat berisi nilai berikut:

direct
Dalam mode direct, semua koneksi dibuat langsung, tanpa melibatkan proxy apa pun. Mode ini tidak mengizinkan parameter lebih lanjut dalam objek ProxyConfig.
auto_detect
Dalam mode auto_detect, konfigurasi proxy ditentukan oleh skrip PAC yang dapat didownload di http://wpad/wpad.dat. Mode ini tidak mengizinkan parameter lebih lanjut dalam objek ProxyConfig.
pac_script
Dalam mode pac_script, konfigurasi proxy ditentukan oleh skrip PAC yang diambil dari URL yang ditentukan dalam objek proxy.PacScript atau diambil secara harfiah dari elemen data yang ditentukan dalam objek proxy.PacScript. Selain itu, mode ini tidak mengizinkan parameter lebih lanjut dalam objek ProxyConfig.
fixed_servers
Dalam mode fixed_servers, konfigurasi proxy dikodifikasi dalam objek proxy.ProxyRules. Strukturnya dijelaskan dalam Aturan proxy. Selain itu, mode fixed_servers tidak memungkinkan parameter lebih lanjut dalam objek ProxyConfig.
system
Dalam mode system, konfigurasi proxy diambil dari sistem operasi. Mode ini tidak mengizinkan parameter lebih lanjut dalam objek ProxyConfig. Perhatikan bahwa mode system berbeda dengan menyetel konfigurasi tanpa proxy. Pada kasus terakhir, Chrome akan kembali ke setelan sistem hanya jika tidak ada opsi command line yang memengaruhi konfigurasi proxy.

Aturan proxy

Objek proxy.ProxyRules dapat berisi atribut singleProxy atau subset dari proxyForHttp, proxyForHttps, proxyForFtp, dan fallbackProxy.

Pada kasus pertama, lalu lintas HTTP, HTTPS, dan FTP di-proxy-kan melalui server proxy yang telah ditentukan. Lalu lintas lain dikirim secara langsung. Namun, perilakunya akan sedikit lebih mirip: Jika server proxy dikonfigurasi untuk protokol HTTP, HTTPS, atau FTP, traffic masing-masing akan diberi proxy melalui server yang ditentukan. Jika server proxy tersebut tidak ditentukan atau traffic menggunakan protokol yang berbeda dengan HTTP, HTTPS, atau FTP, fallbackProxy akan digunakan. Jika fallbackProxy tidak ditentukan, traffic akan dikirim langsung tanpa server proxy.

Objek server proxy

Server proxy dikonfigurasi dalam objek proxy.ProxyServer. Koneksi ke server proxy (ditentukan oleh atribut host) menggunakan protokol yang ditentukan dalam atribut scheme. Jika tidak ada scheme yang ditentukan, koneksi proxy akan ditetapkan secara default ke http.

Jika tidak ada port yang ditentukan dalam objek proxy.ProxyServer, port akan berasal dari skema. Port defaultnya adalah:

SkemaPort
http80
https443
socks41080
socks51080

Daftar pengabaian

Server individual mungkin dikecualikan agar tidak di-proxy-kan dengan bypassList. Daftar ini dapat berisi entri berikut:

[SCHEME://]HOST_PATTERN[:PORT]

Cocokkan semua nama host yang sesuai dengan pola HOST_PATTERN. "." awal ditafsirkan sebagai "*.".

Contoh: "foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99".

PolaKecocokanTidak cocok
".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]

Mencocokkan URL yang merupakan literal alamat IP. Secara konseptual mirip dengan kasus pertama, tetapi dengan kasus khusus untuk menangani kanonikalisasi literal IP. Misalnya, pencocokan pada "[0:0:0::1]" sama dengan pencocokan pada "[::1]" karena kanonikalisasi IPv6 dilakukan secara internal.

Contoh: 127.0.1, [0:0::1], [::1]:80, https://[::1]:443

IP_LITERAL/PREFIX_LENGTH_IN_BITS

Mencocokkan URL apa pun yang berisi literal IP (IP_LITERAL) dalam rentang yang ditentukan. Rentang IP (PREFIX_LENGTH_IN_BITS) ditentukan menggunakan notasi CIDR.

Mencocokkan URL apa pun yang berisi literal IP dalam rentang yang diberikan. Rentang IP ditentukan menggunakan notasi CIDR. Contoh: "192.168.1.1/16", "fefe:13::abc/33"

<local>

String literal <local> cocok dengan nama host sederhana. Nama {i>host<i} sederhana adalah nama {i>host<i} yang tidak berisi titik dan bukan literal IP. Misalnya, example dan localhost adalah nama host sederhana, sedangkan example.com, example., dan [::1] bukan nama host.

Contoh: "<local>"

Contoh

Kode berikut menetapkan proxy SOCKS 5 untuk koneksi HTTP ke semua server, kecuali foobar.com, dan menggunakan koneksi langsung untuk semua protokol lainnya. Setelan ini berlaku untuk jendela reguler dan samaran, karena jendela samaran mewarisi setelan dari jendela biasa. Lihat juga dokumentasi 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() {}
);

Kode berikut menetapkan skrip PAC kustom.

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

Cuplikan berikutnya menanyakan setelan proxy yang efektif saat ini. Setelan proxy yang efektif dapat ditentukan oleh ekstensi lain atau oleh kebijakan. Lihat dokumentasi Types API untuk mengetahui detailnya.

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

Perhatikan bahwa objek value yang diteruskan ke set() tidak identik dengan objek value yang diteruskan ke fungsi callback get(). Yang kedua akan berisi elemen rules.proxyForHttp.port.

Jenis

Mode

Chrome 54+

Enum

"auto_detect"

"pac_script"

"fixed_servers"

PacScript

Objek yang menyimpan informasi konfigurasi otomatis proxy. Tepat salah satu kolom tidak boleh kosong.

Properti

  • data

    string opsional

    Skrip PAC.

  • wajib

    boolean opsional

    Jika true (benar), skrip PAC yang tidak valid akan mencegah stack jaringan kembali ke koneksi langsung. Nilai defaultnya adalah false (salah).

  • url

    string opsional

    URL file PAC yang akan digunakan.

ProxyConfig

Objek yang merangkum konfigurasi proxy lengkap.

Properti

  • mode

    'direct' = Jangan pernah menggunakan proxy 'auto_detect' = Deteksi otomatis setelan proxy 'pac_script' = Menggunakan skrip PAC yang ditentukan 'fixed_servers' = Menentukan server proxy secara manual 'system' = Menggunakan setelan proxy sistem

  • pacScript

    PacScript opsional

    Skrip konfigurasi otomatis proxy (PAC) untuk konfigurasi ini. Gunakan ini untuk mode 'pac_script'.

  • rules

    ProxyRules opsional

    Aturan proxy yang menjelaskan konfigurasi ini. Gunakan ini untuk mode 'fixed_servers'.

ProxyRules

Objek yang mengenkapsulasi kumpulan aturan proxy untuk semua protokol. Gunakan 'singleProxy' atau (subset dari) 'proxyForHttp', 'proxyForHttps', 'proxyForFtp', dan 'fallbackProxy'.

Properti

  • bypassList

    string[] opsional

    Daftar server yang dapat dihubungkan tanpa server proxy.

  • fallbackProxy

    ProxyServer opsional

    Server proxy yang akan digunakan untuk hal lainnya atau jika salah satu proxyFor... tertentu tidak ditentukan.

  • proxyForFtp

    ProxyServer opsional

    Server proxy yang akan digunakan untuk permintaan FTP.

  • proxyForHttp

    ProxyServer opsional

    Server proxy yang akan digunakan untuk permintaan HTTP.

  • proxyForHttps

    ProxyServer opsional

    Server proxy yang akan digunakan untuk permintaan HTTPS.

  • singleProxy

    ProxyServer opsional

    Server proxy yang akan digunakan untuk semua permintaan per URL (yaitu http, https, dan ftp).

ProxyServer

Objek yang merangkum spesifikasi server proxy tunggal.

Properti

  • host

    string

    Nama host atau alamat IP server proxy. Nama host harus dalam format ASCII (dalam format Punycode). IDNA belum didukung.

  • port

    nomor opsional

    Port server proxy. Default-nya adalah port yang bergantung pada skema.

  • skema

    Skema opsional

    Skema (protokol) server proxy itu sendiri. Default-nya adalah 'http'.

Scheme

Chrome 54+

Enum

"http"

"https"

"quic"

"kaus kaki4"

"kaus kaki5"

Properti

settings

Setelan proxy yang akan digunakan. Nilai setelan ini adalah objek ProxyConfig.

Peristiwa

onProxyError

chrome.proxy.onProxyError.addListener(
  callback: function,
)

Memberi tahu tentang error proxy.

Parameter

  • callback

    fungsi

    Parameter callback terlihat seperti:

    (details: object)=>void

    • detail

      objek

      • detail

        string

        Detail tambahan tentang error seperti error runtime JavaScript.

      • error

        string

        Deskripsi error.

      • fatal

        boolean

        Jika true (benar), error tersebut bersifat fatal dan transaksi jaringan dibatalkan. Jika tidak, koneksi langsung akan digunakan.