gpt4 book ai didi

go - 是什么导致了这种 go​​lang os.Exec 行为(转义双引号)?

转载 作者:数据小太阳 更新时间:2023-10-29 03:32:58 27 4
gpt4 key购买 nike

我有以下代码:

for i := 0; i < 1; i++ {
wait := rand.Int63n(150) + 300
time.Sleep(time.Millisecond * time.Duration(wait))
//
useragent := "--user-agent='Mozilla/5.0 (X11; CrOS armv7l 8872.76.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.105 Safari/537.36'"
outDirectory := "--output-document=temp/review-" + strconv.Itoa(i) + ".html"
header := "--header=\"Content-Type: application/x-www-form-urlencoded;charset=utf-8\""
uri := "https://play.google.com/store/getreviews"
payload := "--post-data=id=fi.danskebank.mobilepay&reviewSortOrder=2&xhr=1&reviewType=0&pageNum=" + strconv.Itoa(i)
cmd := exec.Command("wget", useragent, outDirectory, header, uri, payload)
fmt.Println(strings.Join(cmd.Args, " "))
bytes, _ := cmd.CombinedOutput()
fmt.Println(string(bytes))
}
fmt.Println("Finished crawling")

如果我改变有效负载行

payload := "--post-data=id=fi.danskebank.mobilepay&reviewSortOrder=2&xhr=1&reviewType=0&pageNum=" + strconv.Itoa(i)

payload := "--post-data=\"id=fi.danskebank.mobilepay&reviewSortOrder=2&xhr=1&reviewType=0&pageNum=" + strconv.Itoa(i) + "\""

它将返回服务器错误 500,即使在运行相应的 wget 时也是如此:

wget --user-agent='Mozilla/5.0 (X11; CrOS armv7l 8872.76.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.105 Safari/537.36' --output-document=temp/review-0.html --header="Content-Type: application/x-www-form-urlencoded;charset=utf-8" https://play.google.com/store/getreviews --post-data="id=fi.danskebank.mobilepay&reviewSortOrder=2&xhr=1&reviewType=0&pageNum=0"

它将与没有转义引号的后数据有相同的响应。

为什么 Golang os.Exec 会导致这种行为?

最佳答案

当您在 shell 中执行命令时,shell 会处理引号并且它们不会传递给您正在执行的程序。当您在 Go 中执行命令时,不涉及 shell 处理,因此引号会被传递。由于程序不期望它们,它们直接在请求正文中传递,服务器响应错误。

与您的问题无关,但如果您没有使用 wget 的特定原因,使用 built-in HTTP client 会获得更好的性能而不是为每个请求 fork wget。

关于go - 是什么导致了这种 go​​lang os.Exec 行为(转义双引号)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46078685/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com