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 {