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 ตามตัวอักษร เช่น การจับคู่ "[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 ที่ส่งไปยังฟังก์ชัน Callback ของ get() โดยรายการหลังจะมีองค์ประกอบ rules.proxyForHttp.port

ประเภท

Mode

Chrome 54 ขึ้นไป

ค่าแจกแจง

"direct"

"auto_detect"

"pac_script"

"fixed_servers"

"system"

PacScript

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

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

  • เพิ่มเติม

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

    สคริปต์ PAC

  • จำเป็น

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

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

  • 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 ไม่บังคับ

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

  • proxyForFtp

    ProxyServer ไม่บังคับ

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

  • proxyForHttp

    ProxyServer ไม่บังคับ

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

  • proxyForHttps

    ProxyServer ไม่บังคับ

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

  • singleProxy

    ProxyServer ไม่บังคับ

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

ProxyServer

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

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

  • ผู้จัด

    สตริง

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

  • พอร์ต

    number ไม่บังคับ

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

  • สคีม

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

    รูปแบบ (โปรโตคอล) ของพร็อกซีเซิร์ฟเวอร์เอง ค่าเริ่มต้นคือ "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

        บูลีน

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