/ src / utils / userAgentGenerator.js
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