{"record":{"id":"a0b26ca4a9027d9a","repo":"AlistGo/alist","slug":"login-err-s","errorCode":null,"errorMessage":"login err: %s","messagePattern":"login err: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"drivers/lanzou/util.go","lineNumber":189,"sourceCode":"\t\tif acwScV2 != \"\" {\n\t\t\treq.SetCookie(&http.Cookie{Name: \"acw_sc__v2\", Value: acwScV2})\n\t\t}\n\t\tresp, err = req.Post(loginURL)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif findAcwScV2Reg.Match(resp.Body()) {\n\t\t\tvs, e := CalcAcwScV2(resp.String())\n\t\t\tif e != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"login err: %w, data: %s\", e, resp.Body())\n\t\t\t}\n\t\t\tacwScV2 = vs\n\t\t\tcontinue\n\t\t}\n\t\tbreak\n\t}\n\tif utils.Json.Get(resp.Body(), \"zt\").ToInt() != 1 {\n\t\treturn nil, fmt.Errorf(\"login err: %s\", resp.Body())\n\t}\n\td.Cookie = CookieToString(resp.Cookies())\n\treturn resp.Cookies(), nil\n}\n\n/*\n通过cookie获取数据\n*/\n\n// 获取文件和文件夹,获取到的文件大小、更改时间不可信\nfunc (d *LanZou) GetAllFiles(folderID string) ([]model.Obj, error) {\n\tfolders, err := d.GetFolders(folderID)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfiles, err := d.GetFiles(folderID)\n\tif err != nil {\n\t\treturn nil, err","sourceCodeStart":171,"sourceCodeEnd":207,"githubUrl":"https://github.com/AlistGo/alist/blob/843d9dc8149126976b2625911e45a4d3ffd6f2f5/drivers/lanzou/util.go#L171-L207","documentation":"LanZou login completed at HTTP level (and any acw_sc__v2 challenge was passed) but the response JSON's 'zt' field is not 1, meaning the server rejected the login. The raw body is embedded so the server's reason is visible.","triggerScenarios":"Wrong username/password for the LanZou account mode; account locked/disabled; CAPTCHA required after repeated failures; LanZou changed the mlogin.php response semantics.","commonSituations":"Credentials changed or mistyped in the storage config; too many automated login attempts (the single-flight flag limits concurrency but retries still count); account flagged for automation.","solutions":["Read the embedded body — LanZou usually states 'wrong password' or 'verification required'","Log into up.woozooo.com manually with the same credentials to confirm they work and clear any captcha","Update credentials in the OpenList storage config and reload the storage"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if d.Username == \"\" || d.Password == \"\" {\n    return fmt.Errorf(\"lanzou account mode requires username and password\")\n}","typeGuard":null,"tryCatchPattern":"if _, err := d.Login(); err != nil {\n    if strings.Contains(err.Error(), \"login err:\") {\n        // body is embedded: inspect zt/reason text (wrong password, captcha, lock)\n        return fmt.Errorf(\"lanzou login rejected: %w\", err)\n    }\n    return err\n}","preventionTips":["Verify manual login at up.woozooo.com before configuring account mode","Clear any pending captcha by logging in via browser with the same credentials","Update stored credentials promptly after password changes"],"tags":["lanzou","authentication","invalid-credentials","openlist"],"backgroundTag":null,"analyzedSha":"843d9dc8149126976b2625911e45a4d3ffd6f2f5","analyzedAt":"2026-08-15T12:14:11.722Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}