diff options
Diffstat (limited to 'browser.js')
-rw-r--r-- | browser.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/browser.js b/browser.js new file mode 100644 index 0000000..81f7cc6 --- /dev/null +++ b/browser.js @@ -0,0 +1,55 @@ +const puppeteer = require("puppeteer-extra"); +const StealthPlugin = require('puppeteer-extra-plugin-stealth'); +const cookiesStorage = require("./cookies-storage"); +puppeteer.use(StealthPlugin()); + + +const options = { + headless: true, + args: [] +}; + +let browser = null +let page = null + + +module.exports = { + async launch() { + browser = await puppeteer.launch(options) + }, + + async getPage() { + if (page && page.isClosed()) { + page.removeAllListeners && page.removeAllListeners() + page = null + } + + if (!page) { + page = await browser.newPage() + page.on('framenavigated', async () => { + let cookies = await page.cookies(); + if (cookies) + await cookiesStorage.save(cookies) + }) + + page.setCookie(...(await cookiesStorage.get())) + } + + return page + }, + get() { + return browser + }, + setProxy(proxy) { + options.args.push(`--proxy-server=${proxy}`) + }, + disableSandbox() { + options.args.push( + '--no-sandbox', + '--disable-setuid-sandbox' + ) + }, + setHeadful() { + options.headless = false; + } +}
\ No newline at end of file |