userAgentGenerator.js
1 const chromeVersions = [120, 121, 122, 123, 124, 125, 126, 127]; 2 const firefoxVersions = [121, 122, 123, 124, 125, 126]; 3 const safariVersions = [17, 17.1, 17.2, 17.3, 17.4]; 4 const edgeVersions = [120, 121, 122, 123, 124, 125]; 5 const webkitVersions = [537.36, 537.43]; 6 7 const windowsVersions = [ 8 "Windows NT 10.0; Win64; x64", 9 "Windows NT 10.0; WOW64", 10 "Windows NT 11.0; Win64; x64", 11 ]; 12 13 const macVersions = [ 14 "Macintosh; Intel Mac OS X 10_15_7", 15 "Macintosh; Intel Mac OS X 11_7_10", 16 "Macintosh; Intel Mac OS X 12_7_4", 17 "Macintosh; Intel Mac OS X 13_6_6", 18 "Macintosh; Intel Mac OS X 14_2_1", 19 ]; 20 21 const linuxDistros = [ 22 "X11; Linux x86_64", 23 "X11; Ubuntu; Linux x86_64", 24 "X11; Fedora; Linux x86_64", 25 ]; 26 27 function randomElement(array) { 28 return array[Math.floor(Math.random() * array.length)]; 29 } 30 31 function randomChromeVersion() { 32 return randomElement(chromeVersions); 33 } 34 35 function randomFirefoxVersion() { 36 return randomElement(firefoxVersions); 37 } 38 39 function randomSafariVersion() { 40 return randomElement(safariVersions); 41 } 42 43 function randomEdgeVersion() { 44 return randomElement(edgeVersions); 45 } 46 47 function randomWebkitVersion() { 48 return randomElement(webkitVersions); 49 } 50 51 function generateChromeUserAgent() { 52 const chromeVersion = randomChromeVersion(); 53 const webkitVersion = randomWebkitVersion(); 54 const platform = randomElement([ 55 ...windowsVersions, 56 ...macVersions, 57 ...linuxDistros, 58 ]); 59 60 return `Mozilla/5.0 (${platform}) AppleWebKit/${webkitVersion} (KHTML, like Gecko) Chrome/${chromeVersion}.0.0.0 Safari/${webkitVersion}`; 61 } 62 63 function generateFirefoxUserAgent() { 64 const firefoxVersion = randomFirefoxVersion(); 65 const platform = randomElement([ 66 ...windowsVersions, 67 ...macVersions, 68 ...linuxDistros, 69 ]); 70 71 return `Mozilla/5.0 (${platform}; rv:${firefoxVersion}.0) Gecko/20100101 Firefox/${firefoxVersion}.0`; 72 } 73 74 function generateSafariUserAgent() { 75 const safariVersion = randomSafariVersion(); 76 const webkitVersion = randomWebkitVersion(); 77 const macVersion = randomElement(macVersions); 78 79 return `Mozilla/5.0 (${macVersion}) AppleWebKit/${webkitVersion} (KHTML, like Gecko) Version/${safariVersion} Safari/${webkitVersion}`; 80 } 81 82 function generateEdgeUserAgent() { 83 const edgeVersion = randomEdgeVersion(); 84 const webkitVersion = randomWebkitVersion(); 85 const platform = randomElement([...windowsVersions, ...macVersions]); 86 87 return `Mozilla/5.0 (${platform}) AppleWebKit/${webkitVersion} (KHTML, like Gecko) Chrome/${edgeVersion}.0.0.0 Safari/${webkitVersion} Edg/${edgeVersion}.0.0.0`; 88 } 89 90 export function generateUserAgents(count = 12) { 91 const userAgents = []; 92 const generators = [ 93 generateChromeUserAgent, 94 generateFirefoxUserAgent, 95 generateSafariUserAgent, 96 generateEdgeUserAgent, 97 ]; 98 99 for (let i = 0; i < count; i++) { 100 const generator = randomElement(generators); 101 userAgents.push(generator()); 102 } 103 104 return userAgents; 105 } 106 107 export function getRandomUserAgent() { 108 const userAgents = generateUserAgents(1); 109 return userAgents[0]; 110 } 111