คำอธิบาย
ใช้ chrome.proxy
API เพื่อจัดการการตั้งค่าพร็อกซีของ Chrome API นี้ใช้ต้นแบบ ChromeSetting ของประเภท API ในการรับและตั้งค่าพร็อกซี
สิทธิ์
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 โดยหลักการแล้ว กรณีนี้คล้ายกับกรณีแรก แต่มีกรณีพิเศษในการรับมือกับการกำหนดหน้า Canonical ตามตัวอักษรของ IP เช่น การจับคู่ใน "[0:0:0::1]" เหมือนกับการจับคู่ใน "[::1]" เพราะการกำหนดหน้า Canonical ของ 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
ค่าแจกแจง
"auto_detect"
"pac_script"
PacScript
ออบเจ็กต์ที่มีข้อมูลการกำหนดค่าพร็อกซีอัตโนมัติ ต้องระบุอย่างน้อย 1 ช่อง
พร็อพเพอร์ตี้
-
ข้อมูล
string ไม่บังคับ
สคริปต์ PAC
-
บังคับ
บูลีน ไม่บังคับ
หากเป็น "จริง" สคริปต์ PAC ที่ไม่ถูกต้องจะป้องกันไม่ให้สแต็กเครือข่ายกลับไปใช้การเชื่อมต่อโดยตรง ค่าเริ่มต้นคือ "เท็จ"
-
url
string ไม่บังคับ
URL ของไฟล์ PAC ที่จะใช้
ProxyConfig
ออบเจ็กต์ที่รวมการกำหนดค่าพร็อกซีที่สมบูรณ์
พร็อพเพอร์ตี้
-
โหมด
'direct' = ไม่ใช้พร็อกซี 'auto_detect' = ตรวจหาการตั้งค่าพร็อกซีอัตโนมัติ 'pac_script' = ใช้สคริปต์ PAC ที่ระบุ 'fixed_servers' = ระบุพร็อกซีเซิร์ฟเวอร์ด้วยตนเอง 'ระบบ' = ใช้การตั้งค่าพร็อกซีของระบบ
-
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
ออบเจ็กต์ที่รวมข้อกำหนดของพร็อกซีเซิร์ฟเวอร์รายการเดียว
พร็อพเพอร์ตี้
-
ผู้จัด
string
ชื่อโฮสต์หรือที่อยู่ IP ของพร็อกซีเซิร์ฟเวอร์ ชื่อโฮสต์ต้องอยู่ในรูปแบบ ASCII (ในรูปแบบ Ponycode) ระบบยังไม่รองรับ IDNA
-
พอร์ต
ตัวเลข ไม่บังคับ
พอร์ตของพร็อกซีเซิร์ฟเวอร์ ค่าเริ่มต้นจะเป็นพอร์ตที่ขึ้นอยู่กับรูปแบบ
-
สคีม
รูปแบบ ไม่บังคับ
รูปแบบ (โปรโตคอล) ของพร็อกซีเซิร์ฟเวอร์เอง ค่าเริ่มต้นคือ "http"
Scheme
ค่าแจกแจง
"http"
"https"
"quic"
"ถุงเท้า4"
"ถุงเท้า5"
พร็อพเพอร์ตี้
settings
การตั้งค่าพร็อกซีที่จะใช้ ค่าของการตั้งค่านี้คือออบเจ็กต์ ProxyConfig
ประเภท
กิจกรรม
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
แจ้งเตือนข้อผิดพลาดเกี่ยวกับพร็อกซี
พารามิเตอร์
-
Callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => void
-
รายละเอียด
ออบเจ็กต์
-
รายละเอียด
string
รายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาด เช่น ข้อผิดพลาดรันไทม์ของ JavaScript
-
error
string
คำอธิบายข้อผิดพลาด
-
fatal
boolean
หากเป็นจริง แสดงว่าเป็นข้อผิดพลาดร้ายแรงและล้มเลิกธุรกรรมในเครือข่ายไปแล้ว ไม่เช่นนั้นจะใช้การเชื่อมต่อโดยตรงแทน
-
-