You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kuaishou/get_video_link.go

64 lines
1.4 KiB

2 years ago
package kuaishou
import (
"errors"
"log"
"net/http"
"net/http/cookiejar"
"strings"
)
type Response struct {
Link string
Cookies string
Err error
}
2 years ago
func (c *Client) GetVideoLink(url string) Response {
2 years ago
result := Response{}
jar, err := cookiejar.New(&cookiejar.Options{})
if err != nil {
log.Fatal(err)
}
client := &http.Client{
Jar: jar,
}
request, err := http.NewRequest("GET", url, nil)
request.Header.Add("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1")
request.Header.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9")
request.Header.Add("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3")
// request.Header.Add("Host", "c.kuaishou.com")
// request.Header.Add("Host", "v.kuaishouapp.com")
result.Err = err
var cookieList []string
client.CheckRedirect = func(req *http.Request, via []*http.Request) error {
if len(via) > 10 {
return errors.New("too many redirects")
}
result.Link = req.URL.String()
return nil
}
response, _ := client.Do(request)
cookies := jar.Cookies(request.URL)
for _, cookie := range cookies {
cookieList = append(cookieList, cookie.String())
}
result.Cookies = strings.Join(cookieList, ";")
defer response.Body.Close()
return result
}