feat(lookup): use random user agents (#1335)

This commit is contained in:
Jef LeCompte
2020-12-11 00:33:32 -05:00
committed by GitHub
parent 2115c0c906
commit b599c23b51
9 changed files with 116 additions and 71 deletions
-3
View File
@@ -307,9 +307,6 @@ const page = {
inStockWaitTime: envOrNumber(process.env.IN_STOCK_WAIT_TIME),
screenshot: envOrBoolean(process.env.SCREENSHOT),
timeout: envOrNumber(process.env.PAGE_TIMEOUT, 30000),
userAgents: envOrArray(process.env.USER_AGENT, [
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
]),
width: 1920
};
+1 -1
View File
@@ -162,7 +162,7 @@ async function lookup(browser: Browser, store: Store) {
const page = await context.newPage();
page.setDefaultNavigationTimeout(config.page.timeout);
await page.setUserAgent(getRandomUserAgent());
await page.setUserAgent(await getRandomUserAgent(browser));
let adBlockRequestHandler: any;
let pageProxy;
+1 -1
View File
@@ -50,7 +50,7 @@ export const Amazon: Store = {
brand: 'gigabyte',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NYPLXPJ&Quantity.1=1',
model: 'gaming oc',
model: 'gaming oc pro',
series: '3060ti',
url: 'https://www.amazon.com/dp/B08NYPLXPJ'
},
+11 -5
View File
@@ -2,6 +2,7 @@ import {Browser, Page, Response} from 'puppeteer';
import {StatusCodeRangeArray, Store} from './store/model';
import {config} from './config';
import {disableBlockerInPage} from './adblocker';
import {getRandom} from 'random-useragent';
import {logger} from './logger';
export function getSleepTime(store: Store) {
@@ -57,7 +58,7 @@ export async function usingPage<T>(
): Promise<T> {
const page = await browser.newPage();
page.setDefaultNavigationTimeout(config.page.timeout);
await page.setUserAgent(getRandomUserAgent());
await page.setUserAgent(await getRandomUserAgent(browser));
try {
return await cb(page, browser);
@@ -78,8 +79,13 @@ export async function closePage(page: Page) {
await page.close();
}
export function getRandomUserAgent(): string {
return config.page.userAgents[
Math.floor(Math.random() * config.page.userAgents.length)
];
export async function getRandomUserAgent(browser: Browser): Promise<string> {
const userAgent =
getRandom((ua) => {
return ua.browserName === 'Chrome' && ua.browserVersion > '20';
}) ?? (await browser.userAgent());
logger.debug('user agent', userAgent);
return userAgent;
}