Client Fingerprinting via Analysis of Browser Scripting Environment
The Opera Browser also returns fairly unique value for the navigator.appName property, ‘Opera’. The navigator.browserLanguage, navigator.language, and navigator.userLanguage provide information about the language is being used by the browser and O/S. The property returns a 2 character lower case language code with no associated country codes.
Besides navigator.appVersion and navigator.userAgent, Opera only provides information in the navigator.platform property to return information about the O/S. Typically values returned by the navigator.platform property include: FreeBSD, Linux, MacIntel, and Win32. Specific information about the O/S and/or processor architecture is only available from within the navigator.appVersion and navigator.userAgent properties. As an example, both 32-bit and 64-bit Linux O/Ss will have “X11; Linux i686;” or “X11; Linux x86_64;” tokens in the navigator.appVersion and navigator.userAgent properties but navigator.platform will only contain “Linux”. This feature also helps to distinguish it from other browsers, in that other browsers will commonly return something similar to “Linux i686” or “Linux amd” (e.g. Linux with a Processor Architecture identifier).
Opera also provides the window.opera object which scripts can access additional information and make use of specific functionality within the browser. This functionality was previously described at BlackHat USA 2009 presentation by a developer of the Metasploit Framework (Lee, 2009). Specifically the window.opera.buildNumber() and window.opera.version() functions return specific information about the browser. The window.opera.version() function returns the version of opera that is being used (i.e. “10.10” or “10.61”), while the window.opera.buildNumber() function returns the build number of the browser (i.e. “6386”, “8402”, or “3445” for Opera 10.61). These values can be used to identify specific O/Ss. For example, Opera 10.61 with a Microsoft