为什么在使用Go HTTP客户端时,我的HTTP POST请求会延迟60秒



我的目标是抓取一个需要我首先使用Golang中的HTTP请求登录的网站。事实上,我成功地发现我可以向网站发送一个帖子请求,将表单数据写入请求的正文。当我通过一个名为Postman的API开发软件测试这一点时,响应是即时的,没有延迟。但是,当在Go中使用HTTP客户端执行请求时,每次都会有一个一致的60秒延迟。我最终得到了一个登录页面,但对于我的程序,我需要几乎即时的响应。

正如你在我的代码中看到的,我已经尝试向请求添加一堆头,比如";"连接"内容类型""用户代理";因为我认为maaaaybe网站可以告诉我正在向程序请求,并迫使我等待60秒才能得到响应。添加这些头以使我的请求更加合法(?(根本不起作用。

延迟是来自Go的HTTP客户端速度慢,还是我形成HTTPPOST请求的方式有问题?另外,我是不是发现了一些关于我的头的东西,而HTTP客户端在它们发出时正在重写它们?

这是我的简单程序。。。

package main
import (
"bytes"
"fmt"
"mime/multipart"
"net/http"
"net/http/cookiejar"
"os"
)
func main() {
url := "https://easypronunciation.com/en/log-in"
method := "POST"
payload := &bytes.Buffer{}
writer := multipart.NewWriter(payload)
_ = writer.WriteField("email", "foo@bar.com")
_ = writer.WriteField("password", "*********")
_ = writer.WriteField("persistent_login", "on")
_ = writer.WriteField("submit", "")
err := writer.Close()
if err != nil {
fmt.Println(err)
}
cookieJar, _ := cookiejar.New(nil)
client := &http.Client{
Jar: cookieJar,
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
}
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("Connection", "Keep-Alive")
req.Header.Set("Accept-Language", "en-US")
req.Header.Set("User-Agent", "Mozilla/5.0")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
}
defer res.Body.Close()
f, err := os.Create("response.html")
defer f.Close()
res.Write(f)
}

我怀疑,这也是go客户端库。我建议打印出不同组件的延迟,看看60秒的延迟是否/在哪里。我也会替换并尝试不同的URL,而不是

最新更新