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 ระบบจะอนุมานพอร์ตจากสคีมา
พอร์ตเริ่มต้นมีดังนี้
| แบบแผน | พอร์ต |
|---|---|
| http | 80 |
| https | 443 |
| socks4 | 1080 |
| socks5 | 1080 |
รายการที่ข้าม
คุณยกเว้นเซิร์ฟเวอร์แต่ละเครื่องไม่ให้มีการพร็อกซีด้วย 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]:443IP_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
ค่าแจกแจง
"โดยตรง"
"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
ค่าแจกแจง
"http"
"https"
"quic"
"socks4"
"socks5"
พร็อพเพอร์ตี้
settings
การตั้งค่าพร็อกซีที่จะใช้ ค่าของการตั้งค่านี้คือออบเจ็กต์ ProxyConfig
ประเภท
กิจกรรม
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
แจ้งข้อผิดพลาดของพร็อกซี
พารามิเตอร์
-
callback
ฟังก์ชัน
พารามิเตอร์
callbackมีลักษณะดังนี้(details: object) => void
-
รายละเอียด
ออบเจ็กต์
-
รายละเอียด
สตริง
รายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาด เช่น ข้อผิดพลาดรันไทม์ของ JavaScript
-
ข้อผิดพลาด
สตริง
คำอธิบายข้อผิดพลาด
-
fatal
บูลีน
หากเป็นจริง แสดงว่าเกิดข้อผิดพลาดร้ายแรงและระบบยกเลิกธุรกรรมในเครือข่าย มิเช่นนั้น ระบบจะใช้การเชื่อมต่อโดยตรงแทน
-
-