diff --git a/src/config.ts b/src/config.ts index 55d2bf6..b318aa1 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,11 +1,13 @@ class Config { playwright: { browser: string; + change_viewport: boolean; headless: boolean; cdp: string; url: string; } = { browser: "chromium", + change_viewport: true, headless: true, cdp: "ws://127.0.0.1:9222", url: "https://www.twitch.tv/", diff --git a/src/index.ts b/src/index.ts index 96205cd..b01eeea 100644 --- a/src/index.ts +++ b/src/index.ts @@ -16,9 +16,10 @@ if (fs.existsSync("config.json")) { config = Config.fromJSON(text); } else { logger.info("No configuration file found. Using the default configuration."); - await fs.promises.writeFile("config.json", config.toJSON()); logger.info("Default configuration file 'config.json' created."); } +// Write the new config file in case we updated something. +await fs.promises.writeFile("config.json", config.toJSON()); logger.level = process.env.LOG_LEVEL || config.logger.level; logger.info(`Logger level set to '${logger.level}'`); @@ -63,7 +64,7 @@ if (config.proxy.mode === "reflect4") { const spawnId = `${i + 1}`; while (true) { try { - await reflect4.spawn(context, config.playwright.url, spawnId); + await reflect4.spawn(context, config.playwright.url, config.playwright.change_viewport, spawnId); } catch (e) { logger.error(`[${spawnId}] Error while running: ${e}`); } diff --git a/src/proxy/reflect4.ts b/src/proxy/reflect4.ts index 8cd42d5..e30369e 100644 --- a/src/proxy/reflect4.ts +++ b/src/proxy/reflect4.ts @@ -3,14 +3,17 @@ import logger from "../logger"; import * as twitch from "../website/twitch"; import * as constants from "../constants"; -async function spawn(context: BrowserContext, targetUrl: string, spawnId: string = "unknown") { +async function spawn(context: BrowserContext, targetUrl: string, changeViewport: boolean = false, spawnId: string = "unknown") { const server = constants.REFLECT4_SERVERS[Math.floor(Math.random() * constants.REFLECT4_SERVERS.length)]; logger.debug(`[${spawnId}] Using reflect4 server: ${server}`); const page = await context.newPage(); - const deviceName = Object.keys(devices)[Math.floor(Math.random() * Object.keys(devices).length)]; - const device = devices[deviceName]; - logger.debug(`[${spawnId}] Using device: ${deviceName}`); - await page.setViewportSize(device.viewport); + if (changeViewport) { + logger.debug(`[${spawnId}] Changing viewport size...`); + const deviceName = Object.keys(devices)[Math.floor(Math.random() * Object.keys(devices).length)]; + const device = devices[deviceName]; + logger.debug(`[${spawnId}] Using device: ${deviceName}`); + await page.setViewportSize(device.viewport); + } try { await page.goto(server); } catch (e) {