說明
使用 chrome.privacy API 控制 Chrome 中可能影響使用者隱私的功能。這個 API 仰賴 ChromeSetting 類型的 API 原型,來取得及設定 Chrome 的配置。
權限
privacy您必須在擴充功能的資訊清單中宣告「privacy」權限,才能使用 API。例如:
{
"name": "My extension",
...
"permissions": [
"privacy"
],
...
}
概念和用途
讀取 Chrome 設定的目前值很簡單。首先,您需要找出感興趣的屬性,然後對該物件呼叫 get(),以擷取其目前的值和擴充功能的控制層級。舉例來說,如要判斷 Chrome 的信用卡自動填入功能是否啟用,請輸入:
browser.privacy.services.autofillCreditCardEnabled.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() (事實上,如果擴充功能無法控制設定,建議您以視覺方式停用該功能,減少使用者混淆):
browser.privacy.services.autofillCreditCardEnabled.get({}, function(details) {
if (details.levelOfControl === 'controllable_by_this_extension') {
browser.privacy.services.autofillCreditCardEnabled.set({ value: true }, function() {
if (browser.runtime.lastError === undefined) {
console.log("Hooray, it worked!");
} else {
console.log("Sadness!", browser.runtime.lastError);
}
});
}
});
如要追蹤設定值的變更,請在設定的 onChange 事件中新增事件監聽器。這項功能可讓您在使用者安裝的擴充功能取得設定控制權,或企業政策覆寫控制權時,向使用者發出警告。如要監聽信用卡自動填入狀態的變更,例如,下列程式碼就足夠:
browser.privacy.services.autofillCreditCardEnabled.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,請從 chrome-extension-samples 存放區安裝隱私權 API 範例。
類型
AutofillBlockedType
自動填入資料的類別。
列舉
"contact_info"
"payments"
"identity_docs"
"travel"
"all"
IPHandlingPolicy
WebRTC 的 IP 處理政策。
列舉
"default"
"default_public_and_private_interfaces"
"default_public_interface_only"
"disable_non_proxied_udp"
屬性
network
影響 Chrome 處理網路連線的一般設定。
類型
物件
屬性
-
networkPredictionEnabled
types.ChromeSetting<boolean>
如果啟用這項功能,Chrome 會預先解析 DNS 項目、預先開啟與伺服器的 TCP 和 SSL 連線,以及預先載入網頁,藉此加快網路瀏覽速度。停用這項偏好設定後,網站擁有者就無法推測載入內容 (例如透過 Speculation Rules API 預先擷取或預先算繪)。不會影響網頁啟動的預先連線或 DNS 預先擷取。這項偏好設定的值為布林值,預設為
true。 -
webRTCIPHandlingPolicyChrome 48+ 瀏覽器。* 自 Chrome 148 起
允許使用者指定媒體效能/隱私權權衡,這會影響 WebRTC 流量的轉送方式,以及本機位址資訊的公開程度。這項偏好設定的值屬於 IPHandlingPolicy 類型,預設為
default。
services
啟用或停用功能的設定,這些功能需要 Google 和預設搜尋服務供應商提供的第三方網路服務。
類型
物件
屬性
-
alternateErrorPagesEnabled
types.ChromeSetting<boolean>
如果啟用這項政策,Chrome 會使用網路服務協助解決導覽錯誤。這項偏好設定的值為布林值,預設為
true。 -
autofillAddressEnabled
types.ChromeSetting<boolean>
Chrome 70 以上版本 瀏覽器。*自 Chrome 148 起如果啟用,Chrome 會自動填入地址和其他表單資料。這項偏好設定的值為布林值,預設為
true。 -
autofillCreditCardEnabled
types.ChromeSetting<boolean>
Chrome 70 以上版本 瀏覽器。*自 Chrome 148 起如果啟用這項政策,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。這項偏好設定的值為布林值,預設為
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 以上版本 Chrome 148 起為 browser.*如果停用,Attribution Reporting API 和 Private Aggregation API 就會停用。這項偏好設定的值為布林值類型,預設值為
true。擴充功能只能將值設為false,停用這些 API。如果嘗試將這些 API 設為true,系統會擲回錯誤。 -
doNotTrackEnabled
types.ChromeSetting<boolean>
Chrome 65 以上版本 瀏覽器。*自 Chrome 148 起如果啟用,Chrome 會在要求中傳送「Do Not Track」(
DNT: 1) 標頭。這項偏好設定的值為布林值類型,預設值為false。 -
fledgeEnabled
types.ChromeSetting<boolean>
Chrome 111 以上版本 Chrome 148 起為 browser.*如果停用,系統會停用 Fledge API。這項偏好設定的值為布林值類型,預設值為
true。擴充功能只能將值設為false,藉此停用這個 API。如果嘗試將這個 API 設為true,系統會擲回錯誤。 -
hyperlinkAuditingEnabled
types.ChromeSetting<boolean>
如果啟用,Chrome 會在網站要求時傳送稽核連線偵測 (
<a ping>)。這項偏好設定的值為布林值,預設值為true。 -
protectedContentEnabled
types.ChromeSetting<boolean>
僅適用於 Windows 和 ChromeOS:啟用後,Chrome 會向外掛程式提供專屬 ID,以便執行受保護的內容。這項偏好設定的值為布林值類型,預設值為
true。 -
referrersEnabled
types.ChromeSetting<boolean>
如果啟用,Chrome 會在傳送要求時一併傳送
referer標頭。是的,這個偏好設定的名稱與拼寫錯誤的標頭不符。不會,我們不會變更。這項偏好設定的值為布林值類型,預設值為true。 -
thirdPartyCookiesAllowed
types.ChromeSetting<boolean>
如果停用這項政策,Chrome 會禁止第三方網站設定 Cookie。這項偏好設定的值為布林值類型,預設值為
true。在無痕模式下,擴充功能可能無法啟用這個 API,因為系統會封鎖第三方 Cookie,且只能在網站層級允許使用。如果在無痕模式中嘗試將這個 API 設為 true,系統會擲回錯誤。注意:如果個別網站有有效的豁免權,或改用 Storage Access API,則當這個 API 傳回
false時,可能仍可存取第三方 Cookie。 -
topicsEnabled
types.ChromeSetting<boolean>
Chrome 111 以上版本 Chrome 148 起為 browser.*如果停用,系統會停用 Topics API。這項偏好設定的值為布林值類型,預設值為
true。擴充功能只能將值設為false,停用這個 API。如果嘗試將這個 API 設為true,系統會擲回錯誤。