Overview

簡介

注意:本文件仍在開發階段。預計不久後將有改善。

Google 安全瀏覽第 5 版是 Google 安全瀏覽第 4 版的演變。第 5 版的主要變更是資料更新間隔和 IP 隱私權。此外,API 介面經過改良,可提升彈性、效率並減少畫面膨脹。此外,Google 安全瀏覽第 5 版還可協助您輕鬆從第 4 版遷移資料。

目前 Google 同時提供第 4 版和第 5 版,兩者皆為正式版應用程式。使用 v4 或 v5。我們尚未宣布停用第 4 版,至少會提前一年發出通知。本頁將說明第 5 版,以及從第 4 版到第 5 版的遷移指南,完整第 4 版說明文件仍可供參考

資料更新間隔

Google 安全瀏覽第 5 版在第 4 版中 (特別是第 4 版更新 API) 有一項大幅改善之處,那就是資料更新間隔和涵蓋率。由於保護措施高度取決於用戶端維護的本機資料庫,因此本機資料庫更新的延遲和大小是遺漏防護的主要因素。在 v4 中,一般用戶端需要 20 至 50 分鐘才能取得最新版本的威脅清單。不幸的是,網路釣魚攻擊迅速擴散:截至 2021 年,有 60% 的網站提供攻擊活動的時間不到 10 分鐘。我們的分析顯示,約有 25-30% 的網路釣魚防護功能是因為這類資料過時所致。此外,某些裝置沒有能力管理完整的 Google 安全瀏覽威脅清單,而這份清單會逐漸增加。

在第 5 版中,我們導入了一種稱為即時防護的作業模式,這可以避開上述資料過時問題。在 v4 中,用戶端會下載並維護本機資料庫,針對本機下載的威脅清單執行檢查,如果有部分前置字串相符,就會執行要求下載完整雜湊。在第 5 版中,雖然用戶端應繼續下載並維護一份威脅清單的本機資料庫,但客戶現在也應該能夠下載可能的良性網站清單(稱為「全域快取」),同時對這個全域快取執行本機檢查以及本機威脅清單檢查,最後當「全域快取」有部分前置字串比對或「全域快取」不相符時,執行可下載完整雜湊的要求。(如要進一步瞭解用戶端所需的本機處理程序,請參閱下方提供的程序)。這代表從「預設為允許」變更為「預設檢查」的差異,這麼做可改善網路威脅更快傳播後的保護能力。換句話說,這個通訊協定的設計宗旨是提供近乎即時的防護:我們希望客戶能受益於較新的 Google 安全瀏覽資料。

IP 隱私權

Google 安全瀏覽功能 (第 4 版或第 5 版) 在服務要求期間不會處理與使用者身分相關的任何資料。系統會忽略 Cookie (如有傳送)。Google 知道要求的來源 IP 位址,但 Google 只會基於基本網路需求 (例如傳送回應) 和反 DoS 使用 IP 位址。

目前在第 5 版中,我們推出一種隨附 API,稱為「安全瀏覽」明顯的 HTTP Gateway API。這會使用明顯的 HTTP 來隱藏使用者的 IP 位址,不讓 Google 存取。方法是透過非冷卻的第三方處理已加密的使用者要求,然後將該版本轉送至 Google。因此第三方只能存取指定 IP 位址,而 Google 只能存取要求的內容。第三方執行明確的 HTTP 轉發服務 (例如 Fastly 執行這項服務),而 Google 則是執行明確的 HTTP 閘道。這是選用的隨播廣告 API。與 Google 安全瀏覽功能搭配使用時,系統不會再將使用者的 IP 位址傳送給 Google。

適當使用方式

許可用途

Safe Browsing API 僅供非商業用途使用 (亦即「不得用於銷售或產生收益」)。如需商業用途的解決方案,請參閱 Web Risk

定價

所有 Google Safe Browsing API 均為免付費。

配額

開發人員啟用 Safe Browsing API 時,系統會分配預設用量配額。您可以在 Google Developer Console 中查看目前的配置和用量。如果您預期使用的配額會超過目前分配的配額,可以透過 Developer Console 的「配額」介面要求額外配額。我們會審查這些要求,並且在申請提高配額時需要聯絡人聯絡,以確保我們提供的服務供應情形可滿足所有使用者的需求。

適當的網址

Google 安全瀏覽功能可用來處理瀏覽器網址列中顯示的網址,而不是用於檢查子資源 (例如 HTML 檔案參照的 JavaScript 或圖片,或由 JavaScript 啟動的 WebSocket 網址)。這類子資源網址不應對 Google 安全瀏覽功能進行檢查。

如果造訪網址會產生重新導向 (例如 HTTP 301),則適合根據 Google 安全瀏覽功能檢查重新導向網址。用戶端網址操控 (例如 History.pushState)「不會」讓新網址檢查 Google 安全瀏覽功能。

使用者警告

如果您使用 Google 安全瀏覽服務來警告使用者某些網頁含有風險,請遵守下列規範。

這些規範明確指出該網頁並非完全已知的不安全網路資源,導致您和 Google 不免受到誤解,而警告也只是體現了潛在的風險。

  • 在使用者看到的警告中,您不得讓使用者相信有爭議的網頁是不安全的網頁資源。如果提及遭到發現的網頁或可能對使用者造成的潛在風險,則必須使用「可疑、可能、可能或有」等字詞,協助我們提供這則警告。
  • 您的警告必須讓使用者瞭解 Google 對各種威脅的定義,以便瞭解更多資訊。建議使用的連結:
  • 如果安全瀏覽服務判定網頁具有風險,您就會在這些網頁中看到警告,並附上「Google 提供的 Advisorys」這一行,並連結至安全瀏覽顧問。如果您的產品還根據其他來源顯示警告,亦不得在警告中附上 Google 歸因 (來自非 Google 資料)。
  • 您必須在產品說明文件中提供一則通知,讓使用者瞭解 Google 安全瀏覽功能提供的防護效果不甚理想。因此必須讓他們知道,偽陽性 (安全網站遭標記為有風險的安全網站) 和偽陰性 (未標記有風險的網站) 的機會也會出現誤判。我們建議使用下列語言:

    Google 致力於提供最正確且最新的不安全網頁資源資訊。不過,Google 無法確保資訊完整且正確無誤:無法識別某些有風險的網站,而系統也會誤認某些安全網站。

作業模式

Google 安全瀏覽第 5 版可讓用戶端選擇三種操作模式。

即時模式

當用戶端選擇在即時模式下使用 Google 安全瀏覽 v5 時,用戶端會在本機資料庫中進行維護:(i) 可能性傾向網站的全域快取,格式為主機尾碼/路徑前置字元網址運算式的 SHA256 雜湊;(ii) 一組威脅清單,格式為主機尾碼/路徑網址運算式的 SHA256 雜湊前置字元。大致而言,只要用戶端想要檢查特定網址,就會使用全域快取執行本機檢查。如果檢查通過,系統就會執行本機威脅清單檢查。否則,用戶端會繼續進行即時雜湊檢查 (詳情請見下方)。

除了本機資料庫之外,用戶端也會維護本機快取。這類本機快取不需要在永久儲存空間中,且可因應記憶體壓力時清除。

以下提供程序的詳細規格。

本機清單模式

當用戶端選擇在此模式下使用 Google 安全瀏覽第 5 版時,用戶端的行為會與第 4 版更新 API 類似,唯一差別在於使用改良版 API 介面 (第 5 版)。用戶端會保存在本機資料庫中,一組採用 SHA256 雜湊前置字串 (由主機字尾/路徑前置字元網址運算式) 的威脅清單。只要客戶想要檢查特定 URL,便會使用本機威脅清單執行檢查。如果比對結果相符,用戶端就會連線至伺服器,繼續進行檢查。

與上述做法相同,用戶端也會保留不需要永久儲存空間的本機快取。

No-Storage 即時模式

用戶端選擇在無儲存的即時模式下使用 Google 安全瀏覽第 5 版時,用戶端不需要維護任何本機資料庫。每當用戶端想要檢查特定網址時,用戶端一律會連線至伺服器,以執行檢查。這個模式與 v4 Lookup API 可能會實作的用戶端類似。

檢查網址

本節詳細說明用戶端檢查網址的方式。

網址標準化

在檢查任何網址之前,用戶端應要對該網址執行一些標準化作業。

開始時,我們假設用戶端已剖析網址,並根據 RFC 2396 將其設為有效。如果網址使用國際化網域名稱 (IDN),用戶端應將網址轉換為 ASCII Punycode 表示法。網址必須包含路徑元件,也就是在網域後至少要有一個斜線 (http://google.com/,而非 http://google.com)。

首先,請移除網址中的 Tab 鍵 (0x09)、CR (0x0d) 和 LF (0x0a) 字元。請勿移除這些字元的逸出序列 (例如 %0a)。

第二,如果網址結尾是片段,請移除該片段。例如,將 http://google.com/#frag 縮短為 http://google.com/

第三,對網址重複進行百分比取消逸出,直到網址沒有其他百分比逸出。(這可能會導致網址無效)。

如何將主機名稱標準化:

從網址擷取主機名稱,然後:

  1. 請移除所有開頭和結尾的點。
  2. 將連續點替換成單一點。
  3. 如果主機名稱可剖析為 IPv4 位址,請將主機名稱正規化為 4 個以點分隔的小數值。用戶端應處理任何合法 IP 位址編碼,包括八進位、十六進位和少於四個元件。
  4. 如果主機名稱可剖析為加上括號的 IPv6 位址,請移除元件中不必要的前置零,然後使用雙冒號語法收合零組元件,將主機名稱正規化。例如,[2001:0db8:0000::1] 應轉換為 [2001:db8::1]。如果主機名稱是下列兩種特殊 IPv6 位址類型之一,請將主機名稱轉換為 IPv4:
    • IPv4 對應的 IPv6 位址,例如 [::ffff:1.2.3.4],應轉換為 1.2.3.4
    • 使用已知前置字串 64:ff9b::/96 的 NAT64 位址,例如 [64:ff9b::1.2.3.4],應轉換為 1.2.3.4
  5. 請使用小寫整個字串。

如何將路徑標準化:

  1. /./ 替換為 /,然後移除 /../ 及上述路徑元件,即可解析路徑中的 /..//./ 序列。
  2. 將連續斜線替換為單一斜線字元。

請勿將這些路徑標準化套用至查詢參數。

在網址中,使用 <= ASCII 32、>= 127、#% 的所有字元進行百分比逸出。逸出應使用大寫十六進位字元。

主機後置字串路徑/前置字串運算式

網址標準化後,下一步就是建立後置字元/前置字元運算式。每個後置字串/前置字元運算式皆由主機後置字串 (或完整主機) 和路徑前置字串 (或完整路徑) 組成。

用戶端最多會產生 30 個不同的主機後置字串和路徑前置字串組合。這些組合只會使用網址的主機和路徑元件。系統會捨棄配置、使用者名稱、密碼和通訊埠。如果網址包含查詢參數,則至少有一個組合會包含完整路徑和查詢參數。

針對主機,用戶端最多會嘗試五個不同的字串。這些因素包括:

  • 如果主機名稱不是 IPv4 或 IPv6 常值,開頭必須是 eTLD+1 網域並新增接續的元件,最多由四個主機名稱構成。判斷 eTLD+1 時應依據公開尾碼清單。舉例來說,a.b.example.com 會產生 example.com 的 eTLD+1 網域,以及含有一個額外主機元件 b.example.com 的主機。
  • 網址中的確切主機名稱。在上一個範例中,系統會檢查 a.b.example.com

路徑時,用戶端最多會嘗試六種不同的字串。這些因素包括:

  • 網址的確切路徑 (包含查詢參數)。
  • 不含查詢參數的網址確切路徑。
  • 由根 (/) 和連續附加路徑元件 (包括結尾的斜線) 所組成的四個路徑。

以下舉例說明檢查行為:

針對網址 http://a.b.com/1/2.html?param=1,用戶端會嘗試使用以下可能的字串:

a.b.com/1/2.html?param=1
a.b.com/1/2.html
a.b.com/
a.b.com/1/
b.com/1/2.html?param=1
b.com/1/2.html
b.com/
b.com/1/

針對網址 http://a.b.c.d.e.f.com/1.html,用戶端會嘗試使用以下可能的字串:

a.b.c.d.e.f.com/1.html
a.b.c.d.e.f.com/
c.d.e.f.com/1.html
c.d.e.f.com/
d.e.f.com/1.html
d.e.f.com/
e.f.com/1.html
e.f.com/
f.com/1.html
f.com/

(注意:請略過 b.c.d.e.f.com,因為我們只會使用最後五個主機名稱元件以及完整的主機名稱。)

針對網址 http://1.2.3.4/1/,用戶端會嘗試使用以下可能的字串:

1.2.3.4/1/
1.2.3.4/

針對網址 http://example.co.uk/1,用戶端會嘗試使用以下可能的字串:

example.co.uk/1
example.co.uk/

雜湊

Google 安全瀏覽功能僅使用 SHA256 做為雜湊函式。這個雜湊函式應該套用至上述運算式。

視不同情況而定,完整的 32 位元組雜湊會截斷至 4 個位元組、8 個位元組或 16 個位元組:

  • 目前在使用 hashes.search 方法時,要求中的雜湊必須截斷成剛好 4 個位元組。如果在這個要求中傳送額外位元組,使用者隱私將會受到影響。

  • 使用 hashList.get 方法hashLists.batchGet 方法下載本機資料庫的清單時,伺服器傳送的雜湊長度會同時影響清單的性質和用戶端的雜湊長度偏好設定 (會透過 desired_hash_length 參數進行通訊)。

即時網址檢查程序

用戶端選擇即時作業模式時,便會使用這項程序。

本程序會使用單一網址 u,並傳回 SAFEUNSAFEUNSURE。如果傳回 SAFE,Google 安全瀏覽功能認定該網址安全無虞。如果傳回 UNSAFE,Google 安全瀏覽功能認定該網址有安全疑慮,應採取適當行動,例如向使用者顯示警告訊息、將收到的郵件移至垃圾郵件資料夾,或要求使用者另行確認後再繼續操作。如果傳回 UNSURE,應接著使用下列本機檢查程序。

  1. 允許 expressions 是網址 u 產生的後置字串/前置字元運算式清單。
  2. expressionHashes 設為清單,其中元素是 expressions 中每個運算式的 SHA256 雜湊。
  3. 針對 expressionHashes 中的每個 hash
    1. 如果全域快取中找到 hash,則傳回 UNSURE
  4. 請將 expressionHashPrefixes 設為清單,其中元素是 expressionHashes 中每個雜湊的前 4 個位元組。
  5. 針對 expressionHashPrefixes 中的每個 expressionHashPrefix
    1. 在本機快取中查詢 expressionHashPrefix
    2. 如果找到快取項目:
      1. 判斷目前的時間是否大於到期時間。
      2. 大於:
        1. 將找到的快取項目從本機快取中移除。
        2. 繼續執行迴圈。
      3. 如果不是大於以下大小:
        1. expressionHashPrefixes 移除這個特定的 expressionHashPrefix
        2. 檢查 expressionHashes 中是否在快取項目中找到對應的完整雜湊。
        3. 如果找到,則傳回 UNSAFE
        4. 如果找不到,請繼續迴圈。
    3. 如果找不到快取項目,請繼續執行迴圈。
  6. 使用 RPC SearchHash 或 REST 方法 hashes.search,將 expressionHashPrefixes 傳送至 Google 安全瀏覽 v5 伺服器。如果發生錯誤 (包括網路錯誤、HTTP 錯誤等),請傳回 UNSURE。否則,請回應 SB 伺服器傳回的 response,該清單會列出完整的雜湊清單,以及可識別威脅性質 (社交工程、惡意軟體等) 的輔助資訊,以及快取到期時間 expiration
  7. 針對 response 中的每個 fullHash
    1. 使用 expirationfullHash 插入本機快取。
  8. 針對 response 中的每個 fullHash
    1. 允許 isFoundexpressionHashes 中尋找 fullHash 的結果。
    2. 如果 isFound 為 False,請繼續執行迴圈。
    3. 如果 isFound 為 True,則傳回 UNSAFE
  9. 回程日期:SAFE

LocalThreat 清單網址檢查程序

當用戶端選擇執行本機清單的作業模式時,便會使用這項程序。當上述的 RealTimeCheck 程序傳回 UNSURE 值時,也會使用這個值。

本程序會使用單一網址 u,並傳回 SAFEUNSAFE

  1. 允許 expressions 是網址 u 產生的後置字串/前置字元運算式清單。
  2. expressionHashes 設為清單,其中元素是 expressions 中每個運算式的 SHA256 雜湊。
  3. 請將 expressionHashPrefixes 設為清單,其中元素是 expressionHashes 中每個雜湊的前 4 個位元組。
  4. 針對 expressionHashPrefixes 中的每個 expressionHashPrefix
    1. 在本機快取中查詢 expressionHashPrefix
    2. 如果找到快取項目:
      1. 判斷目前的時間是否大於到期時間。
      2. 大於:
        1. 將找到的快取項目從本機快取中移除。
        2. 繼續執行迴圈。
      3. 如果不是大於以下大小:
        1. expressionHashPrefixes 移除這個特定的 expressionHashPrefix
        2. 檢查 expressionHashes 中是否在快取項目中找到對應的完整雜湊。
        3. 如果找到,則傳回 UNSAFE
        4. 如果找不到,請繼續迴圈。
    3. 如果找不到快取項目,請繼續執行迴圈。
  5. 針對 expressionHashPrefixes 中的每個 expressionHashPrefix
    1. 查詢本機威脅清單資料庫中的 expressionHashPrefix
    2. 如果在本機威脅清單資料庫中找不到 expressionHashPrefix,請將其從 expressionHashPrefixes 中移除。
  6. 使用 RPC SearchHash 或 REST 方法 hashes.search,將 expressionHashPrefixes 傳送至 Google 安全瀏覽 v5 伺服器。如果發生錯誤 (包括網路錯誤、HTTP 錯誤等),請傳回 SAFE。否則,請回應 SB 伺服器傳回的 response,該清單會列出完整的雜湊清單,以及可識別威脅性質 (社交工程、惡意軟體等) 的輔助資訊,以及快取到期時間 expiration
  7. 針對 response 中的每個 fullHash
    1. 使用 expirationfullHash 插入本機快取。
  8. 針對 response 中的每個 fullHash
    1. 允許 isFoundexpressionHashes 中尋找 fullHash 的結果。
    2. 如果 isFound 為 False,請繼續執行迴圈。
    3. 如果 isFound 為 True,則傳回 UNSAFE
  9. 回程日期:SAFE

不使用本機資料庫的即時網址檢查程序

當用戶端選擇免儲存的即時作業模式時,系統就會使用這項程序。

本程序會使用單一網址 u,並傳回 SAFEUNSAFE

  1. 允許 expressions 是網址 u 產生的後置字串/前置字元運算式清單。
  2. expressionHashes 設為清單,其中元素是 expressions 中每個運算式的 SHA256 雜湊。
  3. 請將 expressionHashPrefixes 設為清單,其中元素是 expressionHashes 中每個雜湊的前 4 個位元組。
  4. 針對 expressionHashPrefixes 中的每個 expressionHashPrefix
    1. 在本機快取中查詢 expressionHashPrefix
    2. 如果找到快取項目:
      1. 判斷目前的時間是否大於到期時間。
      2. 大於:
        1. 將找到的快取項目從本機快取中移除。
        2. 繼續執行迴圈。
      3. 如果不是大於以下大小:
        1. expressionHashPrefixes 移除這個特定的 expressionHashPrefix
        2. 檢查 expressionHashes 中是否在快取項目中找到對應的完整雜湊。
        3. 如果找到,則傳回 UNSAFE
        4. 如果找不到,請繼續迴圈。
    3. 如果找不到快取項目,請繼續執行迴圈。
  5. 使用 RPC SearchHash 或 REST 方法 hashes.search,將 expressionHashPrefixes 傳送至 Google 安全瀏覽 v5 伺服器。如果發生錯誤 (包括網路錯誤、HTTP 錯誤等),請傳回 SAFE。否則,請回應 SB 伺服器傳回的 response,該清單會列出完整的雜湊清單,以及可識別威脅性質 (社交工程、惡意軟體等) 的輔助資訊,以及快取到期時間 expiration
  6. 針對 response 中的每個 fullHash
    1. 使用 expirationfullHash 插入本機快取。
  7. 針對 response 中的每個 fullHash
    1. 允許 isFoundexpressionHashes 中尋找 fullHash 的結果。
    2. 如果 isFound 為 False,請繼續執行迴圈。
    3. 如果 isFound 為 True,則傳回 UNSAFE
  8. 回程日期:SAFE

本機資料庫維護

「Google 安全瀏覽」第 5 版預期用戶端會保留本機資料庫,但用戶端選擇「無儲存空間即時模式」時除外。用戶端取決於這個本機資料庫的格式和儲存空間。從概念來看,您可以將這個本機資料庫的內容視為包含各種清單的資料夾,且這些檔案的內容為 SHA256 雜湊或雜湊前置字元。

資料庫更新

用戶端會定期呼叫 hashList.get 方法hashLists.batchGet 方法,更新資料庫。一般用戶端會想一次更新多份名單,因此建議使用 hashLists.batchGet 方法

我們會依不同名稱來識別清單。名稱是由幾個字元組成的簡短 ASCII 字串。

與 V4 不同的是,在 v5 清單中,清單是以威脅類型、平台類型、威脅項目類型組合識別出,而在 v5 清單中,只需透過名稱識別。當多份 v5 清單可能共用相同威脅類型時,這種做法可提供彈性。第 5 版移除了平台類型和威脅項目類型。

選擇清單名稱後,就永遠不會重新命名。此外,清單出現後永遠不會移除。如果清單已過時,清單會變為空白,但將繼續存在。因此,建議您在 Google 安全瀏覽用戶端程式碼中以硬式編碼的方式加入這些名稱。

hashList.get 方法hashLists.batchGet 方法都支援漸進式更新。使用漸進式更新功能可以節省頻寬並提高效能。漸進式更新作業方式是在用戶端與最新版本的清單之間傳送差異。(如果用戶端新部署且沒有任何版本,則可使用完整更新)。漸進式更新包含移除索引和新增項目。用戶端會先從本機資料庫移除指定索引的項目,然後再套用新增項目。

最後,為防止損毀,用戶端應根據伺服器提供的總和檢查碼檢查儲存的資料。只要總和檢查碼不相符,用戶端就應該執行完整更新。

解碼清單內容

所有清單都會以特殊編碼傳送,以縮減大小。這項編碼作業會辨識 Google 安全瀏覽清單在概念上是包含一組雜湊或雜湊前置字串,而這些雜湊值在統計上都無法與隨機整數區分。如果我們將這些整數排序並取用相近的差異,這類相鄰的差異一般會像是「小」。Golomb-Rice 編碼則利用這種較小尺寸。

Google 安全瀏覽第 5 版有四種不同的類型,用於處理 4 位元組資料、8 位元組資料、16 位元組資料和 32 位元組資料。以下列舉一個範例,說明三個連續的 4 個位元組整數經過編碼後。讓我們以 k 表示的 Rice 參數為 3。編碼的商的部分只是相鄰的差值,由 k 位元向右移動。由於指定整數是連續的,因此相鄰的差異為 1;相差 3 位元後,商的除數部分會是 0。最低顯著的 k 位元是 001。零商數會編碼為單一 0 位元。餘數是 1,編碼為 100。再次重複,形成位元串流 01000100。產生的位元行將以小端序編碼為 00100010。因此對應下列資料:

rice_parameter: 3
entries_count: 2
encoded_data: "\x22"

按照上述為 32 位元整數解碼步驟後,結果可以直接使用,包括移除索引或加法。與第 4 版不同的是,此版本之後不需要執行位元組替換。

可用清單

以下是 v5alpha1 版的推薦使用清單:

名單名稱 對應 v4 ThreatType 列舉 說明
gc 沒有任何通知 這是全域快取清單。這種特殊清單只會在「即時」作業模式下使用。
se SOCIAL_ENGINEERING 這份清單包含 SOCIAL_ENGINEERING 威脅類型的威脅。
mw MALWARE 這份清單包含桌面平台的「惡意軟體」威脅類型威脅。
uws UNWANTED_SOFTWARE 此清單包含針對桌面平台的 UNWANTED_SOFTWARE 威脅類型威脅。
uwsa UNWANTED_SOFTWARE 這份清單包含 Android 平台的 UNWANTED_SOFTWARE 威脅類型威脅。
pha POTENTIALLY_HARMFUL_APPLICATION 這份清單列出 Android 平台中 POTENTIALLY_HARMFUL_APPLICATION 威脅類型面臨的威脅。

其他名單於日後開放使用,屆時將可展開上表。

更新頻率

用戶端應檢查伺服器 minimum_wait_duration 欄位傳回的值,然後使用該值排定資料庫的下次更新作業。這個值可能為零,此時用戶端應立即執行另一項更新。

要求範例

本節提供幾個範例,讓您瞭解如何直接透過 HTTP API 存取 Google 安全瀏覽功能。我們通常會建議您使用產生的語言繫結,因為這個語言繫結會自動處理編碼和解碼作業。請參閱該繫結的說明文件。

以下是使用 hashes.search 方法的 HTTP 要求範例:

GET https://safebrowsing.googleapis.com/v5/hashes:search?key=INSERT_YOUR_API_KEY_HERE&hashPrefixes=WwuJdQ

回應主體是通訊協定緩衝區格式的酬載,您可以接著解碼。

以下是使用 hashLists.batchGet 方法的 HTTP 要求範例:

GET https://safebrowsing.googleapis.com/v5alpha1/hashLists:batchGet?key=INSERT_YOUR_API_KEY_HERE&names=se&names=mw

回應主體,同樣是通訊協定緩衝區格式的酬載,您可以接著解碼。

遷移指南

如果您目前使用的是 v4 Update API,可以提供從 v4 到 v5 順暢的遷移路徑,無須重設或清除本機資料庫。本節將說明相關做法。

正在轉換清單更新

在第 4 版中,其中一項會使用 threatListUpdates.fetch 方法下載清單。在第 5 版中,其中一個會改用 hashLists.batchGet 方法

在請求中必須進行下列變更:

  1. 完全移除 v4 ClientInfo 物件。只要使用已知的使用者代理程式標頭,而不要透過專用欄位提供用戶端身分識別資訊即可。雖然這個標頭中並未規定提供用戶端身分識別格式,但我們建議您加入原始用戶端 ID 和用戶端版本,並以空格字元或斜線分隔。
  2. 針對每個 v4 ListUpdateRequest 物件
    • 在上表中尋找對應的 v5 清單名稱,然後在第 5 版要求中提供該名稱。
    • 移除不需要的欄位,例如 threat_entry_typeplatform_type
    • 第 4 版中的 state 欄位與第 5 版 versions 欄位直接相容。使用 v4 的 state 欄位傳送到伺服器的相同位元組字串,只要使用 versions 欄位在 v5 中即可傳送。
    • 對於第 4 版限制,第 5 版會使用名為 SizeConstraints 的簡化版本。應捨棄其他欄位 (例如 region)。

回應時應進行下列變更:

  1. v4 列舉 ResponseType 只會替換為名為 partial_update 的布林值欄位。
  2. minimum_wait_duration 欄位現在可以是零或省略。如果是,系統會要求用戶端立即發出其他要求。這個情況只會在用戶端在 SizeConstraints 中指定小於資料庫大小上限的較小限制。
  3. 32 位元整數的 Rice 解碼演算法需要調整。差別在於編碼資料是以不同的結束字元編碼。在 v4 和 v5 中,32 位元雜湊前置字串會依字母順序排序。但在第 4 版中,這些前置字串在排序時會被視為小端子,而在 v5 中,這些前置字串在排序時則會被視為大端字元。這意味著用戶端不需要進行任何排序,因為字典式排序與大端序的數字排序相同。這裡查看在 Chromium 第 4 版中實作的範例。這類排序可能會移除。
  4. 其他雜湊長度必須導入 Rice 解碼演算法。

轉換雜湊搜尋

在第 4 版中,其中一種會使用 fullHashes.find 方法取得完整的雜湊。第 5 版中的對等方法為 hashhes.search method

在請求中必須進行下列變更:

  1. 建立程式碼結構,只傳送長度為 4 個位元組的雜湊前置字串。
  2. 完全移除 v4 ClientInfo 物件。只要使用已知的使用者代理程式標頭,而不要透過專用欄位提供用戶端身分識別資訊即可。雖然這個標頭中並未規定提供用戶端身分識別格式,但我們建議您加入原始用戶端 ID 和用戶端版本,並以空格字元或斜線分隔。
  3. 移除 client_states 欄位。因為不再需要使用。
  4. 不再需要加入 threat_types 和類似欄位。

回應時應進行下列變更:

  1. 移除 minimum_wait_duration 欄位,用戶端可隨時根據需要發出新的要求。
  2. v4 ThreatMatch 物件已簡化為 FullHash 物件。
  3. 快取已簡化為單一快取持續時間。參閱上述與快取互動的程序。