คำอธิบาย
ใช้ chrome.privacy API เพื่อควบคุมการใช้งานฟีเจอร์ใน Chrome ที่อาจส่งผลต่อความเป็นส่วนตัวของผู้ใช้ API นี้อาศัยต้นแบบ ChromeSetting ของ API ประเภท ในการรับและตั้งค่าการกำหนดค่าของ Chrome
สิทธิ์
privacyไฟล์ Manifest
คุณต้องประกาศสิทธิ์ "privacy" ในไฟล์ 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-samples
ประเภท
IPHandlingPolicy
นโยบายการจัดการ IP ของ WebRTC
ค่าแจกแจง
"default"
"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.autofillCreditCardEnabled การตั้งค่านี้จะยังคงอยู่เพื่อความเข้ากันได้แบบย้อนหลังในรุ่นนี้ และจะนำออกในอนาคต
หากเปิดใช้ Chrome จะเสนอให้ป้อนข้อมูลในแบบฟอร์มโดยอัตโนมัติ ค่าของค่ากำหนดนี้เป็นบูลีน ซึ่งค่าเริ่มต้นคือ
true -
passwordSavingEnabled
types.ChromeSetting<boolean>
หากเปิดใช้ เครื่องมือจัดการรหัสผ่านจะถามว่าคุณต้องการบันทึกรหัสผ่านหรือไม่ ค่าของค่ากำหนดนี้เป็นบูลีน ซึ่งค่าเริ่มต้นคือ
true -
safeBrowsingEnabled
types.ChromeSetting<boolean>
หากเปิดใช้ Chrome จะพยายามอย่างเต็มที่เพื่อปกป้องคุณจากฟิชชิงและมัลแวร์ ค่าของค่ากำหนดนี้เป็นบูลีน ซึ่งค่าเริ่มต้นคือ
true -
safeBrowsingExtendedReportingEnabled
types.ChromeSetting<boolean>
หากเปิดใช้ Chrome จะส่งข้อมูลเพิ่มเติมไปยัง Google เมื่อ SafeBrowsing บล็อกหน้าเว็บ เช่น เนื้อหาของหน้าเว็บที่ถูกบล็อก ค่าของค่ากำหนดนี้เป็นบูลีน ซึ่งค่าเริ่มต้นคือ
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 จะส่งส่วนหัว 'Do Not Track' (
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ส่วนขยายจะเปิดใช้ API นี้ในโหมดไม่ระบุตัวตนไม่ได้ ซึ่งคุกกี้ของบุคคลที่สามจะถูกบล็อกและอนุญาตเฉพาะในระดับเว็บไซต์เท่านั้น หากคุณพยายามตั้งค่า API นี้เป็น "จริง" ในโหมดไม่ระบุตัวตน ระบบจะแสดงข้อผิดพลาดหมายเหตุ: เว็บไซต์แต่ละแห่งอาจยังเข้าถึงคุกกี้ของบุคคลที่สามได้เมื่อ API นี้แสดงผลเป็น
falseหากเว็บไซต์นั้นได้รับการยกเว้นที่ถูกต้องหรือใช้ Storage Access API แทน -
topicsEnabled
types.ChromeSetting<boolean>
Chrome 111 ขึ้นไปหากปิดใช้ Topics API จะถูกปิดใช้งาน ค่าของค่ากำหนดนี้เป็นประเภทบูลีน และค่าเริ่มต้นคือ
trueส่วนขยายจะปิดใช้ API นี้ได้โดยการตั้งค่าเป็นfalseเท่านั้น หากคุณพยายามตั้งค่า API นี้เป็นtrueระบบจะแสดงข้อผิดพลาด