为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
四季花海 2022-10-10 17:03:27
例如,我需要来自页面https://aliexpress.ru/item/4001275226820.html的内容在邮递员和浏览器中,我得到页面的 html 内容但是当我尝试使用 GO 时,我无法获取内容package mainimport (    "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 次重定向后停止”我做错了什么?
查看完整描述

1 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

下面的代码给我一个 200 响应。您也许可以简化它,但应该足以让您入门:


package main


import (

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

}


查看完整回答
反对 回复 2022-10-10
  • 1 回答
  • 0 关注
  • 514 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信