From f5ee38a40af19670c4eaf54b3e859ec84e88359b Mon Sep 17 00:00:00 2001 From: xiaokai Date: Thu, 29 Aug 2024 16:12:55 +0700 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=8A=A8=E9=AA=8C?= =?UTF-8?q?=E8=AF=81api=20=E7=AC=AC=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- drivers/pikpak/meta.go | 1 + drivers/pikpak/types.go | 6 ++++++ drivers/pikpak/util.go | 20 +++++++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/drivers/pikpak/meta.go b/drivers/pikpak/meta.go index d27cee32..df480fb1 100644 --- a/drivers/pikpak/meta.go +++ b/drivers/pikpak/meta.go @@ -14,6 +14,7 @@ type Addition struct { CaptchaToken string `json:"captcha_token" default:""` DeviceID string `json:"device_id" required:"false" default:""` DisableMediaLink bool `json:"disable_media_link" default:"true"` + CaptchaApi string `json:"captcha_api" default:""` } var config = driver.Config{ diff --git a/drivers/pikpak/types.go b/drivers/pikpak/types.go index 2a959ebf..5b38f79d 100644 --- a/drivers/pikpak/types.go +++ b/drivers/pikpak/types.go @@ -195,3 +195,9 @@ type CaptchaTokenResponse struct { ExpiresIn int64 `json:"expires_in"` Url string `json:"url"` } + +type CaptchaApiResponse struct { + Token string `json:"token"` + Code int64 `json:"code"` + Url string `json:"url_received"` +} diff --git a/drivers/pikpak/util.go b/drivers/pikpak/util.go index d3371a25..22e3c7ed 100644 --- a/drivers/pikpak/util.go +++ b/drivers/pikpak/util.go @@ -397,7 +397,25 @@ func (d *PikPak) refreshCaptchaToken(action string, metas map[string]string) err } if resp.Url != "" { - return fmt.Errorf(`need verify: Click Here`, resp.Url) + // return fmt.Errorf(`need verify: Click Here`, resp.Url) + if d.Addition.CaptchaApi != "" { + var e ErrResp + var captcha_resp CaptchaApiResponse + _, e := d.request(d.Addition.CaptchaApi, http.MethodGet, func(req *resty.Request) { + req.SetQueryParams("url", resp.Url) + }, &captcha_resp) + if e.IsError() { + return errors.New(e.Error()) + } + if captcha_resp.Code == 200 { + d.Common.SetCaptchaToken(captcha_resp.Token) + return nil + } else { + return errors.New("验证失败") + } + } else { + return errors.New("没有配置自动验证Server") + } } if d.Common.RefreshCTokenCk != nil {