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

标签 http go post http-headers http-post

我的目标是抓取一个需要我首先使用 Golang 中的 HTTP 请求登录的网站。实际上,我成功地发现我可以向网站发送一个发布请求,将表单数据写入请求的正文中。当我通过我使用的名为 Postman 的 API 开发软件进行测试时,响应是即时的,没有延迟。但是,在 Go 中使用 HTTP 客户端执行请求时,每次都会有 60 秒的延迟。我最终得到了一个登录页面,但对于我的程序,我需要几乎是即时的响应。
正如您在我的代码中看到的那样,我尝试向请求中添加一堆 header ,例如“Connection”、“Content-Type”、“User-Agent”,因为我认为网站可以告诉我正在从程序并迫使我等待 60 秒以等待响应。添加这些 header 以使我的请求更合法(?)根本不起作用。
来自 Go 的 HTTP 客户端的延迟是慢还是我如何形成我的 HTTP POST 请求有问题?另外,我是否对我的 header 进行了处理,并且 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

关于http - 为什么在使用 Go HTTP 客户端时我的 HTTP POST 请求会有 60 秒的延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63475918/

相关文章:

Python:将大文件下载到本地路径并设置自定义 http header

mysql - 如何为使用 MySQL 数据库而不是内存存储的 OpenID 实现自己的接口(interface)

regex - 路由 http 请求时奇怪的 Go 正则表达式不匹配

javascript - 为什么我的 jquery/ajax 帖子没有在我的 php 代码中注册?

http - 通过 HTTP 执行位于共享上的 ClickOnce 应用程序?

javascript - Node.js 请求返回对象

android - Android 是否将从 HTTP 下载的图像保存在缓存中?

google-app-engine - 使用环境变量将值传递给 App Engine 上的 Go 应用程序

ruby-on-rails - 将 post 请求表单数据传递给 Rails Controller

Javascript-POST 不工作