@rahulxf/random-user-agent
Version:
Generate random user agent
192 lines • 7.4 kB
JavaScript
const baseOS = [
'X11; Linux i686',
'X11; Linux x86_64',
'X11; Ubuntu i686',
'X11; Ubuntu x86_64',
'X11; Fedora i686',
'Macintosh; Intel Mac OS X 10_15_7',
'Macintosh; Intel Mac OS X 13_5',
'Macintosh; Intel Mac OS X 14_0',
'Windows NT 10.0; Win64; x64',
'Windows NT 11.0; Win64; x64',
];
const subVersionMax = 500;
const webkitVersion = '537.36';
function generateRandomVersion(min, max) {
if (min > max) {
throw new Error('First argument should be minimum');
}
const versionMajor = Math.floor(Math.random() * (max - min + 1)) + min;
const version = `${versionMajor}.${Math.floor(Math.random() * subVersionMax)}.${Math.floor(Math.random() * 100)}`;
return version;
}
export function generateUserAgents(count) {
const userAgents = [];
// const baseChromev = 111;
const safariVersion = '537.36';
for (let i = 0; i < count; i++) {
const os = baseOS[Math.floor(Math.random() * baseOS.length)];
const chromeVersion = generateRandomVersion(111, 131);
const userAgent = `Mozilla/5.0 (${os}) AppleWebKit/${webkitVersion} (KHTML, like Gecko) Chrome/${chromeVersion} Safari/${safariVersion}`;
userAgents.push(userAgent);
}
return userAgents;
}
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
export function generateAndroidAgents(count) {
const userAgents = [];
const baseOS = [
'Linux; Android 10; K',
'Linux; Android 13; SM-S901B',
'Linux; Android 13; SM-S908B',
'Linux; Android 13; SM-A536B',
'Linux; Android 12; SM-G973F',
'Linux; Android 13; SM-G991B',
'Linux; Android 12; SM-G973F',
'Linux; Android 13; Pixel 6',
'Linux; Android 13; Pixel 6a',
'Linux; Android 13; Pixel 6 Pro',
'Linux; Android 13; Pixel 7',
'Linux; Android 13; Pixel 7 Pro',
'Linux; Android 12; moto g pure',
'Linux; Android 12; moto g stylus 5G',
'Linux; Android 12; moto g stylus 5G (2022)',
'Linux; Android 12; moto g 5G (2022)',
'Linux; Android 12; moto g power (2022)',
'Linux; Android 11; moto g power (2021)',
'Linux; Android 12; Redmi Note 9 Pro',
'Linux; Android 11; Redmi Note 8 Pro',
'Linux; Android 10; VOG-L29',
'Linux; Android 10; MAR-LX1A',
'Linux; Android 13; M2101K6G',
'Linux; Android 12; M2102J20SG',
'Linux; Android 12; 2201116SG',
'Linux; Android 12; DE2118',
];
// const baseChromeVersion = 111;
const safariVersion = '537.36';
// Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Mobile Safari/537.3
for (let i = 0; i < count; i++) {
const os = baseOS[Math.floor(Math.random() * baseOS.length)];
const chromeVersionMajor = Math.floor(Math.random() * (131 - 110 + 1)) + 110;
const chromeVersion = `${chromeVersionMajor}.0.0.0`;
const userAgent = `Mozilla/5.0 (${os}) AppleWebKit/${webkitVersion} (KHTML, like Gecko) Chrome/${chromeVersion} Mobile Safari/${safariVersion}`;
userAgents.push(userAgent);
}
return userAgents;
}
export function generateFirefoxAgents(count) {
const userAgents = [];
const baseOS = [
'X11; Linux i686;',
'X11; Linux x86_64;',
'X11; Ubuntu; Linux i686;',
'X11; Ubuntu; Linux x86_64;',
'X11; Fedora; Linux x86_64;',
'Macintosh; Intel Mac OS X 10.15;',
'Macintosh; Intel Mac OS X 14.7;',
'Windows NT 11.0; Win64; x64;',
'Windows NT 10.0; Win64; x64;',
];
// Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0
for (let i = 0; i < count; i++) {
const os = baseOS[Math.floor(Math.random() * baseOS.length)];
const firefoxVersionMajor = Math.floor(Math.random() * (133 - 101 + 1)) + 101;
const userAgent = `Mozilla/5.0 (${os} rv:${firefoxVersionMajor}.0) Gecko/20100101 Firefox/${firefoxVersionMajor}.0`;
userAgents.push(userAgent);
}
return userAgents;
}
export function generateEdgeAgents(count) {
const userAgents = [];
// const baseChromeVersion = 111;
const safariVersion = '537.36';
// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.2903.86
for (let i = 0; i < count; i++) {
const os = baseOS[Math.floor(Math.random() * baseOS.length)];
const edgeVersionMajor = generateRandomVersion(111, 115);
const userAgent = `Mozilla/5.0 (${os}) AppleWebKit/${webkitVersion} (KHTML, like Gecko) Chrome/${edgeVersionMajor} Safari/${safariVersion} Edg/${edgeVersionMajor}`;
userAgents.push(userAgent);
}
return userAgents;
}
export function getUserAgent(max_count = 10000) {
const generateThousandUserAgent = generateUserAgents(max_count);
const randomNumber = getRandomInt(max_count);
return generateThousandUserAgent[randomNumber];
}
export function getAndroidAgent(max_count = 1000) {
const generateThousandUserAgent = generateAndroidAgents(max_count);
const randomNumber = getRandomInt(max_count);
return generateThousandUserAgent[randomNumber];
}
export function getFirefoxAgent(max_count = 1000) {
const generateThousandUserAgent = generateFirefoxAgents(max_count);
const randomNumber = getRandomInt(max_count);
return generateThousandUserAgent[randomNumber];
}
export function getEdgeAgent(max_count = 1000) {
const generateThousandUserAgent = generateEdgeAgents(max_count);
const randomNumber = getRandomInt(max_count);
return generateThousandUserAgent[randomNumber];
}
export function generateUserAgentOnType({ options }) {
const { type, count = 1 } = options;
if (!type) {
throw new Error('types not mentioned');
}
switch (type.toLowerCase()) {
case 'firefox':
if (count == 1) {
return getFirefoxAgent();
}
else {
return generateFirefoxAgents(count);
}
case 'chrome':
if (count == 1) {
return getUserAgent();
}
else {
return generateUserAgents(count);
}
case 'edge':
if (count == 1) {
return getEdgeAgent();
}
else {
return generateEdgeAgents(count);
}
case 'android':
if (count == 1) {
return getAndroidAgent();
}
else {
return generateAndroidAgents(count);
}
default:
throw new Error(`Unsupported user agent type: ${type}`);
}
}
export function generateUserAgentRandom(count = 10000) {
let userAgents = [];
const types = ['firefox', 'android', 'edge', 'chrome'];
for (let i = 0; i < count; i++) {
let randomType = types[Math.floor(Math.random() * types.length)];
if (!randomType) {
randomType = 'chrome';
}
const getUserAgent = generateUserAgentOnType({
options: {
type: 'firefox',
},
});
if (typeof getUserAgent === 'string') {
userAgents.push(getUserAgent);
}
}
return userAgents;
}
//# sourceMappingURL=generateUserAgents.js.map