feat: add shared user agent constants

This commit is contained in:
2026-05-18 14:07:33 +02:00
parent 825f481329
commit 9859ddea42
4 changed files with 21 additions and 6 deletions

View File

@@ -11,6 +11,7 @@ import (
"fmt" "fmt"
"io" "io"
"mal/internal/domain" "mal/internal/domain"
"mal/pkg/net/useragent"
"mal/pkg/net/utls" "mal/pkg/net/utls"
"net/http" "net/http"
"net/url" "net/url"
@@ -23,7 +24,7 @@ const (
allAnimeBaseURL = "https://api.allanime.day" allAnimeBaseURL = "https://api.allanime.day"
allAnimeReferer = "https://allmanga.to/" allAnimeReferer = "https://allmanga.to/"
allAnimeOrigin = "https://youtu-chan.com" allAnimeOrigin = "https://youtu-chan.com"
defaultUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/121.0" defaultUserAgent = useragent.Firefox121
) )
var ( var (

View File

@@ -5,6 +5,7 @@ import (
"errors" "errors"
"fmt" "fmt"
"io" "io"
"mal/pkg/net/useragent"
"net/http" "net/http"
"regexp" "regexp"
"strconv" "strconv"
@@ -13,8 +14,6 @@ import (
"github.com/PuerkitoBio/goquery" "github.com/PuerkitoBio/goquery"
) )
const defaultUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36"
// idPattern extracts the watch order ID from chiaki.site URLs // idPattern extracts the watch order ID from chiaki.site URLs
var idPattern = regexp.MustCompile(`/id/(\d+)`) var idPattern = regexp.MustCompile(`/id/(\d+)`)
@@ -82,7 +81,7 @@ func parseRootID(url string) (int, error) {
} }
func addCommonHeaders(request *http.Request) { func addCommonHeaders(request *http.Request) {
request.Header.Set("User-Agent", defaultUserAgent) request.Header.Set("User-Agent", useragent.Chrome135)
request.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8") request.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8")
request.Header.Set("Accept-Language", "en-US,en;q=0.9") request.Header.Set("Accept-Language", "en-US,en;q=0.9")
request.Header.Set("Referer", "https://chiaki.site/") request.Header.Set("Referer", "https://chiaki.site/")

View File

@@ -12,6 +12,7 @@ import (
"mal/integrations/jikan" "mal/integrations/jikan"
"mal/internal/db" "mal/internal/db"
"mal/internal/domain" "mal/internal/domain"
"mal/pkg/net/useragent"
"net/http" "net/http"
"net/url" "net/url"
"sort" "sort"
@@ -359,7 +360,7 @@ func (s *playbackService) fetchSkipSegments(ctx context.Context, malID int, epis
if err != nil { if err != nil {
return []SkipSegment{} return []SkipSegment{}
} }
req.Header.Set("User-Agent", "Mozilla/5.0") req.Header.Set("User-Agent", useragent.Generic)
resp, err := s.httpClient.Do(req) resp, err := s.httpClient.Do(req)
if err != nil { if err != nil {
@@ -424,7 +425,7 @@ func (s *playbackService) warmStreamURL(targetURL, referer string) {
if referer != "" { if referer != "" {
req.Header.Set("Referer", referer) req.Header.Set("Referer", referer)
} }
req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/121.0") req.Header.Set("User-Agent", useragent.Firefox121)
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel() defer cancel()

View File

@@ -0,0 +1,14 @@
package useragent
// Keep these centralized so we don't end up with many drifting UA strings.
// Firefox121 mimics a modern Firefox desktop UA (used for some upstreams that
// gate responses based on UA).
const Firefox121 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/121.0"
// Chrome135 mimics a modern Chrome desktop UA.
const Chrome135 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36"
// Generic is a minimal UA string.
const Generic = "Mozilla/5.0"