Home > Net >  How proper get content from url in GO?
How proper get content from url in GO?

Time:10-29

For example I need content from page https://aliexpress.ru/item/4001275226820.html

In Postman and in browser I get html content of page

But when I try use GO i can`t get content

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

But get panic "stopped after 10 redirects" what am I doing wrong?

CodePudding user response:

The below code gets me a 200 response. You might be able to simplify it, but should be enough to get you started:

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)
}
  •  Tags:  
  • go
  • Related