Module: Ronin::Web::UserAgents::Chrome
- Defined in:
- lib/ronin/web/user_agents/chrome.rb
Overview
Represents every possible Chrome User-Agent
string.
Constant Summary collapse
- KNOWN_VERSIONS =
Known Chrome versions
File.readlines( File.join(DATA_DIR,'chrome','versions.txt'), chomp: true )
- SUPPORTED_OSES =
Supported Operating Systems.
[ :windows, :macos, :linux, :android ]
- KNOWN_OS_VERSIONS =
Known OS versions grouped by OS.
{ windows: OS::Windows::VERSIONS.keys, macos: OS::MacOS::VERSIONS, linux: [], android: OS::Android::VERSIONS }
- SUPPORTED_OS_ARCHES =
Supported architectures grouped by OS.
{ windows: OS::Windows::ARCHES.keys, macos: OS::MacOS::ARCHES.keys, linux: OS::Linux::ARCHES.keys, android: OS::Android::ARCHES.keys }
- SUPPORTED_LINUX_DISTROS =
Supported Linux Distros.
OS::Linux::DISTROS.keys
Class Method Summary collapse
-
.build(chrome_version:, os:, os_version: nil, linux_distro: nil, arch: nil, android_device: nil) ⇒ String
Builds a new Chrome
User-Agent
string. -
.build_android(chrome_version:, android_version:, arch: nil, android_device: nil) ⇒ String
Builds a Chrome
User-Agent
string for Android. -
.build_linux(chrome_version:, arch:, linux_distro: nil) ⇒ String
Builds a Chrome
User-Agent
string for Linux. -
.build_macos(chrome_version:, macos_version:, arch: :intel) ⇒ String
Builds a Chrome
User-Agent
string for macOS. -
.build_windows(chrome_version:, windows_version:, arch: nil) ⇒ String
Builds a Chrome
User-Agent
string for Windows. -
.random(chrome_version: KNOWN_VERSIONS.sample, os: SUPPORTED_OSES.sample, os_version: KNOWN_OS_VERSIONS[os].sample, linux_distro: SUPPORTED_LINUX_DISTROS.sample, arch: SUPPORTED_OS_ARCHES[os].sample, android_device: OS::Android::DEVICES.sample) ⇒ String
Generates a random Chrome
User-Agent
string.
Class Method Details
.build(chrome_version:, os:, os_version: nil, linux_distro: nil, arch: nil, android_device: nil) ⇒ String
Builds a new Chrome User-Agent
string.
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/ronin/web/user_agents/chrome.rb', line 60 def self.build(chrome_version: , os: , os_version: nil, linux_distro: nil, arch: nil, android_device: nil) case os when :windows unless os_version raise(ArgumentError,"os: :windows also requires an os_version: value") end build_windows( chrome_version: chrome_version, windows_version: os_version, arch: arch ) when :macos unless os_version raise(ArgumentError,"os: :macos also requires an os_version: value") end build_macos( chrome_version: chrome_version, macos_version: os_version, arch: arch || :intel ) when :linux unless arch raise(ArgumentError,"os: :linux also requires an arch: value") end build_linux( chrome_version: chrome_version, linux_distro: linux_distro, arch: arch ) when :android unless os_version raise(ArgumentError,"os: :android also requires an os_version: value") end build_android( chrome_version: chrome_version, android_version: os_version, arch: arch, android_device: android_device ) else raise(ArgumentError,"unsupported os: value (#{os.inspect})") end end |
.build_android(chrome_version:, android_version:, arch: nil, android_device: nil) ⇒ String
Builds a Chrome User-Agent
string for Android.
285 286 287 288 289 290 291 292 293 294 |
# File 'lib/ronin/web/user_agents/chrome.rb', line 285 def self.build_android(chrome_version: , android_version: , arch: nil, android_device: nil) arch = OS::Android::ARCHES.fetch(arch) extensions = String.new("Linux") extensions << "; #{arch}" if arch extensions << "; Android #{android_version}" extensions << "; #{android_device}" if android_device return "Mozilla/5.0 (#{extensions}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/#{chrome_version} Mobile Safari/537.36" end |
.build_linux(chrome_version:, arch:, linux_distro: nil) ⇒ String
Builds a Chrome User-Agent
string for Linux.
254 255 256 257 258 259 260 261 262 263 264 265 |
# File 'lib/ronin/web/user_agents/chrome.rb', line 254 def self.build_linux(chrome_version: , arch: , linux_distro: nil) linux_distro = OS::Linux::DISTROS.fetch(linux_distro,linux_distro) linux_arch = OS::Linux::ARCHES.fetch(arch) do raise(ArgumentError,"unknown arch: value (#{arch.inspect})") end extensions = String.new("X11") extensions << "; #{linux_distro}" if linux_distro extensions << "; Linux #{linux_arch}" return "Mozilla/5.0 (#{extensions}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/#{chrome_version} Safari/537.36" end |
.build_macos(chrome_version:, macos_version:, arch: :intel) ⇒ String
Builds a Chrome User-Agent
string for macOS.
230 231 232 233 234 235 236 237 |
# File 'lib/ronin/web/user_agents/chrome.rb', line 230 def self.build_macos(chrome_version: , macos_version: , arch: :intel) macos_version = OS::MacOS::VERSIONS_UNDERSCORED[macos_version] macos_arch = OS::MacOS::ARCHES.fetch(arch) do raise(ArgumentError,"unknown arch: value (#{arch.inspect})") end return "Mozilla/5.0 (Macintosh; #{macos_arch} Mac OS X #{macos_version}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/#{chrome_version} Safari/537.36" end |
.build_windows(chrome_version:, windows_version:, arch: nil) ⇒ String
Builds a Chrome User-Agent
string for Windows.
203 204 205 206 207 208 209 210 211 212 213 |
# File 'lib/ronin/web/user_agents/chrome.rb', line 203 def self.build_windows(chrome_version: , windows_version: , arch: nil) windows_version = OS::Windows::VERSIONS.fetch(windows_version,windows_version) windows_arch = OS::Windows::ARCHES.fetch(arch) do raise(ArgumentError,"unknown arch: value (#{arch.inspect})") end extensions = "Windows NT #{windows_version}" extensions << "; #{windows_arch}" if windows_arch return "Mozilla/5.0 (#{extensions}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/#{chrome_version} Safari/537.36" end |
.random(chrome_version: KNOWN_VERSIONS.sample, os: SUPPORTED_OSES.sample, os_version: KNOWN_OS_VERSIONS[os].sample, linux_distro: SUPPORTED_LINUX_DISTROS.sample, arch: SUPPORTED_OS_ARCHES[os].sample, android_device: OS::Android::DEVICES.sample) ⇒ String
Generates a random Chrome User-Agent
string.
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
# File 'lib/ronin/web/user_agents/chrome.rb', line 172 def self.random(chrome_version: KNOWN_VERSIONS.sample, os: SUPPORTED_OSES.sample, os_version: KNOWN_OS_VERSIONS[os].sample, linux_distro: SUPPORTED_LINUX_DISTROS.sample, arch: SUPPORTED_OS_ARCHES[os].sample, android_device: OS::Android::DEVICES.sample) build( chrome_version: chrome_version, os: os, os_version: os_version, linux_distro: linux_distro, arch: arch, android_device: android_device ) end |