feat: use invidious-companion way to handle Range header and query parameter

This commit is contained in:
Fijxu 2025-03-06 21:31:37 -03:00
parent 1045548164
commit f7e75ce5e7
Signed by: Fijxu
GPG key ID: 32C1DDF333EDA6A4
2 changed files with 19 additions and 8 deletions

View file

@ -1,6 +1,9 @@
package paths package paths
import "regexp" import (
"net/http"
"regexp"
)
const ( 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" 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 // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/report-to
"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/"},
}

View file

@ -110,6 +110,10 @@ func Videoplayback(w http.ResponseWriter, req *http.Request) {
// q.Set("range", req.Header.Get("Range")) // 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() path := req.URL.EscapedPath()
proxyURL, err := url.Parse("https://" + host + path) proxyURL, err := url.Parse("https://" + host + path)
@ -130,8 +134,9 @@ func Videoplayback(w http.ResponseWriter, req *http.Request) {
if err != nil { if err != nil {
log.Panic("Failed to create headRequest:", err) 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 { switch c {
case "ANDROID": case "ANDROID":
@ -148,11 +153,6 @@ func Videoplayback(w http.ResponseWriter, req *http.Request) {
headRequest.Header.Set("User-Agent", default_ua) 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{} resp := &http.Response{}
for i := 0; i < 5; i++ { for i := 0; i < 5; i++ {