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')) {