Method: threatListUpdates.fetch

Получает самые последние обновления списка угроз. Клиент может запросить обновления для нескольких списков одновременно.

HTTP-запрос

POST https://safebrowsing.googleapis.com/v4/threatListUpdates:fetch

URL-адрес использует синтаксис транскодирования gRPC .

Тело запроса

Тело запроса содержит данные следующей структуры:

JSON-представление
{
  "client": {
    object (ClientInfo)
  },
  "listUpdateRequests": [
    {
      object (ListUpdateRequest)
    }
  ]
}
Поля
client

object ( ClientInfo )

Метаданные клиента.

listUpdateRequests[]

object ( ListUpdateRequest )

Запрошенные обновления списка угроз.

Тело ответа

В случае успеха тело ответа содержит данные следующей структуры:

JSON-представление
{
  "listUpdateResponses": [
    {
      object (ListUpdateResponse)
    }
  ],
  "minimumWaitDuration": string
}
Поля
listUpdateResponses[]

object ( ListUpdateResponse )

Обновления списка по запросу клиентов. Количество ответов здесь может быть меньше количества запросов, отправленных клиентами. Это происходит, например, если на сервере нет обновлений для определенного списка.

minimumWaitDuration

string ( Duration format)

Минимальная продолжительность ожидания, которую клиент должен ждать перед отправкой любого запроса на обновление. Если это поле не установлено, клиенты могут обновляться, как только захотят.

Длительность в секундах, содержащая до девяти дробных цифр, заканчивающаяся символом « s ». Пример: "3.5s" .

ListUpdateRequest

Единый запрос на обновление списка.

JSON-представление
{
  "threatType": enum (ThreatType),
  "platformType": enum (PlatformType),
  "threatEntryType": enum (ThreatEntryType),
  "state": string,
  "constraints": {
    object (Constraints)
  }
}
Поля
threatType

enum ( ThreatType )

Тип угрозы, которую представляют записи, присутствующие в списке.

platformType

enum ( PlatformType )

Тип платформы, подверженной риску, по записям, присутствующим в списке.

threatEntryType

enum ( ThreatEntryType )

Типы записей, представленных в списке.

state

string ( bytes format)

Текущее состояние клиента запрошенного списка (зашифрованное состояние клиента, полученное в результате последнего успешного обновления списка).

Строка в кодировке Base64.

constraints

object ( Constraints )

Ограничения, связанные с этим запросом.

Ограничения

Ограничения для этого обновления.

JSON-представление
{
  "maxUpdateEntries": integer,
  "maxDatabaseEntries": integer,
  "region": string,
  "supportedCompressions": [
    enum (CompressionType)
  ],
  "language": string,
  "deviceLocation": string
}
Поля
maxUpdateEntries

integer

Максимальный размер по количеству записей. Обновление не будет содержать больше записей, чем это значение. Это должна быть степень 2 между 2**10 и 2**20. Если ноль, ограничение размера обновления не установлено.

maxDatabaseEntries

integer

Устанавливает максимальное количество записей, которые клиент желает иметь в локальной базе данных для указанного списка. Это должна быть степень 2 между 2**10 и 2**20. Если ноль, ограничение размера базы данных не установлено.

region

string

Запрашивает список для определенного географического местоположения. Если этот параметр не установлен, сервер может выбрать это значение на основе IP-адреса пользователя. Ожидается формат ISO 3166-1 альфа-2.

supportedCompressions[]

enum ( CompressionType )

Типы сжатия, поддерживаемые клиентом.

language

string

Запрашивает списки для определенного языка. Ожидается формат ISO 639 альфа-2.

deviceLocation

string

Физическое местоположение клиента, выраженное в виде кода региона ISO 31166-1 альфа-2.

Тип сжатия

Способы сжатия наборов записей об угрозах.

Перечисления
COMPRESSION_TYPE_UNSPECIFIED Неизвестный.
RAW Необработанные несжатые данные.
RICE Данные в кодировке Райса-Голомба.

Листупдатеответ

Обновление индивидуального списка.

JSON-представление
{
  "threatType": enum (ThreatType),
  "threatEntryType": enum (ThreatEntryType),
  "platformType": enum (PlatformType),
  "responseType": enum (ResponseType),
  "additions": [
    {
      object (ThreatEntrySet)
    }
  ],
  "removals": [
    {
      object (ThreatEntrySet)
    }
  ],
  "newClientState": string,
  "checksum": {
    object (Checksum)
  }
}
Поля
threatType

enum ( ThreatType )

Тип угрозы, для которой возвращаются данные.

threatEntryType

enum ( ThreatEntryType )

Формат угроз.

platformType

enum ( PlatformType )

Тип платформы, для которой возвращаются данные.

responseType

enum ( ResponseType )

Тип ответа. Это может указывать на то, что при получении ответа от клиента требуется действие.

additions[]

object ( ThreatEntrySet )

Набор записей для добавления в список типов локальных угроз. Повторяется, чтобы разрешить отправку комбинации сжатых и необработанных данных в одном ответе.

removals[]

object ( ThreatEntrySet )

Набор записей, которые необходимо удалить из списка типов локальных угроз. На практике это поле пусто или содержит ровно один ThreatEntrySet.

newClientState

string ( bytes format)

Новое состояние клиента в зашифрованном формате. Непрозрачен для клиентов.

Строка в кодировке Base64.

checksum

object ( Checksum )

Ожидаемый хеш SHA256 состояния клиента; то есть отсортированный список всех хешей, присутствующих в базе данных после применения предоставленного обновления. Если состояние клиента не соответствует ожидаемому состоянию, клиент должен проигнорировать это обновление и повторить попытку позже.

Тип ответа

Тип ответа, отправляемого клиенту.

Перечисления
RESPONSE_TYPE_UNSPECIFIED Неизвестный.
PARTIAL_UPDATE Частичные обновления применяются к существующей локальной базе данных клиента.
FULL_UPDATE Полные обновления заменяют всю локальную базу данных клиента. Это означает, что либо клиент серьезно устарел, либо клиент считается поврежденным.

ThreatEntrySet

Набор угроз, которые необходимо добавить или удалить из локальной базы данных клиента.

JSON-представление
{
  "compressionType": enum (CompressionType),
  "rawHashes": {
    object (RawHashes)
  },
  "rawIndices": {
    object (RawIndices)
  },
  "riceHashes": {
    object (RiceDeltaEncoding)
  },
  "riceIndices": {
    object (RiceDeltaEncoding)
  }
}
Поля
compressionType

enum ( CompressionType )

Тип сжатия для записей в этом наборе.

rawHashes

object ( RawHashes )

Необработанные записи в формате SHA256.

rawIndices

object ( RawIndices )

Необработанные индексы удаления для локального списка.

riceHashes

object ( RiceDeltaEncoding )

Закодированные 4-байтовые префиксы записей в формате SHA256 с использованием кодировки Голомба-Райса. Хэши преобразуются в uint32, сортируются в порядке возрастания, затем дельта-кодируются и сохраняются как encodedData.

riceIndices

object ( RiceDeltaEncoding )

Закодированные локальные индексы списков с лексикографической сортировкой с использованием кодировки Голомба-Райса. Используется для отправки сжатых индексов удаления. Индексы удаления (uint32) сортируются в порядке возрастания, затем дельта-кодируются и сохраняются как encodedData.

RawHashes

Несжатые записи об угрозах в формате хэша с определенной длиной префикса. Хэши могут иметь размер от 4 до 32 байт. Подавляющее большинство из них имеют длину 4 байта, но некоторые хеши удлиняются, если они конфликтуют с хешем популярного URL-адреса.

Используется для отправки ThreatEntrySet клиентам, не поддерживающим сжатие, или при отправке не4-байтовых хэшей клиентам, поддерживающим сжатие.

JSON-представление
{
  "prefixSize": integer,
  "rawHashes": string
}
Поля
prefixSize

integer

Количество байтов для каждого префикса, закодированного ниже. Это поле может иметь любое значение от 4 (самый короткий префикс) до 32 (полный хэш SHA256).

rawHashes

string ( bytes format)

Хэши в двоичном формате объединены в одну длинную строку. Хэши сортируются в лексикографическом порядке. Для пользователей JSON API хеши имеют кодировку Base64.

Строка в кодировке Base64.

Необработанные индексы

Набор необработанных индексов, которые нужно удалить из локального списка.

JSON-представление
{
  "indices": [
    integer
  ]
}
Поля
indices[]

integer

Индексы, которые необходимо удалить из локального списка, отсортированного по лексикографическому принципу.

РайсДельтаКодирование

Данные, закодированные Райсом-Голомбом. Используется для отправки сжатых 4-байтовых хешей или сжатых индексов удаления.

JSON-представление
{
  "firstValue": string,
  "riceParameter": integer,
  "numEntries": integer,
  "encodedData": string
}
Поля
firstValue

string ( int64 format)

Смещение первой записи в закодированных данных или, если было закодировано только одно целое число, значение этого одного целого числа. Если поле пусто или отсутствует, примите ноль.

riceParameter

integer

Параметр Голомба-Райса, представляющий собой число от 2 до 28. Это поле отсутствует (то есть равно нулю), если numEntries равно нулю.

numEntries

integer

Количество записей, которые закодированы дельта-кодом в закодированных данных. Если было закодировано только одно целое число, оно будет равно нулю, и единственное значение будет сохранено в firstValue .

encodedData

string ( bytes format)

Закодированные дельты, закодированные с помощью кодера Голомба-Райса.

Строка в кодировке Base64.

Контрольная сумма

Ожидаемое состояние локальной базы данных клиента.

JSON-представление
{
  "sha256": string
}
Поля
sha256

string ( bytes format)

Хэш SHA256 состояния клиента; то есть отсортированный список всех хешей, присутствующих в базе данных.

Строка в кодировке Base64.