Usa la API de Update

Descripción general

La API de Update permite que tus aplicaciones cliente descarguen versiones con hash de las listas de Web Risk para el almacenamiento en una base de datos local o en la memoria. Por lo tanto, las URL se pueden verificar de forma local. Cuando se encuentra una coincidencia en la base de datos local, el cliente envía una solicitud a los servidores de Web Risk para verificar si la URL se incluye en las listas de Web Risk.

Actualiza la base de datos local

Para mantenerse actualizados, los clientes deben actualizar las listas de Web Risk en sus bases de datos locales de forma periódica. Para ahorrar ancho de banda, los clientes descargan los prefijos de hash de las URL, en lugar de las URL sin procesar. Por ejemplo, si “www.badurl.com/” está en una lista de Web Risk, los clientes descargan el prefijo de hash SHA256 de esa URL, en lugar de la URL en sí. En la mayoría de los casos, los prefijos de hash tienen 4 bytes de longitud, lo que significa que el costo promedio del ancho de banda para la descarga de una sola entrada de lista es de 4 bytes antes de la compresión.

Para actualizar las listas de Web Risk en la base de datos local, envía una solicitud GET HTTP al método threatLists.computeDiff:

  • La solicitud GET HTTP incluye el nombre de la lista que se actualizará junto con las restricciones del cliente para atenerse a las limitaciones de memoria y ancho de banda.
  • La respuesta HTTP GET muestra una actualización completa o una actualización parcial. La respuesta también podría mostrar un tiempo de espera recomendado hasta la siguiente operación de diferencia de procesamiento.

Ejemplo: threatLists.computeDiff

Solicitud HTTP GET

En el siguiente ejemplo, se solicitan las diferencias para la lista de Web Risk de MALWARE. Para obtener más detalles, consulta los parámetros de búsqueda threatLists.computeDiff y las explicaciones que siguen al ejemplo de código.

Método HTTP y URL:

GET https://webrisk.googleapis.com/v1/threatLists:computeDiff?threatType=MALWARE&versionToken=Gg4IBBADIgYQgBAiAQEoAQ%3D%3D&constraints.maxDiffEntries=2048&constraints.maxDatabaseEntries=4096&constraints.supportedCompressions=RAW&key=API_KEY

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente comando:

curl -X GET \
"https://webrisk.googleapis.com/v1/threatLists:computeDiff?threatType=MALWARE&versionToken=Gg4IBBADIgYQgBAiAQEoAQ%3D%3D&constraints.maxDiffEntries=2048&constraints.maxDatabaseEntries=4096&constraints.supportedCompressions=RAW&key=API_KEY"

PowerShell

Ejecuta el siguiente comando:

$headers = @{  }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://webrisk.googleapis.com/v1/threatLists:computeDiff?threatType=MALWARE&versionToken=Gg4IBBADIgYQgBAiAQEoAQ%3D%3D&constraints.maxDiffEntries=2048&constraints.maxDatabaseEntries=4096&constraints.supportedCompressions=RAW&key=API_KEY" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "recommendedNextDiff": "2020-01-08T19:41:45.436722194Z",
  "responseType": "RESET",
  "additions": {
    "rawHashes": [
      {
        "prefixSize": 4,
        "rawHashes": "AArQMQAMoUgAPn8lAE..."
      }
    ]
  },
  "newVersionToken": "ChAIARAGGAEiAzAwMSiAEDABEPDyBhoCGAlTcIVL",
  "checksum": {
    "sha256": "wy6jh0+MAg/V/+VdErFhZIpOW+L8ulrVwhlV61XkROI="
  }
}

Java


import com.google.cloud.webrisk.v1.WebRiskServiceClient;
import com.google.protobuf.ByteString;
import com.google.webrisk.v1.CompressionType;
import com.google.webrisk.v1.ComputeThreatListDiffRequest;
import com.google.webrisk.v1.ComputeThreatListDiffRequest.Constraints;
import com.google.webrisk.v1.ComputeThreatListDiffResponse;
import com.google.webrisk.v1.ThreatType;
import java.io.IOException;

public class ComputeThreatListDiff {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // The threat list to update. Only a single ThreatType should be specified per request.
    ThreatType threatType = ThreatType.MALWARE;

    // The current version token of the client for the requested list. If the client does not have
    // a version token (this is the first time calling ComputeThreatListDiff), this may be
    // left empty and a full database snapshot will be returned.
    ByteString versionToken = ByteString.EMPTY;

    // The maximum size in number of entries. The diff will not contain more entries
    // than this value. This should be a power of 2 between 2**10 and 2**20.
    // If zero, no diff size limit is set.
    int maxDiffEntries = 1024;

    // Sets the maximum number of entries that the client is willing to have in the local database.
    // This should be a power of 2 between 2**10 and 2**20. If zero, no database size limit is set.
    int maxDatabaseEntries = 1024;

    // The compression type supported by the client.
    CompressionType compressionType = CompressionType.RAW;

    computeThreatDiffList(threatType, versionToken, maxDiffEntries, maxDatabaseEntries,
        compressionType);
  }

  // Gets the most recent threat list diffs. These diffs should be applied to a local database of
  // hashes to keep it up-to-date.
  // If the local database is empty or excessively out-of-date,
  // a complete snapshot of the database will be returned. This Method only updates a
  // single ThreatList at a time. To update multiple ThreatList databases, this method needs to be
  // called once for each list.