Method: hashes.search

Pesquise hashes completos que correspondam aos prefixos especificados.

Este é um método personalizado, conforme definido em https://google.aip.dev/136. O método personalizado se refere a este método com um nome personalizado na nomenclatura geral de desenvolvimento de API do Google. Ele não se refere ao uso de um método HTTP personalizado.

Solicitação HTTP

GET https://safebrowsing.googleapis.com/v5/hashes:search

O URL usa a sintaxe de transcodificação gRPC.

Parâmetros de consulta

Parâmetros
hashPrefixes[]

string (bytes format)

Obrigatório. Os prefixos de hash a serem procurados. Os clientes NÃO PODEM enviar mais de 1.000 prefixos de hash. No entanto, seguindo o procedimento de processamento de URL, os clientes NÃO precisam enviar mais de 30 prefixos de hash.

Atualmente, cada prefixo de hash precisa ter exatamente 4 bytes. Isso PODE ser relaxado no futuro.

Uma string codificada em base64.

Corpo da solicitação

O corpo da solicitação precisa estar vazio.

Corpo da resposta

A resposta retornada após a pesquisa de hashes de ameaças.

Se nada for encontrado, o servidor vai retornar um status OK (código de status HTTP 200) com o campo fullHashes vazio, em vez de retornar um status NOT_FOUND (código de status HTTP 404).

Novidades na V5: há uma separação entre FullHash e FullHashDetail. Quando um hash representa um site com várias ameaças (por exemplo, MALWARE e SOCIAL_ENGINEERING), não é necessário enviar o hash completo duas vezes, como na V4. Além disso, a duração do cache foi simplificada em um único campo cacheDuration.

Se bem-sucedido, o corpo da resposta incluirá dados com a estrutura a seguir:

Representação JSON
{
  "fullHashes": [
    {
      object (FullHash)
    }
  ],
  "cacheDuration": string
}
Campos
fullHashes[]

object (FullHash)

Lista não ordenada. A lista não ordenada de hashes completos encontrados.

cacheDuration

string (Duration format)

A duração do cache do lado do cliente. O cliente PRECISA adicionar essa duração ao horário atual para determinar o tempo de expiração. O tempo de expiração se aplica a todos os prefixos de hash consultados pelo cliente na solicitação, independentemente de quantos hashes completos são retornados na resposta. Mesmo que o servidor não retorne hashes completos para um prefixo de hash específico, esse fato também PRECISA ser armazenado em cache pelo cliente.

Se e somente se o campo fullHashes estiver vazio, o cliente PODE aumentar o cacheDuration para determinar uma nova expiração posterior à especificada pelo servidor. De qualquer forma, a duração do cache não pode ser maior que 24 horas.

Importante: o cliente NÃO PODE presumir que o servidor vai retornar a mesma duração de cache para todas as respostas. O servidor PODE escolher durações de cache diferentes para respostas diferentes, dependendo da situação.

Duração em segundos com até nove dígitos fracionários, terminando em "s". Exemplo: "3.5s".

FullHash

O hash completo identificado com uma ou mais correspondências.

Representação JSON
{
  "fullHash": string,
  "fullHashDetails": [
    {
      object (FullHashDetail)
    }
  ]
}
Campos
fullHash

string (bytes format)

O hash completo correspondente. Este é o hash SHA256. O comprimento será exatamente de 32 bytes.

Uma string codificada em base64.

fullHashDetails[]

object (FullHashDetail)

Lista não ordenada. Um campo repetido que identifica os detalhes relevantes para esse hash completo.

FullHashDetail

Detalhes sobre um hash completo correspondente.

Observação importante sobre a compatibilidade com versões futuras: novos tipos e atributos de ameaça podem ser adicionados pelo servidor a qualquer momento. Essas adições são consideradas mudanças de versão menores. A política do Google é não expor números de versão secundária nas APIs (consulte https://cloud.google.com/apis/design/versioning para conferir a política de controle de versões). Portanto, os clientes precisam estar preparados para receber mensagens FullHashDetail com valores de enumeração ThreatType ou ThreatAttribute que são considerados inválidos pelo cliente. Portanto, é responsabilidade do cliente verificar a validade de todos os valores de tipo enumerado ThreatType e ThreatAttribute. Se algum valor for considerado inválido, o cliente PRECISA desconsiderar toda a mensagem FullHashDetail.

Representação JSON
{
  "threatType": enum (ThreatType),
  "attributes": [
    enum (ThreatAttribute)
  ]
}
Campos
threatType

enum (ThreatType)

O tipo de ameaça. Esse campo nunca vai ficar vazio.

attributes[]

enum (ThreatAttribute)

Lista não ordenada. Outros atributos sobre esses hashes completos. Pode estar vazio.

ThreatAttribute

Atributos de ameaças. Esses atributos podem conferir um significado adicional a uma ameaça específica, mas não afetam o tipo de ameaça. Por exemplo, um atributo pode especificar uma confiança menor, enquanto outro pode especificar uma confiança maior. Mais atributos poderão ser adicionados no futuro.

Enums
THREAT_ATTRIBUTE_UNSPECIFIED Atributo desconhecido. Se isso for retornado pelo servidor, o cliente vai ignorar completamente o FullHashDetail que o contém.
CANARY Indica que o threatType não deve ser usado para aplicação.
FRAME_ONLY Indica que o threatType só pode ser usado para aplicação em frames.