คำอธิบาย
ใช้ chrome.privacy
API เพื่อควบคุมการใช้งานฟีเจอร์ใน Chrome ที่อาจส่งผลต่อความเป็นส่วนตัวของผู้ใช้ API นี้ใช้ต้นแบบ ChromeSetting ของประเภท API เพื่อรับและตั้งค่าของ Chrome
สิทธิ์
privacy
ไฟล์ Manifest
คุณต้องประกาศสิทธิ์ "ความเป็นส่วนตัว" ในไฟล์ Manifest ของส่วนขยายเพื่อใช้ API เช่น
{
"name": "My extension",
...
"permissions": [
"privacy"
],
...
}
การใช้งาน
การอ่านค่าปัจจุบันของการตั้งค่า Chrome นั้นตรงไปตรงมา ก่อนอื่นคุณต้องหาพร็อพเพอร์ตี้ที่สนใจ จากนั้นจึงเรียกใช้ get()
บนออบเจ็กต์ดังกล่าวเพื่อดึงค่าปัจจุบันและระดับการควบคุมของส่วนขยาย ตัวอย่างเช่น หากต้องการตรวจสอบว่าฟีเจอร์ป้อนข้อความอัตโนมัติของ Chrome เปิดอยู่หรือไม่ ให้เขียนว่า
chrome.privacy.services.autofillEnabled.get({}, function(details) {
if (details.value) {
console.log('Autofill is on!');
} else {
console.log('Autofill is off!');
}
});
การเปลี่ยนค่าของการตั้งค่าจะซับซ้อนขึ้นเล็กน้อย เพียงเพราะคุณต้องยืนยันว่าส่วนขยายของคุณควบคุมการตั้งค่าได้ก่อน ผู้ใช้จะไม่เห็นการเปลี่ยนแปลงในการตั้งค่าหากส่วนขยายของคุณสลับการตั้งค่าที่นโยบายองค์กรล็อกไว้เป็นค่าที่เจาะจง (levelOfControl
จะตั้งค่าเป็น "not_controllable") หรือหากส่วนขยายอื่นควบคุมค่าอยู่ (levelOfControl
จะตั้งค่าเป็น "controlled_by_other_extensions") การเรียก set()
จะสำเร็จ แต่การตั้งค่าจะถูกลบล้างการตั้งค่าโดยทันที เพราะอาจทำให้เกิดความสับสน เราขอแนะนำให้เตือนผู้ใช้เมื่อการตั้งค่าที่เลือกไม่สามารถใช้งานได้จริง
ซึ่งหมายความว่าคุณควรใช้เมธอด get()
เพื่อกำหนดระดับการเข้าถึงของคุณ จากนั้นเรียกใช้ set()
เฉพาะเมื่อส่วนขยายสามารถควบคุมการตั้งค่าได้ (อันที่จริงแล้ว หากส่วนขยายของคุณไม่สามารถควบคุมการตั้งค่าได้ เราขอแนะนำให้คุณปิดใช้ฟังก์ชันการทำงานด้วยสายตาเพื่อลดความสับสนของผู้ใช้) ดังนี้
chrome.privacy.services.autofillEnabled.get({}, function(details) {
if (details.levelOfControl === 'controllable_by_this_extension') {
chrome.privacy.services.autofillEnabled.set({ value: true }, function() {
if (chrome.runtime.lastError === undefined) {
console.log("Hooray, it worked!");
} else {
console.log("Sadness!", chrome.runtime.lastError);
}
});
}
});
หากสนใจเปลี่ยนแปลงค่าของการตั้งค่า ให้เพิ่ม Listener ลงในเหตุการณ์ onChange
ของการตั้งค่านั้นๆ การใช้งานแบบนี้จะช่วยให้คุณสามารถเตือนผู้ใช้ได้หากส่วนขยายที่ติดตั้งล่าสุดเข้ามาควบคุมการตั้งค่า หรือหากนโยบายระดับองค์กรลบล้างการควบคุมของคุณ หากต้องการฟังการเปลี่ยนแปลงสถานะของการป้อนข้อความอัตโนมัติ การใช้โค้ดต่อไปนี้ก็ถือว่าเพียงพอแล้ว
chrome.privacy.services.autofillEnabled.onChange.addListener(
function (details) {
// The new value is stored in `details.value`, the new level of control
// in `details.levelOfControl`, and `details.incognitoSpecific` will be
// `true` if the value is specific to Incognito mode.
}
);
ตัวอย่าง
หากต้องการลองใช้ API นี้ ให้ติดตั้งตัวอย่าง Privacy API จากที่เก็บ chrome-extension-sample
ประเภท
IPHandlingPolicy
นโยบายการจัดการ IP ของ WebRTC
ค่าแจกแจง
"default_public_and_private_interfaces"
"default_public_interface_only"
"disable_non_proxied_udp"
พร็อพเพอร์ตี้
network
การตั้งค่าที่มีผลต่อการจัดการการเชื่อมต่อเครือข่ายโดยทั่วไปของ Chrome
ประเภท
ออบเจ็กต์
พร็อพเพอร์ตี้
-
networkPredictionEnabled
types.ChromeSetting<boolean>
หากเปิดใช้ Chrome จะพยายามเพิ่มความเร็วในการท่องเว็บด้วยการแก้ไขรายการ DNS และเปิดการเชื่อมต่อ TCP และ SSL ไปยังเซิร์ฟเวอร์ล่วงหน้า ค่ากำหนดนี้มีผลเฉพาะกับการดำเนินการโดยบริการการคาดคะเนภายในของ Chrome เท่านั้น ปัญหานี้ไม่มีผลกับการตั้งค่าเริ่มต้นของหน้าเว็บหรือการเชื่อมต่อล่วงหน้า ค่าของค่ากำหนดนี้เป็นบูลีน ซึ่งมีค่าเริ่มต้นเป็น
true
-
webRTCIPHandlingPolicyChrome 48 ขึ้นไป
อนุญาตให้ผู้ใช้ระบุข้อดีและข้อเสียของประสิทธิภาพสื่อ/ความเป็นส่วนตัวซึ่งส่งผลกระทบต่อวิธีกำหนดเส้นทางการรับส่งข้อมูล WebRTC และข้อมูลที่อยู่ท้องถิ่นที่จะเปิดเผยข้อมูล ค่าของค่ากำหนดนี้เป็นประเภท IPHandlingPolicy ซึ่งตั้งค่าเริ่มต้นเป็น
default
services
การตั้งค่าที่จะเปิดหรือปิดใช้ฟีเจอร์ที่ต้องใช้บริการเครือข่ายของบุคคลที่สามซึ่ง Google และผู้ให้บริการค้นหาเริ่มต้นของคุณมีให้
ประเภท
ออบเจ็กต์
พร็อพเพอร์ตี้
-
alternateErrorPagesEnabled
types.ChromeSetting<boolean>
หากเปิดใช้ Chrome จะใช้บริการเว็บเพื่อช่วยแก้ไขข้อผิดพลาดในการนำทาง ค่าของค่ากำหนดนี้เป็นบูลีน ซึ่งมีค่าเริ่มต้นเป็น
true
-
autofillAddressEnabled
types.ChromeSetting<boolean>
Chrome เวอร์ชัน 70 ขึ้นไปหากเปิดใช้ Chrome จะเสนอให้ป้อนที่อยู่และข้อมูลในแบบฟอร์มอื่นๆ โดยอัตโนมัติ ค่าของค่ากำหนดนี้เป็นบูลีน ซึ่งมีค่าเริ่มต้นเป็น
true
-
autofillCreditCardEnabled
types.ChromeSetting<boolean>
Chrome เวอร์ชัน 70 ขึ้นไปหากเปิดใช้ Chrome จะเสนอให้กรอกแบบฟอร์มบัตรเครดิตโดยอัตโนมัติ ค่าของค่ากำหนดนี้เป็นบูลีน ซึ่งมีค่าเริ่มต้นเป็น
true
-
autofillEnabled
types.ChromeSetting<boolean>
เลิกใช้งานตั้งแต่ Chrome 70 เป็นต้นไปโปรดใช้ privacy.services.autofillAddressEnabled และ privacy.services.autofill CreditCardEnabled ข้อมูลนี้ยังคงอยู่เพื่อความเข้ากันได้แบบย้อนหลังในรุ่นนี้และจะถูกนำออกในอนาคต
หากเปิดใช้ Chrome จะเสนอให้กรอกแบบฟอร์มโดยอัตโนมัติ ค่าของค่ากำหนดนี้เป็นบูลีน ซึ่งมีค่าเริ่มต้นเป็น
true
-
passwordSavingEnabled
types.ChromeSetting<boolean>
หากเปิดใช้ เครื่องมือจัดการรหัสผ่านจะถามว่าคุณต้องการบันทึกรหัสผ่านหรือไม่ ค่าของค่ากำหนดนี้เป็นบูลีน ซึ่งมีค่าเริ่มต้นเป็น
true
-
safeBrowsingEnabled
types.ChromeSetting<boolean>
หากเปิดใช้แล้ว Chrome จะดำเนินการอย่างเต็มที่เพื่อปกป้องคุณจากฟิชชิงและมัลแวร์ ค่าของค่ากำหนดนี้เป็นบูลีน ซึ่งมีค่าเริ่มต้นเป็น
true
-
safeBrowsingExtendedReportingEnabled
types.ChromeSetting<boolean>
หากเปิดใช้ Chrome จะส่งข้อมูลเพิ่มเติมไปยัง Google เมื่อ Safe Browsing บล็อกหน้าเว็บ เช่น เนื้อหาของหน้าเว็บที่ถูกบล็อก ค่าของค่ากำหนดนี้เป็นบูลีน ซึ่งมีค่าเริ่มต้นเป็น
false
-
searchSuggestEnabled
types.ChromeSetting<boolean>
หากเปิดใช้งาน Chrome จะส่งข้อความที่คุณพิมพ์ลงในแถบอเนกประสงค์ไปยังเครื่องมือค้นหาเริ่มต้น ซึ่งจะคาดคะเนเว็บไซต์และการค้นหาที่มีแนวโน้มว่าจะตรงกับสิ่งที่คุณพิมพ์มากที่สุด ค่าของค่ากำหนดนี้เป็นบูลีน ซึ่งมีค่าเริ่มต้นเป็น
true
-
spellingServiceEnabled
types.ChromeSetting<boolean>
หากเปิดใช้ Chrome จะใช้บริการเว็บเพื่อช่วยแก้ไขข้อผิดพลาดในการสะกดคำ ค่าของค่ากำหนดนี้เป็นบูลีน ซึ่งมีค่าเริ่มต้นเป็น
false
-
translationServiceEnabled
types.ChromeSetting<boolean>
หากเปิดใช้ Chrome จะเสนอการแปลหน้าเว็บที่ไม่ได้อยู่ในภาษาที่คุณอ่านได้ ค่าของค่ากำหนดนี้เป็นบูลีน ซึ่งมีค่าเริ่มต้นเป็น
true
websites
การตั้งค่าที่กําหนดข้อมูลที่ Chrome มีให้ในเว็บไซต์
ประเภท
ออบเจ็กต์
พร็อพเพอร์ตี้
-
adMeasurementEnabled
types.ChromeSetting<boolean>
Chrome 111 ขึ้นไปหากปิดใช้ ระบบจะปิดใช้งาน Attribution Reporting API และ Private Aggregation API ค่าของค่ากำหนดนี้เป็นประเภทบูลีน และค่าเริ่มต้นคือ
true
ส่วนขยายจะปิดใช้ API เหล่านี้ได้ด้วยการตั้งค่าเป็นfalse
เท่านั้น หากคุณลองตั้งค่า API เหล่านี้เป็นtrue
ระบบจะแสดงข้อผิดพลาด -
doNotTrackEnabled
types.ChromeSetting<boolean>
Chrome 65 ขึ้นไปหากเปิดใช้ Chrome จะส่งส่วนหัว "ไม่ติดตาม" (
DNT: 1
) พร้อมคำขอของคุณ ค่าของค่ากำหนดนี้เป็นประเภทบูลีน และค่าเริ่มต้นคือfalse
-
fledgeEnabled
types.ChromeSetting<boolean>
Chrome 111 ขึ้นไปหากปิดใช้ ระบบจะปิดใช้งาน Fledge API ค่าของค่ากำหนดนี้เป็นประเภทบูลีน และค่าเริ่มต้นคือ
true
ส่วนขยายจะปิดใช้ API นี้ได้โดยตั้งค่าเป็นfalse
เท่านั้น หากคุณลองตั้งค่า API นี้เป็นtrue
ระบบจะแสดงข้อผิดพลาด -
hyperlinkAuditingEnabled
types.ChromeSetting<boolean>
หากเปิดใช้ Chrome จะส่งคำสั่ง ping การตรวจสอบเมื่อเว็บไซต์ (
<a ping>
) ขอ ค่าของค่ากำหนดนี้เป็นประเภทบูลีน และค่าเริ่มต้นคือtrue
-
protectedContentEnabled
types.ChromeSetting<boolean>
ใช้ได้ใน Windows และ ChromeOS เท่านั้น: หากเปิดใช้ Chrome จะกำหนดรหัสที่ไม่ซ้ำกันให้กับปลั๊กอินเพื่อเรียกใช้เนื้อหาที่มีการคุ้มครอง ค่าของค่ากำหนดนี้เป็นประเภทบูลีน และค่าเริ่มต้นคือ
true
-
referrersEnabled
types.ChromeSetting<boolean>
หากเปิดใช้ Chrome จะส่งส่วนหัว
referer
พร้อมคำขอ ใช่ ชื่อของค่ากำหนดนี้ไม่ตรงกับส่วนหัวที่สะกดผิด ไม่ เราจะไม่เปลี่ยนแปลงข้อมูลนี้ ค่าของค่ากำหนดนี้เป็นประเภทบูลีน และค่าเริ่มต้นคือtrue
-
types.ChromeSetting<boolean>
Chrome 121 ขึ้นไปหากปิดใช้ จะปิดใช้งานชุดเว็บไซต์ที่เกี่ยวข้อง ค่าของค่ากำหนดนี้เป็นประเภทบูลีน และค่าเริ่มต้นคือ
true
ส่วนขยายจะปิดใช้ API นี้ได้โดยตั้งค่าเป็นfalse
เท่านั้น หากคุณลองตั้งค่า API นี้เป็นtrue
ระบบจะแสดงข้อผิดพลาด -
thirdPartyCookiesAllowed
types.ChromeSetting<boolean>
หากปิดใช้ Chrome จะบล็อกเว็บไซต์ของบุคคลที่สามไม่ให้ตั้งค่าคุกกี้ ค่าของค่ากำหนดนี้เป็นประเภทบูลีน และค่าเริ่มต้นคือ
true
-
topicsEnabled
types.ChromeSetting<boolean>
Chrome 111 ขึ้นไปหากปิดใช้ Topics API จะถูกปิดใช้งาน ค่าของค่ากำหนดนี้เป็นประเภทบูลีน และค่าเริ่มต้นคือ
true
ส่วนขยายจะปิดใช้ API นี้ได้โดยตั้งค่าเป็นfalse
เท่านั้น หากคุณลองตั้งค่า API นี้เป็นtrue
ระบบจะแสดงข้อผิดพลาด