|
|
@@ -156,7 +156,7 @@ async function checkLogin(accountData) {
|
|
|
}
|
|
|
} else {
|
|
|
let base64ImgData = await getVerifyCodeImg();
|
|
|
- let codeStr = await tryAutoVerifyCode('baidu', base64ImgData);
|
|
|
+ let codeStr = await tryAutoRecognizeCaptcha('ddddocr', base64ImgData);
|
|
|
if (codeStr) {
|
|
|
userInfo = await doLogin(phone, password, codeStr);
|
|
|
if (userInfo) {
|
|
|
@@ -281,22 +281,24 @@ async function getVerifyCodeImg() {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-async function tryAutoVerifyCode(typeStr, base64Data) {
|
|
|
+async function tryAutoRecognizeCaptcha(typeStr, base64Data) {
|
|
|
lk.log('data:image/png;base64,' + base64Data);
|
|
|
switch (typeStr) {
|
|
|
case 'baidu':
|
|
|
let accessToken = await getBDAccessToken();
|
|
|
if (accessToken) {
|
|
|
base64Data = 'data:image/png;base64,' + base64Data;
|
|
|
- return doVerifyCodeByBDOCR(base64Data, accessToken);
|
|
|
+ return recognizeCaptchaByBDOCR(base64Data, accessToken);
|
|
|
}
|
|
|
case '345api':
|
|
|
base64Data = 'data:image/png;base64,' + base64Data;
|
|
|
- return doVerifyCodeBy345Api(base64Data);
|
|
|
+ return recognizeCaptchaBy345Api(base64Data);
|
|
|
+ case 'ddddocr':
|
|
|
+ return recognizeCaptchaByDdddocr(base64Data);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-async function doVerifyCodeBy345Api(base64Data) {
|
|
|
+async function recognizeCaptchaBy345Api(base64Data) {
|
|
|
return new Promise((resolve, _reject) => {
|
|
|
try {
|
|
|
const headers = {
|
|
|
@@ -353,7 +355,53 @@ async function doVerifyCodeBy345Api(base64Data) {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-async function doVerifyCodeByBDOCR(base64Data, accessToken) {
|
|
|
+async function recognizeCaptchaByDdddocr(base64Data) {
|
|
|
+ return new Promise((resolve, _reject) => {
|
|
|
+ let reqData = {
|
|
|
+ image: encodeURIComponent(base64Data)
|
|
|
+ }
|
|
|
+ let form = lk.objToQueryStr(reqData);
|
|
|
+ let headers = {
|
|
|
+ 'Accept': `application/json`,
|
|
|
+ 'Origin': `https://api.jojo21.com`,
|
|
|
+ 'Connection': `keep-alive`,
|
|
|
+ 'Host': `api.jojo21.com`,
|
|
|
+ 'User-Agent': CommonUserAgent,
|
|
|
+ 'Content-Type': 'application/x-www-form-urlencoded',
|
|
|
+ };
|
|
|
+ let options = {
|
|
|
+ url: 'http://api.jojo21.com/captcha/ddddocr',
|
|
|
+ headers: headers,
|
|
|
+ body: form,
|
|
|
+ };
|
|
|
+
|
|
|
+ lk.log('请求开源识别库ddddocr进行识别');
|
|
|
+ lk.post(options, async (error, _response, data) => {
|
|
|
+ let ret;
|
|
|
+ try {
|
|
|
+ if (error) {
|
|
|
+ lk.log(`验证码识别发生错误`);
|
|
|
+ } else {
|
|
|
+ lk.log(data);
|
|
|
+ let info = JSON.parse(data);
|
|
|
+ if (info && info.code == 1) {
|
|
|
+ ret = info.code_data;
|
|
|
+ lk.log(`验证码识别成功:${info.code_data},识别耗时:${info.require_date}s`);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ lk.log(`验证码识别发生错误`);
|
|
|
+ lk.logErr(e);
|
|
|
+ lk.execFail();
|
|
|
+ } finally {
|
|
|
+ resolve(ret);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+async function recognizeCaptchaByBDOCR(base64Data, accessToken) {
|
|
|
return new Promise((resolve, _reject) => {
|
|
|
let reqData = {
|
|
|
image: encodeURIComponent(base64Data),
|
|
|
@@ -402,8 +450,6 @@ async function doVerifyCodeByBDOCR(base64Data, accessToken) {
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* 使用 AK,SK 生成鉴权签名(Access Token)
|
|
|
* @return string 鉴权签名信息(Access Token)
|