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.
64 lines
1.4 KiB
64 lines
1.4 KiB
package kuaishou
|
|
|
|
import (
|
|
"errors"
|
|
"log"
|
|
"net/http"
|
|
"net/http/cookiejar"
|
|
"strings"
|
|
)
|
|
|
|
type Response struct {
|
|
Link string
|
|
Cookies string
|
|
Err error
|
|
}
|
|
|
|
func (c *Client) GetVideoLink(url string) Response {
|
|
|
|
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
|
|
}
|