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