From 3386e8f50da27a800c5289c3b6bd7a1f76e77a49 Mon Sep 17 00:00:00 2001 From: Jef LeCompte Date: Fri, 11 Dec 2020 02:50:04 -0500 Subject: [PATCH] revert: allow users to still use `USER_AGENT` Removed from documentation, but older users can utilize until fully removed in 4.0.0 --- .gitignore | 1 + src/config.ts | 3 ++- src/index.ts | 2 ++ src/store/lookup.ts | 2 +- src/util.ts | 19 ++++++++++++++++--- 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 608b34d..3d49973 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ .vscode/ build/ node_modules/ +src/config/*.yaml .env dotenv diff --git a/src/config.ts b/src/config.ts index da5adf8..240cd15 100644 --- a/src/config.ts +++ b/src/config.ts @@ -173,7 +173,8 @@ const browser = { process.env.PAGE_SLEEP_MAX, 5000 ), - open: envOrBoolean(process.env.OPEN_BROWSER) + open: envOrBoolean(process.env.OPEN_BROWSER), + userAgent: '' }; const docker = envOrBoolean(process.env.DOCKER); diff --git a/src/index.ts b/src/index.ts index 5023e3e..0293392 100644 --- a/src/index.ts +++ b/src/index.ts @@ -48,6 +48,8 @@ async function main() { headless: config.browser.isHeadless }); + config.browser.userAgent = await browser.userAgent(); + for (const store of storeList.values()) { logger.debug('store links', {meta: {links: store.links}}); if (store.setupAction !== undefined) { diff --git a/src/store/lookup.ts b/src/store/lookup.ts index 0b2c062..356ae3e 100644 --- a/src/store/lookup.ts +++ b/src/store/lookup.ts @@ -163,7 +163,7 @@ async function lookup(browser: Browser, store: Store) { await page.setRequestInterception(true); page.setDefaultNavigationTimeout(config.page.timeout); - await page.setUserAgent(await getRandomUserAgent(browser)); + await page.setUserAgent(await getRandomUserAgent()); let adBlockRequestHandler: any; let pageProxy; diff --git a/src/util.ts b/src/util.ts index 0758bd2..a38cdfe 100644 --- a/src/util.ts +++ b/src/util.ts @@ -58,7 +58,7 @@ export async function usingPage( ): Promise { const page = await browser.newPage(); page.setDefaultNavigationTimeout(config.page.timeout); - await page.setUserAgent(await getRandomUserAgent(browser)); + await page.setUserAgent(await getRandomUserAgent()); try { return await cb(page, browser); @@ -79,11 +79,24 @@ export async function closePage(page: Page) { await page.close(); } -export async function getRandomUserAgent(browser: Browser): Promise { +export async function getRandomUserAgent(): Promise { + const deprecatedUserAgent = (process.env.USER_AGENT + ? process.env.USER_AGENT.includes('\n') + ? process.env.USER_AGENT.split('\n') + : process.env.USER_AGENT.split(',') + : [] + ).map((s) => s.trim()); + + if (deprecatedUserAgent.length > 0) { + return deprecatedUserAgent[ + Math.floor(Math.random() * deprecatedUserAgent.length) + ]; + } + const userAgent = getRandom((ua) => { return ua.browserName === 'Chrome' && ua.browserVersion > '20'; - }) ?? (await browser.userAgent()); + }) ?? config.browser.userAgent; logger.debug('user agent', userAgent);