Когда клиенты выбирают использование Google Safe Browsing v5 в этом режиме, поведение клиента аналогично API обновления v4, за исключением использования улучшенного API v5. Клиенты будут хранить в своей локальной базе данных набор списков угроз, отформатированных как префиксы хешей SHA256 для выражений URL-адресов с суффиксом хоста/префиксом пути. Всякий раз, когда клиент хочет проверить определенный URL-адрес, выполняется проверка с использованием локального списка угроз. Только если найдено совпадение, клиент подключается к серверу для продолжения проверки.
Как и в предыдущем случае, клиент также будет поддерживать локальный кэш, который не обязательно должен храниться в постоянном хранилище.
Процедура проверки URL-адреса локального списка угроз
Эта процедура также выполняется, когда клиент использует режим реального времени , и возвращает значение UNSURE .
Эта процедура принимает один URL-адрес u и возвращает SAFE или UNSAFE .
- Пусть
expressionsэто список выражений суффикса/префикса, сгенерированных URL-адресомu. - Пусть
expressionHashesсписок, элементы которого представляют собой хеши SHA256 каждого выражения изexpressions. - Пусть
expressionHashPrefixes— список, элементы которого представляют собой первые 4 байта каждого хеша изexpressionHashes. - Для каждого
expressionHashPrefixизexpressionHashPrefixes:- Найдите
expressionHashPrefixв локальном кэше. - Если кэшированная запись найдена:
- Определите, превышает ли текущее время время его истечения.
- Если оно больше:
- Удалите найденную запись из локального кэша.
- Продолжайте цикл.
- Если оно не больше:
- Удалите этот конкретный
expressionHashPrefixизexpressionHashPrefixes. - Проверьте, найден ли соответствующий полный хеш в
expressionHashesв кэшированной записи. - Если обнаружено, вернуть
UNSAFE. - Если не найдено, продолжить цикл.
- Удалите этот конкретный
- Если кэшированная запись не найдена, продолжите цикл.
- Найдите
- Для каждого
expressionHashPrefixизexpressionHashPrefixes:- Найдите
expressionHashPrefixв локальной базе данных списков угроз. - Если
expressionHashPrefixне найден в локальной базе данных списков угроз, удалите его изexpressionHashPrefixes.
- Найдите
- Отправьте
expressionHashPrefixesна сервер Google Safe Browsing v5, используя RPC SearchHashes или REST-метод hashes.search . Если произошла ошибка (включая сетевые ошибки, ошибки HTTP и т. д.), вернитеSAFE. В противном случае, пусть response будетresponse, полученным от сервера SB, который представляет собой список полных хешей вместе с некоторой вспомогательной информацией, определяющей характер угрозы (социальная инженерия, вредоносное ПО и т. д.), а также время истечения срока действия кэшаexpiration. - Для каждого
fullHashresponse:- Вставить
fullHashв локальный кэш вместе сexpiration.
- Вставить
- Для каждого
fullHashresponse:- Пусть
isFound— результат поискаfullHashвexpressionHashes. - Если
isFoundравно False, продолжайте цикл. - Если
isFoundравно True, вернутьUNSAFE.
- Пусть
- Верните
SAFE.