feat: add shared user agent constants
This commit is contained in:
@@ -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 (
|
||||||
|
|||||||
@@ -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/")
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
14
pkg/net/useragent/useragent.go
Normal file
14
pkg/net/useragent/useragent.go
Normal 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"
|
||||||
|
|
||||||
Reference in New Issue
Block a user