node build fixed
This commit is contained in:
77
seanime-2.9.10/internal/util/user_agent.go
Normal file
77
seanime-2.9.10/internal/util/user_agent.go
Normal file
@@ -0,0 +1,77 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"net/http"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
var (
|
||||
userAgentList []string
|
||||
uaMu sync.RWMutex
|
||||
)
|
||||
|
||||
func init() {
|
||||
go func() {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
log.Warn().Msgf("util: Failed to get online user agents: %v", r)
|
||||
}
|
||||
}()
|
||||
|
||||
agents, err := getOnlineUserAgents()
|
||||
if err != nil {
|
||||
log.Warn().Err(err).Msg("util: Failed to get online user agents")
|
||||
return
|
||||
}
|
||||
|
||||
uaMu.Lock()
|
||||
userAgentList = agents
|
||||
uaMu.Unlock()
|
||||
}()
|
||||
}
|
||||
|
||||
func getOnlineUserAgents() ([]string, error) {
|
||||
link := "https://raw.githubusercontent.com/fake-useragent/fake-useragent/refs/heads/main/src/fake_useragent/data/browsers.jsonl"
|
||||
|
||||
client := &http.Client{
|
||||
Timeout: 10 * time.Second,
|
||||
}
|
||||
response, err := client.Get(link)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer response.Body.Close()
|
||||
|
||||
var agents []string
|
||||
type UserAgent struct {
|
||||
UserAgent string `json:"useragent"`
|
||||
}
|
||||
|
||||
scanner := bufio.NewScanner(response.Body)
|
||||
for scanner.Scan() {
|
||||
line := scanner.Text()
|
||||
var ua UserAgent
|
||||
if err := json.Unmarshal([]byte(line), &ua); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
agents = append(agents, ua.UserAgent)
|
||||
}
|
||||
|
||||
return agents, nil
|
||||
}
|
||||
|
||||
func GetRandomUserAgent() string {
|
||||
uaMu.RLock()
|
||||
defer uaMu.RUnlock()
|
||||
|
||||
if len(userAgentList) > 0 {
|
||||
return userAgentList[rand.Intn(len(userAgentList))]
|
||||
}
|
||||
return UserAgentList[rand.Intn(len(UserAgentList))]
|
||||
}
|
||||
Reference in New Issue
Block a user