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
}