如何正确从 GO 中的 url 获取内容?

例如,我需要来自页面https://aliexpress.ru/item/4001275226820.html的内容


在邮递员和浏览器中,我得到页面的 html 内容


但是当我尝试使用 GO 时,我无法获取内容


package main


import (

    "fmt"

    "io/ioutil"

    "net/http"

)


func main() {

    resp, err := http.Get("https://aliexpress.ru/item/4001275226820.html")

    defer resp.Body.Close()


    if err != nil {panic(err)}


    html, err1 := ioutil.ReadAll(resp.Body)

    if err1 != nil {panic(err1)}


    fmt.Printf("%s\n", html)

}


但是让恐慌“在 10 次重定向后停止”我做错了什么?


四季花海
浏览 515回答 1
1回答

catspeake

下面的代码给我一个 200 响应。您也许可以简化它,但应该足以让您入门:package mainimport (   "fmt"   "net/http")func cookies() ([]*http.Cookie, error) {   req, err := http.NewRequest(      "HEAD", "https://login.aliexpress.ru/sync_cookie_write.htm", nil,   )   if err != nil {      return nil, err   }   val := req.URL.Query()   val.Set("acs_random_token", "1")   req.URL.RawQuery = val.Encode()   res, err := new(http.Transport).RoundTrip(req)   if err != nil {      return nil, err   }   return res.Cookies(), nil}func main() {   req, err := http.NewRequest(      "HEAD", "https://aliexpress.ru/item/4001275226820.html", nil,   )   if err != nil {      panic(err)   }   cooks, err := cookies()   if err != nil {      panic(err)   }   for _, cook := range cooks {      if cook.Name == "xman_f" {         req.AddCookie(cook)      }   }   res, err := new(http.Transport).RoundTrip(req)   if err != nil {      panic(err)   }   fmt.Printf("%+v\n", res)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go