我正在做的是尝试提交要扫描到urlscan.io的URL。我可以进行搜索,但是提交有问题,尤其是正确发送正确的标题/编码数据。
在他们的网站上提交网址的方法:
curl -X POST“ https://urlscan.io/api/v1/scan/” \ -H“内容类型:application / json” \ -H“ API密钥:$ apikey” \ -d“ {\” url \“:\” $ url \“,\” public \“:\” on \“}”
这可以满足Api密钥标头的要求,但
req.Header.Add("API-Key", authtoken)
这是我的尝试失败
data := make(url.Values)
data.Add("url", myurltoscan)
我一直在努力的URL属性。
这是我的错误: “ message”:“缺少URL属性”, “ description”:“提供的URL不正确,请指定它,包括协议,主机和路径(例如http://example.com/bar)”, “状态”:400
答案 0 :(得分:1)
url.Value
是map[string][]string
,其中包含查询参数或POST
形式中使用的值。如果您尝试执行以下操作,则将需要它:
curl -X GET https://urlscan.io/api/v1/scan?url=<urltoscan>
或
curl -X POST -F 'url=<urltoscan>' https://urlscan.io/api/v1/scan
请参阅文档https://golang.org/pkg/net/url/#Values。
要发送带有JSON数据的常规POST请求,您可以将JSON编码为字节并以http.Post
发送:
var payload = []byte(`{"url":"<your-url>","public":"on"}`)
req, err := http.NewRequest("POST", url,
bytes.NewBuffer(payload))
req.Header.Set("API-Key", authtoken)
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()