From e8355781e0959da26a82d105370b633f172e6f9a Mon Sep 17 00:00:00 2001 From: hjdhnx Date: Thu, 29 Sep 2022 16:58:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=8A=A8=E8=BF=87?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "txt/muban/drpy\346\250\241\346\235\277.js" | 70 +++++++++++++++++---- 1 file changed, 57 insertions(+), 13 deletions(-) diff --git "a/txt/muban/drpy\346\250\241\346\235\277.js" "b/txt/muban/drpy\346\250\241\346\235\277.js" index e634315..f09175e 100644 --- "a/txt/muban/drpy\346\250\241\346\235\277.js" +++ "b/txt/muban/drpy\346\250\241\346\235\277.js" @@ -5,18 +5,6 @@ import ch from './cheerio.min.js'; // var rule = Object.assign(模板.首图2,{ // host: 'https://www.zbkk.net', // }); - -function readFile(filePath){ - filePath = filePath||'./uri.min.js'; - var fd = os.open(filePath); - var buffer = new ArrayBuffer(1024); - var len = os.read(fd, buffer, 0, 1024); - console.log(len); - let text = String.fromCharCode.apply(null, new Uint8Array(buffer)); - console.log(text); - return text -} - const key = 'drpy_zbk'; let rule = { @@ -72,6 +60,8 @@ const RULE_CK = 'cookie'; // 源cookie的key值 const KEY = typeof(key)!=='undefined'&&key?key:'drpy_'+rule.title; // 源的唯一标识 const CATE_EXCLUDE = '首页|留言|APP|下载|资讯|新闻|动态'; const TAB_EXCLUDE = '猜你|喜欢|APP|下载|剧情|热播'; +const OCR_RETRY = 3;//ocr验证重试次数 +const OCR_API = 'http://dm.mudery.com:10000';//ocr在线识别接口 var MY_URL; // 全局注入变量,pd函数需要 /** 处理一下 rule规则关键字段没传递的情况 **/ @@ -84,13 +74,62 @@ rule.searchUrl = rule.searchUrl||''; /*** 后台需要实现的java方法并注入到js中 ***/ +/** + * 读取本地文件->应用程序目录 + * @param filePath + * @returns {string} + */ +function readFile(filePath){ + filePath = filePath||'./uri.min.js'; + var fd = os.open(filePath); + var buffer = new ArrayBuffer(1024); + var len = os.read(fd, buffer, 0, 1024); + console.log(len); + let text = String.fromCharCode.apply(null, new Uint8Array(buffer)); + console.log(text); + return text +} + +/** + * 验证码识别逻辑,需要java实现(js没有bytes类型,无法调用后端的传递图片二进制获取验证码文本的接口) + * @type {{api: string, classification: (function(*=): string)}} + */ +var OcrApi={ + api:OCR_API, + classification:function (img){ // img是byte类型,这里不方便搞啊 + let code = ''; + try { + code = request(this.api,{data:img,headers:{'user-agent':PC_UA},'method':'POST'}); + }catch (e) {} + return code + } +}; /** * 验证码识别,暂未实现 * @param url 验证码图片链接 * @returns {string} 验证成功后的cookie */ function verifyCode(url){ + let cnt = 0; + let host = getHome(url); let cookie = ''; + while (cnt < OCR_RETRY){ + try{ + // let obj = {headers:headers,timeout:timeout}; + let img = request(`${host}/index.php/verify/index.html`); + let code = OcrApi.classification(img); + console.log(`第${cnt+1}次验证码识别结果:${code}`); + let html = request(`${host}/index.php/ajax/verify_check?type=search&verify=${code}`,{'method':'POST'}); + html = JSON.parse(html); + if(html.msg === 'ok'){ + cookie = ''; + return cookie // 需要返回cookie + } + }catch (e) { + console.log(`第${cnt+1}次验证码提交失败`) + } + cnt+=1 + } return cookie } @@ -522,7 +561,12 @@ function searchParse(searchObj) { if (html) { if(/系统安全验证|输入验证码/.test(html)){ let cookie = verifyCode(MY_URL); - setItem(RULE_CK,cookie); + if(cookie){ + console.log(`本次成功过验证,cookie:${cookie}`); + setItem(RULE_CK,cookie); + }else{ + console.log(`本次自动过搜索验证失败,cookie:${cookie}`); + } // obj.headers['Cookie'] = cookie; html = getHtml(MY_URL); } -- GitLab