クライアントがこのモードで Google セーフ ブラウジング v5 を使用することを選択した場合、クライアントの動作は v4 Update API と同様ですが、v5 の改善された API サーフェスを使用します。クライアントは、ホスト サフィックス/パス プレフィックス URL 式の SHA256 ハッシュ プレフィックスとしてフォーマットされた一連の脅威リストをローカル データベースに保持します。クライアントが特定の URL をチェックするたびに、ローカルの脅威リストを使用してチェックが実行されます。一致した場合にのみ、クライアントはサーバーに接続してチェックを続行します。
上記と同様に、クライアントは永続ストレージに保存する必要のないローカル キャッシュも保持します。
ローカル脅威リストの URL チェック手順
この手順は、クライアントがリアルタイム モードの手順を使用していて、値 UNSURE を返す場合にも実行されます。
このプロシージャは、単一の URL u を受け取り、SAFE または UNSAFE を返します。
expressionsを、URLuによって生成されたサフィックス/プレフィックス式のリストとします。expressionHashesをリストとします。このリストの要素は、expressionsの各式の SHA256 ハッシュです。expressionHashPrefixesをリストとします。このリストの要素は、expressionHashes内の各ハッシュの最初の 4 バイトです。expressionHashPrefixesの各expressionHashPrefixについて:- ローカル キャッシュで
expressionHashPrefixを検索します。 - キャッシュ エントリが見つかった場合:
- 現在の時刻が有効期限より大きいかどうかを判断します。
- 大きい場合:
- 見つかったキャッシュ エントリをローカル キャッシュから削除します。
- ループを続行します。
- それより大きくない場合:
- この特定の
expressionHashPrefixをexpressionHashPrefixesから削除します。 expressionHashes内の対応する完全なハッシュがキャッシュ エントリにあるかどうかを確認します。- 見つかった場合は、
UNSAFEを返します。 - 見つからない場合は、ループを続行します。
- この特定の
- キャッシュにエントリが見つからない場合は、ループを続行します。
- ローカル キャッシュで
expressionHashPrefixesの各expressionHashPrefixについて:- ローカルの脅威リスト データベースで
expressionHashPrefixを検索します。 expressionHashPrefixがローカルの脅威リスト データベースにない場合は、expressionHashPrefixesから削除します。
- ローカルの脅威リスト データベースで
- RPC SearchHashes または REST メソッド hashes.search を使用して、
expressionHashPrefixesを Google セーフ ブラウジング v5 サーバーに送信します。エラー(ネットワーク エラー、HTTP エラーなど)が発生した場合は、SAFEを返します。それ以外の場合、レスポンスは SB サーバーから受信したresponseとします。これは、脅威の性質(ソーシャル エンジニアリング、マルウェアなど)を特定する補助情報とキャッシュの有効期限expirationを含む完全なハッシュのリストです。 responseの各fullHashについて:expirationとともにfullHashをローカル キャッシュに挿入します。
responseの各fullHashについて:isFoundをexpressionHashesでfullHashを検索した結果とします。isFoundが False の場合は、ループを続行します。isFoundが True の場合は、UNSAFEを返します。
SAFEを返します。