aboutsummaryrefslogtreecommitdiff
path: root/browser.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser.js')
-rw-r--r--browser.js55
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