es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Nada es devuelto al hacer una consulta a la API de safebrowsing.

Estoy intentando obtener información de una API de Google, pero el cuerpo de la respuesta parece estar vacío. solo muestra {} en la consola. No estoy seguro de dónde se encuentra el error ya que usé la documentación para obtener la información de carga útil para la solicitud: https://developers.google.com/safe-browsing/v4/lookup-api

paquete principal

import (
    "fmt"

    "encoding/json"
    "io/ioutil"
    "net/http"
    "strings"
)

type payload struct {
    Client     client     `json:"client"`
    ThreatInfo threatInfo `json:"threatInfo"`
}

type client struct {
    ClientId      string `json:"clientId"`
    ClientVersion string `json:"clientVersion"`
}

type threatInfo struct {
    ThreatTypes      []string `json:"threatTypes"`
    PlatformTypes    []string `json:"platformTypes"`
    ThreatEntryTypes []string `json:"threatEntryTypes"`
    ThreatEntries    []entry  `json:"threatEntries"`
}

type entry struct {
    URL string `json:"url"`
}

func checkURLs(urls []string) {

// completar entradas
var entries = []entry{}
for _, url := range urls {
    entries = append(entries, entry{URL: url})
}

data := payload {
    Client: client{
        ClientId:      "myapp",
        ClientVersion: "0.0.1",
    },
    ThreatInfo: threatInfo{
        ThreatTypes:   []string{"MALWARE", "SOCIAL_ENGINEERING", "POTENTIALLY_HARMFUL_APPLICATION"},
        PlatformTypes: []string{"ANY_PLATFORM"},
        ThreatEntryTypes: []string{"URL"},
        ThreatEntries: entries,
    },
}

jsonBytes, _ := json.Marshal(data)

key := "*"
api := fmt.Sprintf("https://safebrowsing.googleapis.com/v4/threatMatches:find?key=%s", key)
req, _ := http.NewRequest("POST", api, strings.NewReader(string(jsonBytes)))
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()

body, err := ioutil.ReadAll(res.Body)
fmt.Println(res) // 200 OK 
fmt.Println(err) // nil
fmt.Println(string(body)) // {}
}

func main() {
    checkURLs([]string{"http://www.urltocheck1.org/", "http://www.urltocheck2.org/"})
}

EDITAR

Encontré un paquete de Google en Go para hacer la mayor parte del trabajo pesado y, sin embargo, sigue siendo una respuesta vacía. Debo agregar que logré obtener algunas URL que contienen malware y se detectan mediante la búsqueda de URL de transparencia de Google: https://transparencyreport.google.com/safe-browsing/search

Entonces, ¿por qué está vacío para mí cuando debería haber resultados?

paquete principal

import (
    "fmt"
    "github.com/google/safebrowsing"
)

func checkURLs(urls []string) {
    sb, err := safebrowsing.NewSafeBrowser(safebrowsing.Config{
        ID: "myapp",
        Version: "0.0.1",
        APIKey: "*",
    })

if err != nil {
    fmt.Println(err)
    return
}

threats, err := sb.LookupURLs(urls)
if err != nil {
    fmt.Println(err)
    return
}

fmt.Println(threats)
}

func main() {
    checkURLs([]string{"http://www.urltocheck1.org/", "http://www.urltocheck2.org/"})
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que la petición se está enviando correctamente, pero la respuesta está vacía, lo que podría significar que no hay coincidencias o que hay algún error en la petición. Una cosa para comprobar sería si la clave de API es válida y que el punto final es correcto. Otra posibilidad es que las URL que se están comprobando en realidad no estén presentes en la base de datos de Safe Browsing.

    En el segundo fragmento de código, se está utilizando el paquete API de Google Safe Browsing, que debería manejar la petición y la respuesta correctamente. Sin embargo, incluso con este paquete, se está recibiendo una respuesta vacía, lo que señala a los mismos problemas que antes.

    Para solucionar el problema, puede ser útil verificar la clave de API, probar diferentes URL que se sabe que están presentes en la base de datos y volver a comprobar el punto final para asegurarse de que todo es correcto. También puede ser útil contactar con el soporte de Google para obtener más ayuda.

Comments are closed.