mirror of https://github.com/Xhofe/alist
🎇 add ocr for 189
parent
a2c7ff3262
commit
26ce001782
|
@ -219,6 +219,14 @@ func InitSettings() {
|
||||||
Access: model.PUBLIC,
|
Access: model.PUBLIC,
|
||||||
Group: model.FRONT,
|
Group: model.FRONT,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Key: "ocr api",
|
||||||
|
Value: "https://api.xhofe.top/ocr/file/json",
|
||||||
|
Description: "Used to identify verification codes",
|
||||||
|
Type: "string",
|
||||||
|
Access: model.PRIVATE,
|
||||||
|
Group: model.BACK,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
for i, _ := range settings {
|
for i, _ := range settings {
|
||||||
v := settings[i]
|
v := settings[i]
|
||||||
|
|
|
@ -78,6 +78,7 @@ var (
|
||||||
"check parent folder", "check down link", "WebDAV username", "WebDAV password",
|
"check parent folder", "check down link", "WebDAV username", "WebDAV password",
|
||||||
"Visitor WebDAV username", "Visitor WebDAV password",
|
"Visitor WebDAV username", "Visitor WebDAV password",
|
||||||
"default page size", "load type",
|
"default page size", "load type",
|
||||||
|
"ocr api",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -153,6 +153,29 @@ func (driver Cloud189) Login(account *model.Account) error {
|
||||||
vCodeRS := ""
|
vCodeRS := ""
|
||||||
if vCodeID != "" {
|
if vCodeID != "" {
|
||||||
// need ValidateCode
|
// need ValidateCode
|
||||||
|
log.Debugf("try to identify verification codes")
|
||||||
|
timeStamp := strconv.FormatInt(time.Now().UnixNano()/1e6, 10)
|
||||||
|
u := "https://open.e.189.cn/api/logbox/oauth2/picCaptcha.do?token=" + vCodeID + timeStamp
|
||||||
|
imgRes, err := client.R().SetHeaders(map[string]string{
|
||||||
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/76.0",
|
||||||
|
"Referer": "https://open.e.pan.cn/",
|
||||||
|
"Sec-Fetch-Dest": "image",
|
||||||
|
"Sec-Fetch-Mode": "no-cors",
|
||||||
|
"Sec-Fetch-Site": "same-origin",
|
||||||
|
}).Get(u)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
vRes, err := client.R().SetMultipartField(
|
||||||
|
"image", "validateCode.png", "image/png", bytes.NewReader(imgRes.Body())).
|
||||||
|
Post(conf.GetStr("ocr api"))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if jsoniter.Get(vRes.Body(), "status").ToInt() != 200 {
|
||||||
|
return errors.New("ocr error:" + jsoniter.Get(vRes.Body(), "msg").ToString())
|
||||||
|
}
|
||||||
|
vCodeRS = jsoniter.Get(vRes.Body(), "result").ToString()
|
||||||
}
|
}
|
||||||
userRsa := RsaEncode([]byte(account.Username), jRsakey)
|
userRsa := RsaEncode([]byte(account.Username), jRsakey)
|
||||||
passwordRsa := RsaEncode([]byte(account.Password), jRsakey)
|
passwordRsa := RsaEncode([]byte(account.Password), jRsakey)
|
||||||
|
|
Loading…
Reference in New Issue