Files
mcr-account-creator-bot/modules/driverManager.js
2023-05-19 18:14:26 +02:00

80 lines
2.0 KiB
JavaScript

const { Builder } = require('selenium-webdriver');
const firefox = require('selenium-webdriver/firefox');
const chrome = require('selenium-webdriver/chrome');
const edge = require('selenium-webdriver/edge');
const args = process.argv.slice(2);
const userAgents = new Map([
['desktop', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.34'],
['mobile', 'Mozilla/5.0 (Linux; Android 10; Redmi Note 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36'],
]);
const userAgent = userAgents.get(args.find(arg => arg.startsWith('--userAgent='))?.split('=')[1] ?? 'desktop');
function createDriverChrome() {
const driver = new Builder()
.forBrowser('chrome')
.setChromeOptions(
new chrome.Options()
.windowSize({ width: 1024, height: 768 })
.addArguments(`--user-agent=${userAgent}`),
)
.build();
return driver;
}
function createDriverFirefox() {
const driver = new Builder()
.forBrowser('firefox')
.setFirefoxOptions(
new firefox.Options()
.windowSize({ width: 1024, height: 768 })
.addArguments(`--user-agent=${userAgent}`),
)
.build();
return driver;
}
function createDriverEdge() {
const driver = new Builder()
.forBrowser('MicrosoftEdge')
.setEdgeOptions(
new edge.Options()
.windowSize({ width: 1024, height: 768 })
.addArguments(`--user-agent=${userAgent}`),
)
.build();
return driver;
}
function createDriver() {
let browserType = 'chrome';
for (let i = 0; i < args.length; i++) {
if (args[i].startsWith('--')) {
if (args[i] === '--firefox') {
browserType = 'firefox';
}
else if (args[i] === '--edge') {
browserType = 'edge';
}
}
}
let driver;
switch (browserType) {
case 'firefox':
driver = createDriverFirefox();
break;
case 'edge':
driver = createDriverEdge();
break;
default:
driver = createDriverChrome();
}
console.log(`Using ${browserType} browser with user agent: ${userAgent}`);
return driver;
}
module.exports = {
createDriver,
};