From 4bc5828ff012cebe1f27e4b6875fa6eeabd0eaf7 Mon Sep 17 00:00:00 2001 From: yeyang <746659424@qq.com> Date: Sun, 9 Apr 2023 00:40:57 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9E=95=20=E6=96=B0=E5=A2=9E=E4=BE=9D?= =?UTF-8?q?=E8=B5=96puppeteer-extra=20puppeteer-extra-plugin-stealth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/puppeteer/package.json | 10 ++++++++++ lib/puppeteer/puppeteer.js | 23 ++++++++++++++++++----- 2 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 lib/puppeteer/package.json diff --git a/lib/puppeteer/package.json b/lib/puppeteer/package.json new file mode 100644 index 0000000..1b40c7f --- /dev/null +++ b/lib/puppeteer/package.json @@ -0,0 +1,10 @@ +{ + "name": "puppeteer", + "version": "1.0.0", + "main": "puppeteer.js", + "license": "MIT", + "dependencies": { + "puppeteer-extra": "^3.3.4", + "puppeteer-extra-plugin-stealth": "^2.11.1" + } +} diff --git a/lib/puppeteer/puppeteer.js b/lib/puppeteer/puppeteer.js index 44d4e12..b920c7c 100644 --- a/lib/puppeteer/puppeteer.js +++ b/lib/puppeteer/puppeteer.js @@ -1,8 +1,17 @@ import fs from 'fs' import _ from 'lodash' +import { devices } from 'puppeteer' import pet from '../../../../lib/puppeteer/puppeteer.js' -import { Data, Version, Plugin_Name, Config } from '../../components/index.js' -const puppeteer = await import('puppeteer') +import { Config, Data, Plugin_Name, Version } from '../../components/index.js' + +let puppeteer = null +let StealthPlugin = null +try { + puppeteer = await import('puppeteer-extra') + StealthPlugin = await import('puppeteer-extra-plugin-stealth') + puppeteer.use(StealthPlugin()) +} catch {} + const _path = process.cwd() export default new (class newPuppeteer { constructor () { @@ -20,12 +29,12 @@ export default new (class newPuppeteer { isLandscape: false } }, - ...puppeteer.devices + ...devices } this.browser = false this.config = { - headless: 'chrome', - args: ['--no-sandbox'] + args: ['--no-sandbox'], + headless: true } } @@ -130,6 +139,10 @@ export default new (class newPuppeteer { async launch () { if (this.browser) return this.browser logger.mark('Puppeteer launching') + if (!puppeteer) { + logger.error(`[椰奶][Puppeteer]缺少依赖项 请到 ${logger.yellow('yenai-plugin/lib/puppeteer')} 执行 ${logger.red('pnpm i')} 或直接执行 ${logger.red('pnpm add puppeteer-extr puppeteer-extra-plugin-stealth -w')}`) + return false + } this.browser = await puppeteer.launch(this.config).catch((err) => { logger.error(err.toString()) if (String(err).includes('correct Chromium')) {