From 7266fea29914a74e62c71dc85be42147fdaff051 Mon Sep 17 00:00:00 2001 From: touchscale <11134128+touchscale_admin@user.noreply.gitee.com> Date: Sun, 14 May 2023 21:20:35 +0000 Subject: [PATCH 1/4] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E7=A0=81=E8=87=AA=E5=8A=A8=E8=8E=B7=E5=8F=96?= =?UTF-8?q?ticket?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: touchscale <11134128+touchscale_admin@user.noreply.gitee.com> --- lib/events/login.js | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/events/login.js b/lib/events/login.js index 8f5bb9f..ce3d9b7 100644 --- a/lib/events/login.js +++ b/lib/events/login.js @@ -73,13 +73,18 @@ export default class loginEvent extends EventListener { type: 'list', name: 'type', message: '触发滑动验证,需要获取ticket通过验证,请选择获取方式:', - choices: ['1.手动获取ticket', '2.滑动验证app请求码获取'] + choices: ['0.自动获取ticket', '1.手动获取ticket', '2.滑动验证app请求码获取'] } ]) await common.sleep(200) let ticket + if (ret.type == '0.自动获取ticket') { + ticket = await this.getTicket(event.url) + if (!ticket) console.log('\n请求错误,返回手动获取ticket方式\n') + } + if (ret.type == '2.滑动验证app请求码获取') { ticket = await this.requestCode(event.url) if (!ticket) console.log('\n请求错误,返回手动获取ticket方式\n') @@ -103,6 +108,27 @@ export default class loginEvent extends EventListener { this.client.submitSlider(ticket.trim()) } + async getTicket (url) { + let req = `https://hlhs-nb.cn/captcha/slider?key=${Bot.uin}` + await fetch(req, { + method: 'POST', + body: JSON.stringify({ url }) + }) + + console.log('\n----请打开下方链接并在2分钟内进行验证----') + console.log(`${logger.green(req)}\n----完成后将自动进行登录----`) + + for (let i = 0; i < 40; i++) { + let res = await fetch(req, { + method: 'POST', + body: JSON.stringify({ submit: Bot.uin }) + }) + res = await res.json() + if (res.data?.ticket) return res.data.ticket + await common.sleep(3000) + } + } + async requestCode (url) { let txhelper = { url: url.replace('ssl.captcha.qq.com', 'txhelper.glitch.me') From 1f08cca1ba397647d53b2d131593a3b7b7f87790 Mon Sep 17 00:00:00 2001 From: touchscale <11134128+touchscale_admin@user.noreply.gitee.com> Date: Tue, 16 May 2023 23:32:40 +0000 Subject: [PATCH 2/4] update package.json. Signed-off-by: touchscale <11134128+touchscale_admin@user.noreply.gitee.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1ea1feb..cbf3444 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "node-xlsx": "^0.21.2", "oicq": "^2.3.1", "pm2": "^5.3.0", - "puppeteer": "^20.1.2", + "puppeteer": "^20.2.1", "redis": "^4.6.6", "sequelize": "^6.31.1", "sqlite3": "^5.1.6", From 41bdaf5b55e339976ef9e84462c9a6bcdb645e1f Mon Sep 17 00:00:00 2001 From: touchscale <11134128+touchscale_admin@user.noreply.gitee.com> Date: Wed, 17 May 2023 09:43:19 +0000 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D#=E6=98=9F=E9=93=81?= =?UTF-8?q?=E5=85=AC=E5=91=8A/=E8=B5=84=E8=AE=AF/=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E6=8A=A5=E9=94=99puppeteer.browserInit=20is=20not=20a=20functi?= =?UTF-8?q?on?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: touchscale <11134128+touchscale_admin@user.noreply.gitee.com> --- plugins/genshin/model/srmysNews.js | 79 ++---------------------------- 1 file changed, 3 insertions(+), 76 deletions(-) diff --git a/plugins/genshin/model/srmysNews.js b/plugins/genshin/model/srmysNews.js index 934e91b..8027f4c 100644 --- a/plugins/genshin/model/srmysNews.js +++ b/plugins/genshin/model/srmysNews.js @@ -44,86 +44,13 @@ export default class MysNews extends base { const param = await this.newsDetail(postId) - const img = await this.rander(param) + const img = await this.render(param) return await this.replyMsg(img, `崩坏星穹铁道${typeName}:${param.data.post.subject}`) } - async rander (param) { - const pageHeight = 7000 - - await puppeteer.browserInit() - - if (!puppeteer.browser) return false - - const savePath = puppeteer.dealTpl('mysNews', param) - if (!savePath) return false - - const page = await puppeteer.browser.newPage() - try { - await page.goto(`file://${_path}${lodash.trim(savePath, '.')}`, { timeout: 120000 }) - const body = await page.$('#container') || await page.$('body') - const boundingBox = await body.boundingBox() - - const num = Math.round(boundingBox.height / pageHeight) || 1 - - if (num > 1) { - await page.setViewport({ - width: boundingBox.width, - height: pageHeight + 100 - }) - } - - const img = [] - for (let i = 1; i <= num; i++) { - const randData = { - type: 'jpeg', - quality: 90 - } - - if (i != 1 && i == num) { - await page.setViewport({ - width: boundingBox.width, - height: parseInt(boundingBox.height) - pageHeight * (num - 1) - }) - } - - if (i != 1 && i <= num) { - await page.evaluate(() => window.scrollBy(0, 7000)) - } - - let buff - if (num == 1) { - buff = await body.screenshot(randData) - } else { - buff = await page.screenshot(randData) - } - - if (num > 2) await common.sleep(200) - - puppeteer.renderNum++ - /** 计算图片大小 */ - const kb = (buff.length / 1024).toFixed(2) + 'kb' - - logger.mark(`[图片生成][${this.model}][${puppeteer.renderNum}次] ${kb}`) - - img.push(segment.image(buff)) - } - - await page.close().catch((err) => logger.error(err)) - - if (num > 1) { - logger.mark(`[图片生成][${this.model}] 处理完成`) - } - return img - } catch (error) { - logger.error(`图片生成失败:${this.model}:${error}`) - /** 关闭浏览器 */ - if (puppeteer.browser) { - await puppeteer.browser.close().catch((err) => logger.error(err)) - } - puppeteer.browser = false - } + async render (param) { + return await puppeteer.screenshots(this.model, param) } async newsDetail (postId) { From 5641775a2057db482931ca078a1b70ca5ffac8c1 Mon Sep 17 00:00:00 2001 From: touchscale <11134128+touchscale_admin@user.noreply.gitee.com> Date: Wed, 17 May 2023 13:47:32 +0000 Subject: [PATCH 4/4] update plugins/genshin/model/srmysNews.js. Signed-off-by: touchscale <11134128+touchscale_admin@user.noreply.gitee.com> --- plugins/genshin/model/srmysNews.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/genshin/model/srmysNews.js b/plugins/genshin/model/srmysNews.js index 8027f4c..68a95a4 100644 --- a/plugins/genshin/model/srmysNews.js +++ b/plugins/genshin/model/srmysNews.js @@ -251,7 +251,7 @@ export default class MysNews extends base { logger.mark(`[崩坏星穹铁道${typeName}推送] ${param.data.post.subject}`) this[postId] = { - img: await this.rander(param), + img: await this.render(param), title: param.data.post.subject } }