chrome.proxy

refresh date: 2026-09-25 robots: noindex

คำอธิบาย

ใช้ chrome.proxy API เพื่อจัดการการตั้งค่าพร็อกซีของ Chrome API นี้อาศัยต้นแบบ ChromeSetting ของ API ประเภทในการรับและตั้งค่ากำหนดค่าพร็อกซี

สิทธิ์

proxy

ไฟล์ Manifest

คุณต้องประกาศสิทธิ์ "พร็อกซี" ในไฟล์ Manifest ของส่วนขยายเพื่อใช้การตั้งค่าพร็อกซี API เช่น

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

ออบเจ็กต์และพร็อพเพอร์ตี้

การตั้งค่าพร็อกซีจะกำหนดไว้ในออบเจ็กต์ proxy.ProxyConfig การตั้งค่าอาจมี proxy.ProxyRules หรือ proxy.PacScript ทั้งนี้ขึ้นอยู่กับการตั้งค่าพร็อกซีของ Chrome

โหมดพร็อกซี

แอตทริบิวต์ mode ของออบเจ็กต์ ProxyConfig จะกำหนดลักษณะการทำงานโดยรวมของ Chrome เกี่ยวกับการใช้พร็อกซี โดยอาจมีค่าดังต่อไปนี้

direct
ในdirectโหมดนี้ ระบบจะสร้างการเชื่อมต่อทั้งหมดโดยตรงโดยไม่มีการใช้พร็อกซี โหมดนี้ไม่อนุญาตให้มีพารามิเตอร์เพิ่มเติมในออบเจ็กต์ ProxyConfig
auto_detect
ในโหมด auto_detect การกำหนดค่าพร็อกซีจะกำหนดโดยสคริปต์ PAC ที่ดาวน์โหลดได้ ที่ http://wpad/wpad.dat โหมดนี้ไม่อนุญาตให้มีพารามิเตอร์เพิ่มเติมในออบเจ็กต์ ProxyConfig
pac_script
ในโหมด pac_script การกำหนดค่าพร็อกซีจะกำหนดโดยสคริปต์ PAC ที่ดึงมาจาก URL ที่ระบุในออบเจ็กต์ proxy.PacScript หรือนำมาจากองค์ประกอบ data โดยตรงที่ระบุในออบเจ็กต์ proxy.PacScript นอกจากนี้ โหมดนี้ยังไม่อนุญาตให้ใช้พารามิเตอร์อื่นๆ ในออบเจ็กต์ ProxyConfig
fixed_servers
ในโหมด fixed_servers การกำหนดค่าพร็อกซีจะได้รับการเข้ารหัสในออบเจ็กต์ proxy.ProxyRules โดยโครงสร้างของกฎพร็อกซีอธิบายไว้ในกฎพร็อกซี นอกจากนี้ โหมด fixed_servers ยังไม่อนุญาตพารามิเตอร์เพิ่มเติมในออบเจ็กต์ ProxyConfig
system
ในโหมด system การกำหนดค่าพร็อกซีจะมาจากระบบปฏิบัติการ โหมดนี้ไม่อนุญาตให้มีพารามิเตอร์เพิ่มเติมในออบเจ็กต์ ProxyConfig โปรดทราบว่าsystemโหมดแตกต่างจากการ ตั้งค่าพร็อกซีเป็นไม่มี ในกรณีหลัง Chrome จะกลับไปใช้การตั้งค่าระบบก็ต่อเมื่อ ไม่มีตัวเลือกบรรทัดคำสั่งใดๆ ที่ส่งผลต่อการกำหนดค่าพร็อกซี

กฎพร็อกซี

ออบเจ็กต์ proxy.ProxyRules สามารถมีแอตทริบิวต์ singleProxy หรือชุดย่อยของ proxyForHttp, proxyForHttps, proxyForFtp และ fallbackProxy

ในกรณีแรก ระบบจะส่งต่อการรับส่งข้อมูล HTTP, HTTPS และ FTP ผ่านพร็อกซีเซิร์ฟเวอร์ที่ระบุ ส่วนการเข้าชมอื่นๆ จะส่งโดยตรง ในกรณีหลัง ลักษณะการทำงานจะซับซ้อนกว่าเล็กน้อย กล่าวคือ หากมีการกำหนดค่าพร็อกซีเซิร์ฟเวอร์สำหรับโปรโตคอล HTTP, HTTPS หรือ FTP ระบบจะพร็อกซีการเข้าชมที่เกี่ยวข้องผ่านเซิร์ฟเวอร์ที่ระบุ หากไม่ได้ระบุพร็อกซีเซิร์ฟเวอร์ดังกล่าว หรือการรับส่งข้อมูลใช้โปรโตคอลอื่นที่ไม่ใช่ HTTP, HTTPS หรือ FTP ระบบจะใช้ fallbackProxy หากไม่ได้ระบุ fallbackProxy ระบบจะส่งการรับส่งข้อมูล โดยตรงโดยไม่มีพร็อกซีเซิร์ฟเวอร์

ออบเจ็กต์พร็อกซีเซิร์ฟเวอร์

กำหนดค่าพร็อกซีเซิร์ฟเวอร์ในออบเจ็กต์ proxy.ProxyServer การเชื่อมต่อกับพร็อกซีเซิร์ฟเวอร์ (กำหนดโดยแอตทริบิวต์ host) จะใช้โปรโตคอลที่กำหนดไว้ในแอตทริบิวต์ scheme หากไม่ได้ระบุ scheme การเชื่อมต่อพร็อกซีจะเป็น http โดยค่าเริ่มต้น

หากไม่ได้กำหนด port ไว้ในออบเจ็กต์ proxy.ProxyServer ระบบจะอนุมานพอร์ตจากสคีมา พอร์ตเริ่มต้นมีดังนี้

แบบแผนพอร์ต
http80
https443
socks41080
socks51080

รายการที่ข้าม

คุณยกเว้นเซิร์ฟเวอร์แต่ละเครื่องไม่ให้มีการพร็อกซีด้วย bypassList ได้ รายการนี้อาจมีรายการต่อไปนี้

[SCHEME://]HOST_PATTERN[:PORT]

จับคู่ชื่อโฮสต์ทั้งหมดที่ตรงกับรูปแบบ HOST_PATTERN ระบบจะตีความ "." ที่นำหน้าเป็น "*."

ตัวอย่าง: "foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99"

รูปแบบการจับคู่ไม่ตรงกัน
".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]

จับคู่ URL ที่เป็นสัญพจน์ที่อยู่ IP ในเชิงแนวคิดแล้ว กรณีนี้คล้ายกับกรณีแรก แต่มีกรณีพิเศษที่ต้องจัดการการกำหนด Canonical ของ IP Literal เช่น การจับคู่ "[0:0:0::1]" จะเหมือนกับการจับคู่ "[::1]" เนื่องจากระบบจะดำเนินการแปลง IPv6 เป็นรูปแบบมาตรฐานภายใน

ตัวอย่าง: 127.0.1, [0:0::1], [::1]:80, https://[::1]:443

IP_LITERAL/PREFIX_LENGTH_IN_BITS

จับคู่ URL ใดก็ได้ที่มีตัวอักษร IP (IP_LITERAL) ภายในช่วงที่กำหนด ช่วง IP (PREFIX_LENGTH_IN_BITS) จะระบุโดยใช้รูปแบบ CIDR

จับคู่ URL ใดก็ตามที่มีตัวอักษร IP ภายในช่วงที่กำหนด โดยจะระบุช่วง IP โดยใช้รูปแบบ CIDR ตัวอย่าง: "192.168.1.1/16", "fefe:13::abc/33"

<local>

สตริงตามตัวอักษร <local> จะตรงกับชื่อโฮสต์อย่างง่าย ชื่อโฮสต์แบบง่ายคือชื่อที่ไม่มีจุดและไม่ใช่ IP แบบตรง เช่น example และ localhost เป็นชื่อโฮสต์ที่เรียบง่าย ส่วน example.com, example. และ [::1] ไม่ใช่

ตัวอย่าง: "<local>"

ตัวอย่าง

โค้ดต่อไปนี้จะตั้งค่าพร็อกซี SOCKS 5 สำหรับการเชื่อมต่อ HTTP กับเซิร์ฟเวอร์ทั้งหมด ยกเว้น foobar.com และใช้ การเชื่อมต่อโดยตรงสำหรับโปรโตคอลอื่นๆ ทั้งหมด การตั้งค่าจะมีผลกับหน้าต่างปกติและหน้าต่างที่ไม่ระบุตัวตน เนื่องจาก หน้าต่างที่ไม่ระบุตัวตนจะรับค่าการตั้งค่าจากหน้าต่างปกติ โปรดดูเอกสารประกอบของ 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() {}
);

โค้ดต่อไปนี้จะตั้งค่าสคริปต์ PAC ที่กำหนดเอง

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

ข้อมูลโค้ดถัดไปจะค้นหาการตั้งค่าพร็อกซีที่มีผลในปัจจุบัน ส่วนขยายอื่นหรือนโยบายจะเป็นตัวกำหนดการตั้งค่าพร็อกซีที่มีผล ดูรายละเอียดได้ในเอกสารประกอบของ Types API

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

โปรดทราบว่าvalueออบเจ็กต์ที่ส่งไปยัง set() ไม่เหมือนกับvalueออบเจ็กต์ที่ส่งไปยัง ฟังก์ชันเรียกกลับของ get() ซึ่งจะมีองค์ประกอบ rules.proxyForHttp.port

ประเภท

Mode

Chrome 54 ขึ้นไป

ค่าแจกแจง

"โดยตรง"

"auto_detect"

"pac_script"

"fixed_servers"

"ระบบ"

PacScript

ออบเจ็กต์ที่มีข้อมูลการกำหนดค่าพร็อกซีอัตโนมัติ ต้องมีฟิลด์ใดฟิลด์หนึ่งที่ไม่ว่างเปล่า

พร็อพเพอร์ตี้

  • เพิ่มเติม

    สตริง ไม่บังคับ

    สคริปต์ PAC

  • บังคับ

    บูลีน ไม่บังคับ

    หากเป็นจริง สคริปต์ PAC ที่ไม่ถูกต้องจะป้องกันไม่ให้สแต็กเครือข่ายกลับไปใช้การเชื่อมต่อโดยตรง ค่าเริ่มต้นคือ false

  • URL

    สตริง ไม่บังคับ

    URL ของไฟล์ PAC ที่จะใช้

ProxyConfig

ออบเจ็กต์ที่แคปซูลการกำหนดค่าพร็อกซีที่สมบูรณ์

พร็อพเพอร์ตี้

  • โหมด

    "direct" = ไม่ใช้พร็อกซี "auto_detect" = ตรวจหาการตั้งค่าพร็อกซีอัตโนมัติ "pac_script" = ใช้สคริปต์ PAC ที่ระบุ "fixed_servers" = ระบุพร็อกซีเซิร์ฟเวอร์ด้วยตนเอง "system" = ใช้การตั้งค่าพร็อกซีของระบบ

  • pacScript

    PacScript ไม่บังคับ

    สคริปต์การกำหนดค่าพร็อกซีอัตโนมัติ (PAC) สำหรับการกำหนดค่านี้ ใช้สำหรับโหมด "pac_script"

  • กฎ

    ProxyRules ไม่บังคับ

    กฎพร็อกซีที่อธิบายการกำหนดค่านี้ ใช้สำหรับโหมด "fixed_servers"

ProxyRules

ออบเจ็กต์ที่แคปซูลชุดกฎพร็อกซีสำหรับโปรโตคอลทั้งหมด ใช้ "singleProxy" หรือ (ชุดย่อยของ) "proxyForHttp", "proxyForHttps", "proxyForFtp" และ "fallbackProxy"

พร็อพเพอร์ตี้

  • bypassList

    string[] ไม่บังคับ

    รายการเซิร์ฟเวอร์ที่จะเชื่อมต่อโดยไม่มีพร็อกซีเซิร์ฟเวอร์

  • fallbackProxy

    ProxyServer ไม่บังคับ

    พร็อกซีเซิร์ฟเวอร์ที่จะใช้สำหรับทุกอย่างอื่นๆ หรือหากไม่ได้ระบุพร็อกซีเฉพาะสำหรับ...

  • proxyForFtp

    ProxyServer ไม่บังคับ

    พร็อกซีเซิร์ฟเวอร์ที่จะใช้สำหรับคำขอ FTP

  • proxyForHttp

    ProxyServer ไม่บังคับ

    พร็อกซีเซิร์ฟเวอร์ที่จะใช้สำหรับคำขอ HTTP

  • proxyForHttps

    ProxyServer ไม่บังคับ

    พร็อกซีเซิร์ฟเวอร์ที่จะใช้สำหรับคำขอ HTTPS

  • singleProxy

    ProxyServer ไม่บังคับ

    พร็อกซีเซิร์ฟเวอร์ที่จะใช้สำหรับคำขอต่อ URL ทั้งหมด (เช่น http, https และ ftp)

ProxyServer

ออบเจ็กต์ที่แคปซูลข้อกำหนดของพร็อกซีเซิร์ฟเวอร์เดียว

พร็อพเพอร์ตี้

  • ผู้จัด

    สตริง

    ชื่อโฮสต์หรือที่อยู่ IP ของพร็อกซีเซิร์ฟเวอร์ ชื่อโฮสต์ต้องอยู่ในรูปแบบ ASCII (ในรูปแบบ Punycode) ระบบยังไม่รองรับ IDNA

  • พอร์ต

    หมายเลข ไม่บังคับ

    พอร์ตของพร็อกซีเซิร์ฟเวอร์ ค่าเริ่มต้นคือพอร์ตที่ขึ้นอยู่กับรูปแบบ

  • สคีม

    รูปแบบ ไม่บังคับ

    รูปแบบ (โปรโตคอล) ของเซิร์ฟเวอร์พร็อกซีเอง ค่าเริ่มต้นคือ "http"

Scheme

Chrome 54 ขึ้นไป

ค่าแจกแจง

"http"

"https"

"quic"

"socks4"

"socks5"

พร็อพเพอร์ตี้

settings

การตั้งค่าพร็อกซีที่จะใช้ ค่าของการตั้งค่านี้คือออบเจ็กต์ ProxyConfig

ประเภท

กิจกรรม

onProxyError

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

แจ้งข้อผิดพลาดของพร็อกซี

พารามิเตอร์

  • callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

    (details: object) => void

    • รายละเอียด

      ออบเจ็กต์

      • รายละเอียด

        สตริง

        รายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาด เช่น ข้อผิดพลาดรันไทม์ของ JavaScript

      • ข้อผิดพลาด

        สตริง

        คำอธิบายข้อผิดพลาด

      • fatal

        บูลีน

        หากเป็นจริง แสดงว่าเกิดข้อผิดพลาดร้ายแรงและระบบยกเลิกธุรกรรมในเครือข่าย มิเช่นนั้น ระบบจะใช้การเชื่อมต่อโดยตรงแทน