คำอธิบาย
ใช้ chrome.proxy API เพื่อจัดการการตั้งค่าพร็อกซีของ Chrome API นี้อาศัยต้นแบบ ChromeSetting ของ API ประเภท เพื่อรับและตั้งค่าการกำหนดค่าพร็อกซี
สิทธิ์
proxyไฟล์ Manifest
คุณต้องประกาศสิทธิ์ "proxy" ใน ไฟล์ 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 ในเชิงแนวคิดแล้ว URL นี้คล้ายกับกรณีแรก แต่มีกรณีพิเศษเพื่อจัดการการกำหนดค่า Canonical ของค่าคงที่ IP เช่น การจับคู่ "[0:0:0::1]" จะเหมือนกับการจับคู่ "[::1]" เนื่องจากระบบจะดำเนินการกำหนดค่า Canonical ของ 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
ออบเจ็กต์ที่เก็บข้อมูลการกำหนดค่าพร็อกซีอัตโนมัติ ควรมีช่องที่ไม่ว่างเปล่าเพียงช่องเดียว
พร็อพเพอร์ตี้
-
data
สตริง ไม่บังคับ
สคริปต์ PAC
-
mandatory
บูลีน ไม่บังคับ
หากเป็นจริง สคริปต์ PAC ที่ไม่ถูกต้องจะป้องกันไม่ให้สแต็กเครือข่ายกลับไปใช้การเชื่อมต่อโดยตรง ค่าเริ่มต้นคือเท็จ
-
url
สตริง ไม่บังคับ
URL ของไฟล์ PAC ที่จะใช้
ProxyConfig
ออบเจ็กต์ที่ห่อหุ้มการกำหนดค่าพร็อกซีที่สมบูรณ์
พร็อพเพอร์ตี้
-
mode
'direct' = ไม่ใช้พร็อกซี 'auto_detect' = ตรวจหาการตั้งค่าพร็อกซีอัตโนมัติ 'pac_script' = ใช้สคริปต์ PAC ที่ระบุ 'fixed_servers' = ระบุพร็อกซีเซิร์ฟเวอร์ด้วยตนเอง 'system' = ใช้การตั้งค่าพร็อกซีของระบบ
-
pacScript
PacScript (ไม่บังคับ)
สคริปต์การกำหนดค่าพร็อกซีอัตโนมัติ (PAC) สำหรับการกำหนดค่านี้ ใช้สำหรับโหมด "pac_script"
-
rules
ProxyRules (ไม่บังคับ)
กฎพร็อกซีที่อธิบายการกำหนดค่านี้ ใช้สำหรับโหมด "fixed_servers"
ProxyRules
ออบเจ็กต์ที่ห่อหุ้มชุดกฎพร็อกซีสำหรับโปรโตคอลทั้งหมด ใช้ "singleProxy" หรือ (ชุดย่อยของ) "proxyForHttp", "proxyForHttps", "proxyForFtp" และ "fallbackProxy"
พร็อพเพอร์ตี้
-
bypassList
สตริง[] ไม่บังคับ
รายการเซิร์ฟเวอร์ที่จะเชื่อมต่อโดยไม่มีพร็อกซีเซิร์ฟเวอร์
-
fallbackProxy
ProxyServer (ไม่บังคับ)
พร็อกซีเซิร์ฟเวอร์ที่จะใช้สำหรับทุกอย่างอื่นหรือหากไม่ได้ระบุพร็อกซีเฉพาะสำหรับ...
-
proxyForFtp
ProxyServer (ไม่บังคับ)
พร็อกซีเซิร์ฟเวอร์ที่จะใช้สำหรับคำขอ FTP
-
proxyForHttp
ProxyServer (ไม่บังคับ)
พร็อกซีเซิร์ฟเวอร์ที่จะใช้สำหรับคำขอ HTTP
-
proxyForHttps
ProxyServer (ไม่บังคับ)
พร็อกซีเซิร์ฟเวอร์ที่จะใช้สำหรับคำขอ HTTPS
-
singleProxy
ProxyServer (ไม่บังคับ)
พร็อกซีเซิร์ฟเวอร์ที่จะใช้สำหรับคำขอต่อ URL ทั้งหมด (เช่น http, https และ ftp)
ProxyServer
ออบเจ็กต์ที่ห่อหุ้มข้อกำหนดของพร็อกซีเซิร์ฟเวอร์เดียว
พร็อพเพอร์ตี้
-
host
สตริง
ชื่อโฮสต์หรือที่อยู่ IP ของพร็อกซีเซิร์ฟเวอร์ ชื่อโฮสต์ต้องเป็น ASCII (ในรูปแบบ Punycode) ระบบยังไม่รองรับ IDNA
-
port
ตัวเลข ไม่บังคับ
พอร์ตของพร็อกซีเซิร์ฟเวอร์ ค่าเริ่มต้นคือพอร์ตที่ขึ้นอยู่กับสคีม
-
scheme
สคีม (ไม่บังคับ)
สคีม (โปรโตคอล) ของพร็อกซีเซิร์ฟเวอร์เอง ค่าเริ่มต้นคือ "http"
Scheme
ค่าแจกแจง
"http"
"https"
"quic"
"socks4"
"socks5"
พร็อพเพอร์ตี้
settings
การตั้งค่าพร็อกซีที่จะใช้ ค่าของการตั้งค่านี้คือออบเจ็กต์ ProxyConfig
ประเภท
กิจกรรม
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
แจ้งข้อผิดพลาดเกี่ยวกับพร็อกซี
พารามิเตอร์
-
callback
ฟังก์ชัน
พารามิเตอร์
callbackมีลักษณะดังนี้:(details: object) => void
-
details
ออบเจ็กต์
-
details
สตริง
รายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาด เช่น ข้อผิดพลาดรันไทม์ JavaScript
-
error
สตริง
คำอธิบายข้อผิดพลาด
-
fatal
บูลีน
หากเป็นจริง ข้อผิดพลาดร้ายแรงและระบบยกเลิกธุรกรรมเครือข่าย มิฉะนั้น ระบบจะใช้การเชื่อมต่อโดยตรงแทน
-
-