From d1de7ed20f6204a7bdaf2cfde5a118f3fef0d609 Mon Sep 17 00:00:00 2001 From: jyxjjj <773933146@qq.com> Date: Thu, 27 Nov 2025 17:45:29 +0800 Subject: [PATCH] refactor(userAgent): merge all userAgent into base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. change var to const 2. remove duplicated ua definetion after original Resty R 3. upgrade Chrome and OS versions --- drivers/189/util.go | 2 +- drivers/aliyundrive_open/util.go | 1 - drivers/baidu_netdisk/util.go | 1 - drivers/base/client.go | 5 ++++- drivers/doubao/util.go | 2 +- drivers/doubao_share/util.go | 2 +- drivers/dropbox/util.go | 30 ++++++++++++++---------------- drivers/google_drive/util.go | 1 - drivers/ilanzou/driver.go | 3 +-- drivers/ilanzou/util.go | 5 ++--- drivers/lanzou/driver.go | 2 +- drivers/lanzou/meta.go | 2 +- drivers/mediafire/meta.go | 13 ++++++------- drivers/onedrive/util.go | 1 - drivers/quark_open/util.go | 1 - drivers/yandex_disk/util.go | 1 - 16 files changed, 32 insertions(+), 40 deletions(-) diff --git a/drivers/189/util.go b/drivers/189/util.go index 6e0682ea7..bb9a6adb4 100644 --- a/drivers/189/util.go +++ b/drivers/189/util.go @@ -107,7 +107,7 @@ import ( // res, err = d.client.R(). // SetHeaders(map[string]string{ // "lt": lt, -// "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36", +// "User-Agent": base.UserAgentNT, // "Referer": "https://open.e.189.cn/", // "accept": "application/json;charset=UTF-8", // }).SetFormData(map[string]string{ diff --git a/drivers/aliyundrive_open/util.go b/drivers/aliyundrive_open/util.go index d171a7909..22112332a 100644 --- a/drivers/aliyundrive_open/util.go +++ b/drivers/aliyundrive_open/util.go @@ -38,7 +38,6 @@ func (d *AliyundriveOpen) _refreshToken(ctx context.Context) (string, string, er return "", "", err } _, err = base.RestyClient.R(). - SetHeader("User-Agent", "Mozilla/5.0 (Macintosh; Apple macOS 15_5) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/138.0.0.0 Openlist/425.6.30"). SetResult(&resp). SetQueryParams(map[string]string{ "refresh_ui": d.RefreshToken, diff --git a/drivers/baidu_netdisk/util.go b/drivers/baidu_netdisk/util.go index 70c1f4c2b..40e99c153 100644 --- a/drivers/baidu_netdisk/util.go +++ b/drivers/baidu_netdisk/util.go @@ -42,7 +42,6 @@ func (d *BaiduNetdisk) _refreshToken() error { ErrorMessage string `json:"text"` } _, err := base.RestyClient.R(). - SetHeader("User-Agent", "Mozilla/5.0 (Macintosh; Apple macOS 15_5) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/138.0.0.0 Openlist/425.6.30"). SetResult(&resp). SetQueryParams(map[string]string{ "refresh_ui": d.RefreshToken, diff --git a/drivers/base/client.go b/drivers/base/client.go index 819d1d789..196b078da 100644 --- a/drivers/base/client.go +++ b/drivers/base/client.go @@ -15,9 +15,12 @@ var ( RestyClient *resty.Client HttpClient *http.Client ) -var UserAgent = "Mozilla/5.0 (Macintosh; Apple macOS 15_5) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/138.0.0.0" + var DefaultTimeout = time.Second * 30 +const UserAgent = "Mozilla/5.0 (Macintosh; Apple macOS 26_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/425.6.30" +const UserAgentNT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/425.6.30" + func InitClient() { NoRedirectClient = resty.New().SetRedirectPolicy( resty.RedirectPolicyFunc(func(req *http.Request, via []*http.Request) error { diff --git a/drivers/doubao/util.go b/drivers/doubao/util.go index 686608971..ca463a6e6 100644 --- a/drivers/doubao/util.go +++ b/drivers/doubao/util.go @@ -62,7 +62,7 @@ const ( VideoDataType = "video" DefaultChunkSize = int64(5 * 1024 * 1024) // 5MB MaxRetryAttempts = 3 // 最大重试次数 - UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36" + UserAgent = base.UserAgentNT Region = "cn-north-1" UploadTimeout = 3 * time.Minute ) diff --git a/drivers/doubao_share/util.go b/drivers/doubao_share/util.go index 8e9887152..a52130305 100644 --- a/drivers/doubao_share/util.go +++ b/drivers/doubao_share/util.go @@ -43,7 +43,7 @@ const ( FileDataType = "file" ImgDataType = "image" VideoDataType = "video" - UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36" + UserAgent = base.UserAgentNT ) func (d *DoubaoShare) request(path string, method string, callback base.ReqCallback, resp interface{}) ([]byte, error) { diff --git a/drivers/dropbox/util.go b/drivers/dropbox/util.go index d7404a429..ac0bcceeb 100644 --- a/drivers/dropbox/util.go +++ b/drivers/dropbox/util.go @@ -24,7 +24,6 @@ func (d *Dropbox) refreshToken() error { ErrorMessage string `json:"text"` } _, err := base.RestyClient.R(). - SetHeader("User-Agent", "Mozilla/5.0 (Macintosh; Apple macOS 15_5) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/138.0.0.0 Openlist/425.6.30"). SetResult(&resp). SetQueryParams(map[string]string{ "refresh_ui": d.RefreshToken, @@ -176,12 +175,12 @@ func (d *Dropbox) finishUploadSession(ctx context.Context, toPath string, offset req.Header.Set("Content-Type", "application/octet-stream") req.Header.Set("Authorization", "Bearer "+d.AccessToken) if d.RootNamespaceId != "" { - apiPathRootJson, err := d.buildPathRootHeader() - if err != nil { - return err + apiPathRootJson, err := d.buildPathRootHeader() + if err != nil { + return err + } + req.Header.Set("Dropbox-API-Path-Root", apiPathRootJson) } - req.Header.Set("Dropbox-API-Path-Root", apiPathRootJson) -} uploadFinishArgs := UploadFinishArgs{ Commit: struct { @@ -227,12 +226,12 @@ func (d *Dropbox) startUploadSession(ctx context.Context) (string, error) { req.Header.Set("Content-Type", "application/octet-stream") req.Header.Set("Authorization", "Bearer "+d.AccessToken) if d.RootNamespaceId != "" { - apiPathRootJson, err := d.buildPathRootHeader() - if err != nil { - return "", err + apiPathRootJson, err := d.buildPathRootHeader() + if err != nil { + return "", err + } + req.Header.Set("Dropbox-API-Path-Root", apiPathRootJson) } - req.Header.Set("Dropbox-API-Path-Root", apiPathRootJson) -} req.Header.Set("Dropbox-API-Arg", "{\"close\":false}") res, err := base.HttpClient.Do(req) @@ -249,9 +248,8 @@ func (d *Dropbox) startUploadSession(ctx context.Context) (string, error) { } func (d *Dropbox) buildPathRootHeader() (string, error) { - return utils.Json.MarshalToString(map[string]interface{}{ - ".tag": "root", - "root": d.RootNamespaceId, - }) + return utils.Json.MarshalToString(map[string]interface{}{ + ".tag": "root", + "root": d.RootNamespaceId, + }) } - diff --git a/drivers/google_drive/util.go b/drivers/google_drive/util.go index e2e609a89..13cf2f07f 100644 --- a/drivers/google_drive/util.go +++ b/drivers/google_drive/util.go @@ -58,7 +58,6 @@ func (d *GoogleDrive) refreshToken() error { ErrorMessage string `json:"text"` } _, err := base.RestyClient.R(). - SetHeader("User-Agent", "Mozilla/5.0 (Macintosh; Apple macOS 15_5) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/138.0.0.0 Openlist/425.6.30"). SetResult(&resp). SetQueryParams(map[string]string{ "refresh_ui": d.RefreshToken, diff --git a/drivers/ilanzou/driver.go b/drivers/ilanzou/driver.go index 2335cecde..01428fa0c 100644 --- a/drivers/ilanzou/driver.go +++ b/drivers/ilanzou/driver.go @@ -152,8 +152,7 @@ func (d *ILanZou) Link(ctx context.Context, file model.Obj, args model.LinkArgs) req := base.NoRedirectClient.R() req.SetHeaders(map[string]string{ - "Referer": d.conf.site + "/", - "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0", + "Referer": d.conf.site + "/", }) if d.Addition.Ip != "" { req.SetHeader("X-Forwarded-For", d.Addition.Ip) diff --git a/drivers/ilanzou/util.go b/drivers/ilanzou/util.go index 3d26ebde2..ea03cfd02 100644 --- a/drivers/ilanzou/util.go +++ b/drivers/ilanzou/util.go @@ -71,9 +71,8 @@ func (d *ILanZou) request(pathname, method string, callback base.ReqCallback, pr req.SetHeaders(map[string]string{ "Origin": d.conf.site, "Referer": d.conf.site + "/", - "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0", - "Accept-Encoding": "gzip, deflate, br, zstd", - "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6,mt;q=0.5", + "Accept-Encoding": "gzip", + "Accept-Language": "zh-CN,zh;q=0.9,en-US,en;q=0.8", }) if d.Addition.Ip != "" { diff --git a/drivers/lanzou/driver.go b/drivers/lanzou/driver.go index 6fa269930..01d7c1ece 100644 --- a/drivers/lanzou/driver.go +++ b/drivers/lanzou/driver.go @@ -31,7 +31,7 @@ func (d *LanZou) GetAddition() driver.Additional { func (d *LanZou) Init(ctx context.Context) (err error) { if d.UserAgent == "" { - d.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.39 (KHTML, like Gecko) Chrome/89.0.4389.111 Safari/537.39" + d.UserAgent = base.UserAgentNT } switch d.Type { case "account": diff --git a/drivers/lanzou/meta.go b/drivers/lanzou/meta.go index 50d88082e..fca9b88f5 100644 --- a/drivers/lanzou/meta.go +++ b/drivers/lanzou/meta.go @@ -17,7 +17,7 @@ type Addition struct { SharePassword string `json:"share_password"` BaseUrl string `json:"baseUrl" required:"true" default:"https://pc.woozooo.com" help:"basic URL for file operation"` ShareUrl string `json:"shareUrl" required:"true" default:"https://pan.lanzoui.com" help:"used to get the sharing page"` - UserAgent string `json:"user_agent" required:"true" default:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.39 (KHTML, like Gecko) Chrome/89.0.4389.111 Safari/537.39"` + UserAgent string `json:"user_agent" required:"true" default:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.39 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.39"` RepairFileInfo bool `json:"repair_file_info" help:"To use webdav, you need to enable it"` } diff --git a/drivers/mediafire/meta.go b/drivers/mediafire/meta.go index 78a5b9b14..64bf1314a 100644 --- a/drivers/mediafire/meta.go +++ b/drivers/mediafire/meta.go @@ -15,6 +15,7 @@ Final opts by @Suyunjing @j2rong4cn @KirCute @Da3zKi7 */ import ( + "github.com/OpenListTeam/OpenList/v4/drivers/base" "github.com/OpenListTeam/OpenList/v4/internal/driver" "github.com/OpenListTeam/OpenList/v4/internal/op" ) @@ -49,13 +50,11 @@ var config = driver.Config{ func init() { op.RegisterDriver(func() driver.Driver { return &Mediafire{ - appBase: "https://app.mediafire.com", - apiBase: "https://www.mediafire.com/api/1.5", - hostBase: "https://www.mediafire.com", - maxRetries: 3, - secChUa: "\"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"139\", \"Google Chrome\";v=\"139\"", - secChUaPlatform: "Windows", - userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36", + appBase: "https://app.mediafire.com", + apiBase: "https://www.mediafire.com/api/1.5", + hostBase: "https://www.mediafire.com", + maxRetries: 3, + userAgent: base.UserAgent, } }) } diff --git a/drivers/onedrive/util.go b/drivers/onedrive/util.go index 820f740de..816989665 100644 --- a/drivers/onedrive/util.go +++ b/drivers/onedrive/util.go @@ -82,7 +82,6 @@ func (d *Onedrive) _refreshToken() error { ErrorMessage string `json:"text"` } _, err := base.RestyClient.R(). - SetHeader("User-Agent", "Mozilla/5.0 (Macintosh; Apple macOS 15_5) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/138.0.0.0 Openlist/425.6.30"). SetResult(&resp). SetQueryParams(map[string]string{ "refresh_ui": d.RefreshToken, diff --git a/drivers/quark_open/util.go b/drivers/quark_open/util.go index 78f4e4a2c..6f717c2a8 100644 --- a/drivers/quark_open/util.go +++ b/drivers/quark_open/util.go @@ -441,7 +441,6 @@ func (d *QuarkOpen) _refreshToken() (string, string, error) { u := d.APIAddress var resp RefreshTokenOnlineAPIResp _, err := base.RestyClient.R(). - SetHeader("User-Agent", "Mozilla/5.0 (Macintosh; Apple macOS 15_5) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/138.0.0.0 Openlist/425.6.30"). SetResult(&resp). SetQueryParams(map[string]string{ "refresh_ui": d.RefreshToken, diff --git a/drivers/yandex_disk/util.go b/drivers/yandex_disk/util.go index e6f4cab06..2da2cb73a 100644 --- a/drivers/yandex_disk/util.go +++ b/drivers/yandex_disk/util.go @@ -23,7 +23,6 @@ func (d *YandexDisk) refreshToken() error { ErrorMessage string `json:"text"` } _, err := base.RestyClient.R(). - SetHeader("User-Agent", "Mozilla/5.0 (Macintosh; Apple macOS 15_5) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/138.0.0.0 Openlist/425.6.30"). SetResult(&resp). SetQueryParams(map[string]string{ "refresh_ui": d.RefreshToken,