瀏覽器JavaScript? API:window.queryLocalFonts() 方法,用于查詢本地系統(tǒng)中可用的字體列表,返回所有本地可用字體,即電腦上所有安裝的所有字體。
用于前端編程改善用戶體驗使用,一般用作:
- 字體選擇:在一些web應用中,用戶可能需要選擇自己喜歡的字體來顯示文本。通過查詢本地字體列表,可以向用戶展示可用的字體選項,讓用戶自定義頁面的外觀。
- 字體匹配:如果你需要在瀏覽器中顯示特定字體的文本,你可以使用window.queryLocalFonts()來檢查用戶計算機上是否存在該字體。如果字體不存在,你可以提供替代方案,如使用默認字體或其他可用字體。
- 字體預加載:在某些情況下,你可能希望在頁面加載時預加載特定的字體文件,以便后續(xù)在頁面中使用。通過查詢本地字體列表,你可以確定是否需要加載特定字體文件。
然而,這種原本的便捷性也給用戶的隱私帶來了一定的威脅。由于每臺電腦所安裝軟件的差異性,會導致每臺電腦的字體列表存在差異,而通過瀏覽器 queryLocalFonts() 方法,可通過字體的差異來進行字體指紋識別,對客戶端進行指紋跟蹤。
驗證步驟:
F12打開瀏覽器控制臺,輸入如下代碼:
let pickedFonts = await self.queryLocalFonts();
for (const fontData of pickedFonts) {
console.log(fontData.fullName);
}
會彈出詢問“使用您計算機上的字體,以便您能夠創(chuàng)作高保真內容”

如果你不知道這是什么意思,隨手點了個“允許”,此時安裝在你電腦上的字體將會被全部列出,造成泄漏。如下圖:

如何防止本機字體指紋泄漏:
使用影子指紋瀏覽器進行安全瀏覽,防止網(wǎng)站進行本機字體識別,軟件默認會禁用所有敏感權限,按需開啟,防止指紋泄漏。
