Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- /// <summary>
- /// Random User Agent Generator (invented by gigajew)
- /// </summary>
- public class UserAgent
- {
- /// <summary>
- /// System.Random
- /// </summary>
- private static Random _random;
- /// <summary>
- /// Static constructor (.cctor)
- /// </summary>
- static UserAgent()
- {
- _random = new Random(Guid.NewGuid().GetHashCode());
- }
- /// <summary>
- /// OS type
- /// </summary>
- public enum System : Int32
- {
- Windows = 0, Macintosh = 1, X11 = 2, iPad = 3, Unknown = 4
- }
- /// <summary>
- /// Get a random user-agent
- /// </summary>
- /// <returns></returns>
- public static string GetRandomUserAgent()
- {
- return $"Mozilla/5.0 {GetRandomSystem()} {GetRandomRenderEngine()} {GetRandomBrowser()}";
- }
- /// <summary>
- /// Convert System to String
- /// </summary>
- /// <param name="system"></param>
- /// <returns></returns>
- private static string GetSystem(System system)
- {
- if (system == System.Windows)
- {
- return $"(Windows NT {GetRandomVersion(10)}; {GetRandomArchitecture(system)})";
- }
- else if (system == System.Macintosh)
- {
- return $"(Macintosh; Intel Mac OS X 10_{_random.Next(9, 14)}_{_random.Next(0, 11)})";
- }
- else if (system == System.Unknown)
- {
- return $"(compatible; MSIE {GetRandomVersion(10)}; Windows NT {GetRandomVersion(10)}; Trident/{GetRandomVersion(5)}; Trident/{GetRandomVersion(5)})";
- }
- else if (system == System.iPad)
- {
- return $"(iPad; CPU OS 10_{_random.Next(1, 14)}_{_random.Next(0, 11)} like Mac OS X)";
- }
- else if (system == System.X11)
- {
- if (_random.Next(0, 2) == 1)
- {
- return $"(X11; Ubuntu; Linux x86_64; rv:{GetRandomVersion(80)})";
- }
- else
- {
- return $"(X11; Linux x86_64; rv:{GetRandomVersion(80)})";
- }
- }
- return string.Empty;
- }
- /// <summary>
- /// Return a random OS type
- /// </summary>
- /// <returns></returns>
- private static string GetRandomSystem()
- {
- var sys = (System)_random.Next(0, 5);
- return GetSystem(sys);
- }
- /// <summary>
- /// Get random architecture
- /// </summary>
- /// <param name="system"></param>
- /// <returns></returns>
- private static string GetRandomArchitecture(System system)
- {
- var i = _random.Next(0, 2);
- if (system == System.Windows)
- {
- return (i == 1) ? "Win64; x64" : $"WOW64; rv:{GetRandomVersion(80)}";
- }
- return string.Empty;
- }
- /// <summary>
- /// Get random browser
- /// </summary>
- /// <returns></returns>
- private static string GetRandomBrowser()
- {
- int i = _random.Next(0, 3);
- if (i == 0)
- {
- return $"(KHTML, like Gecko) Chrome/{_random.Next(30, 90)}.0.{_random.Next(1000, 3000)}.{_random.Next(100, 200)} Safari/{_random.Next(400, 600)}.{_random.Next(20, 50)}";
- }
- else if (i == 1)
- {
- return $"Firefox/{_random.Next(40, 60)}.0";
- }
- else if (i == 2)
- {
- return $"(KHTML, like Gecko) Version/{_random.Next(1, 11)}.0 Mobile/14G60 Safari/{GetRandomVersion(600)}";
- }
- return string.Empty;
- }
- /// <summary>
- /// Get random render engine
- /// </summary>
- /// <returns></returns>
- private static string GetRandomRenderEngine()
- {
- int i = _random.Next(0, 2);
- if (i == 1)
- {
- return $"AppleWebKit/{GetRandomVersion(1000)}.{_random.Next(1, 10)}.{_random.Next(1, 10)}";
- }
- else
- {
- return "Gecko/20100101";
- }
- }
- /// <summary>
- /// Get random float (version) X.x
- /// </summary>
- /// <param name="max"></param>
- /// <returns></returns>
- private static double GetRandomVersion(int max)
- {
- return Math.Round(_random.NextDouble() * (max + 2), 1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement