go - 如何使用 Go 向 urlscanio 发出发布请求?

标签 go

我正在做的是尝试提交一个 URL 以扫描到 urlscan.io。我可以进行搜索,但提交有问题,尤其是正确发送正确的 header /编码数据。

从他们的网站上如何提交 url:

curl -X POST "https://urlscan.io/api/v1/scan/ "\ -H“内容类型:应用程序/json”\ -H“API key :$apikey”\ -d "{\"url\":\"$url\",\"public\":\"on\"}"

这可以满足 Api key header 要求,但是

req.Header.Add("API-Key", authtoken)

这是我失败的尝试

data := make(url.Values)
data.Add("url", myurltoscan)

我一直在努力解决的 URL 属性。

这是我的错误: "message": "缺少 URL 属性", "description": "提供的 URL 不正确,请指定它,包括协议(protocol)、主机和路径(例如 http://example.com/bar )", “状态”:400

最佳答案

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()

关于go - 如何使用 Go 向 urlscanio 发出发布请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53199322/

相关文章:

go - "package main"在 main.go 文件夹中标记为红色的错误

go - 如何在 Go 中使用排序包反转字符串 slice ?

dictionary - 计算递归定义的自定义类型的不同对象数量的惯用方法

go - 一个 channel 只能接收一条消息

html - 如何在 Golang 模板中打印新行?

go - go中是否有等效的atof?

json - 戈朗 : Router config in json file

http - 去urlfetch.Transport.RoundTrip,GET可以调用,POST不行?

javascript - gorilla /csrf 的问题

google-app-engine - App Engine 部署到不是 project_id.appspot.com 的地方