From a498091aef92533e437627fa9b06bd5dca85df6f Mon Sep 17 00:00:00 2001 From: Dgs <47767754+dgscyg@users.noreply.github.com> Date: Thu, 31 Jul 2025 09:32:22 +0800 Subject: [PATCH] fix(123&&123_share): fix link request header referer (#915) --- drivers/123/driver.go | 22 ++++++++-------------- drivers/123_share/driver.go | 22 ++++++++-------------- 2 files changed, 16 insertions(+), 28 deletions(-) diff --git a/drivers/123/driver.go b/drivers/123/driver.go index 0ecaf45c..0c7078a7 100644 --- a/drivers/123/driver.go +++ b/drivers/123/driver.go @@ -64,14 +64,6 @@ func (d *Pan123) List(ctx context.Context, dir model.Obj, args model.ListArgs) ( func (d *Pan123) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*model.Link, error) { if f, ok := file.(File); ok { - //var resp DownResp - var headers map[string]string - if !utils.IsLocalIPAddr(args.IP) { - headers = map[string]string{ - //"X-Real-IP": "1.1.1.1", - "X-Forwarded-For": args.IP, - } - } data := base.Json{ "driveId": 0, "etag": f.Etag, @@ -83,25 +75,27 @@ func (d *Pan123) Link(ctx context.Context, file model.Obj, args model.LinkArgs) } resp, err := d.Request(DownloadInfo, http.MethodPost, func(req *resty.Request) { - req.SetBody(data).SetHeaders(headers) + req.SetBody(data) }, nil) if err != nil { return nil, err } downloadUrl := utils.Json.Get(resp, "data", "DownloadUrl").ToString() - u, err := url.Parse(downloadUrl) + ou, err := url.Parse(downloadUrl) if err != nil { return nil, err } - nu := u.Query().Get("params") + u_ := ou.String() + nu := ou.Query().Get("params") if nu != "" { du, _ := base64.StdEncoding.DecodeString(nu) - u, err = url.Parse(string(du)) + u, err := url.Parse(string(du)) if err != nil { return nil, err } + u_ = u.String() } - u_ := u.String() + log.Debug("download url: ", u_) res, err := base.NoRedirectClient.R().SetHeader("Referer", "https://www.123pan.com/").Get(u_) if err != nil { @@ -118,7 +112,7 @@ func (d *Pan123) Link(ctx context.Context, file model.Obj, args model.LinkArgs) link.URL = utils.Json.Get(res.Body(), "data", "redirect_url").ToString() } link.Header = http.Header{ - "Referer": []string{"https://www.123pan.com/"}, + "Referer": []string{fmt.Sprintf("%s://%s/", ou.Scheme, ou.Host)}, } return &link, nil } else { diff --git a/drivers/123_share/driver.go b/drivers/123_share/driver.go index 1f7b97a3..b769bfe0 100644 --- a/drivers/123_share/driver.go +++ b/drivers/123_share/driver.go @@ -70,14 +70,6 @@ func (d *Pan123Share) List(ctx context.Context, dir model.Obj, args model.ListAr func (d *Pan123Share) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*model.Link, error) { // TODO return link of file, required if f, ok := file.(File); ok { - //var resp DownResp - var headers map[string]string - if !utils.IsLocalIPAddr(args.IP) { - headers = map[string]string{ - //"X-Real-IP": "1.1.1.1", - "X-Forwarded-For": args.IP, - } - } data := base.Json{ "shareKey": d.ShareKey, "SharePwd": d.SharePwd, @@ -87,25 +79,27 @@ func (d *Pan123Share) Link(ctx context.Context, file model.Obj, args model.LinkA "size": f.Size, } resp, err := d.request(DownloadInfo, http.MethodPost, func(req *resty.Request) { - req.SetBody(data).SetHeaders(headers) + req.SetBody(data) }, nil) if err != nil { return nil, err } downloadUrl := utils.Json.Get(resp, "data", "DownloadURL").ToString() - u, err := url.Parse(downloadUrl) + ou, err := url.Parse(downloadUrl) if err != nil { return nil, err } - nu := u.Query().Get("params") + u_ := ou.String() + nu := ou.Query().Get("params") if nu != "" { du, _ := base64.StdEncoding.DecodeString(nu) - u, err = url.Parse(string(du)) + u, err := url.Parse(string(du)) if err != nil { return nil, err } + u_ = u.String() } - u_ := u.String() + log.Debug("download url: ", u_) res, err := base.NoRedirectClient.R().SetHeader("Referer", "https://www.123pan.com/").Get(u_) if err != nil { @@ -122,7 +116,7 @@ func (d *Pan123Share) Link(ctx context.Context, file model.Obj, args model.LinkA link.URL = utils.Json.Get(res.Body(), "data", "redirect_url").ToString() } link.Header = http.Header{ - "Referer": []string{"https://www.123pan.com/"}, + "Referer": []string{fmt.Sprintf("%s://%s/", ou.Scheme, ou.Host)}, } return &link, nil }