diff --git a/internal/paths/consts.go b/internal/paths/consts.go index ffa60ec..eb72271 100644 --- a/internal/paths/consts.go +++ b/internal/paths/consts.go @@ -1,6 +1,9 @@ package paths -import "regexp" +import ( + "net/http" + "regexp" +) const ( default_ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36" @@ -31,3 +34,11 @@ var strip_headers = []string{ // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/report-to "report-to", } + +var videoplayback_headers = http.Header{ + "Accept": {"*/*"}, + "Accept-Encoding": {"gzip, deflate, br, zstd"}, + "Accept-Language": {"en-us,en;q=0.5"}, + "Origin": {"https://www.youtube.com"}, + "Referer": {"https://www.youtube.com/"}, +} diff --git a/internal/paths/videoplayback.go b/internal/paths/videoplayback.go index ec63514..315a8f3 100644 --- a/internal/paths/videoplayback.go +++ b/internal/paths/videoplayback.go @@ -110,6 +110,10 @@ func Videoplayback(w http.ResponseWriter, req *http.Request) { // q.Set("range", req.Header.Get("Range")) // } + if req.Header.Get("Range") != "" { + q.Set("range", strings.Split(req.Header.Get("Range"), "=")[1]) + } + path := req.URL.EscapedPath() proxyURL, err := url.Parse("https://" + host + path) @@ -130,8 +134,9 @@ func Videoplayback(w http.ResponseWriter, req *http.Request) { if err != nil { log.Panic("Failed to create headRequest:", err) } - utils.CopyHeaders(req.Header, postRequest.Header, false) - utils.CopyHeaders(req.Header, headRequest.Header, false) + + postRequest.Header = videoplayback_headers + headRequest.Header = videoplayback_headers switch c { case "ANDROID": @@ -148,11 +153,6 @@ func Videoplayback(w http.ResponseWriter, req *http.Request) { headRequest.Header.Set("User-Agent", default_ua) } - postRequest.Header.Add("Origin", "https://www.youtube.com") - headRequest.Header.Add("Origin", "https://www.youtube.com") - postRequest.Header.Add("Referer", "https://www.youtube.com/") - headRequest.Header.Add("Referer", "https://www.youtube.com/") - resp := &http.Response{} for i := 0; i < 5; i++ {