Anonymity in Human Emulator Studio. Profile.

Anonymity in Human Emulator Studio. Profile.

After reading the previous articles from the series Anonymity in Human Emulator Studio:

Managing embedded browser information.
Cookies, cash and more.
The location.
Browser fingerprints.

We have learned how to adjust the level of anonymity we need in the program. And now a completely legitimate question arises, how can we preserve and use all this splendor at the right time.

What is a profile?

Let’s say we have a task to log into some social network under different users with different settings, and at the same time it is necessary that all settings are the same for each login, including such settings as proxies, browser fingerprints, etc.

A profile will help us cope with this task. A profile is a collection of different settings that we can save and load. You can work with profiles in two ways using commands and the profile dialog.

When working in the Isolated browsers mode, in the tabs of each bookmark, you can set your own profile, if the Isolate browsers in Tabs checkbox is not checked in the settings, then one profile applies to all browser bookmarks.

After restarting the program, the profile is reset, so if you need to use the same profile that you used before restarting it, be sure to load it.

Profile dialog.

With the help of the profile dialog, we can see all the settings that are included in the profile, as well as configure them, save or load, set them by default.

The dialog can be opened using the Profile context menu. To do this, we right-click on the browser tab and in the menu that appears, click on the Profile item.

Or for this purpose you can use the button Profile in the top toolbar of the built-in browser of the program.

After that, we will open the Browser Profile dialog at the current setting.

The Browser Profile of Current Tab dialog

The dialog consists of the following tabs: Description, Cache|Cookies, Proxies, Languages|Accepts, Hardware, Application, Window, Geolocation, Internationalization, Web GL, Audio and Other.

From the name it is not difficult to guess what each tab of this dialog is needed for, but let’s consider each tab separately.


Description tab

On this tab, we set the Name and Description of the profile.


Cash|Cookies tab

Using this tab, set the path to the folder with Cookies and Cash.

Please note that since version 7.0.37 (2019.08.21) the cache folder is not configured separately, but is stored inside the cookie folder. That is, the command and setting for specifying the path to the cache folder will not work. These changes are related to changes in the work of the Chromium engine.


Proxy tab

This tab of the profile dialog is used to configure proxy/socks. Also on this tab there is a button Use TOR. This button sets the proxy setting socks5: // 9150 to work through the toro. In this case, the Tor should already be running on your computer.

Languages ​​and Acceptances.

Languages ​|Accepts tab

This tab is used to set the language parameters in the navigator and in the HTTP Accept request header. The language can be selected as from the existing one, or register your own, or set a random one by clicking on the dice icon.

Here and elsewhere, the Default value indicates that these values ​​will not be replaced, but those that are by default will be used.

To set the use of default values, you can click the Default button or write this text in the field for the specified value.


Hardware tab

Using this tab, we configure the parameters of the hardware used – the screen resolution, and the parameters of the navigator Platform, CPU Class, Hardware Concurrency, Device Memory, as well as the parameters of the touch screen, the parameters navigator.maxTouchPoints and window.ontouchstart, and the parameter devicePixelRatio.

You can read about these options in the article Managing Browser Information.


Application tab

On this tab, change the following User Agent string parameters, as well as the navigator Product, Product Sub, App Name, App Code Name, App Minor Version, Vendor, Vendor Sub parameters.

You can read about these options in the article Managing Browser Information.


Window tab

Everything is simple here, the first field is the width of the browser window, and the second field is the height of the window built-in browser .


Geolocation tab

Setting navigator.geolocation.getCurrentPositionLatitude, Longitude, Accuracy, Altitude, Altitude Accuracy, Speed ​​( travel speed), Heading (direction of travel (in radians)).

And also you can set here the Time Zone.

You can read more about these parameters in The location.


Internationalization tab

In this tab, the parameters of internalization are set, which can be found in the article The location.

Web GL.

Web GL tab

This is the profile dialog tab used for working with Web GL Fingerprint. Read about Web GL Fingerprint in the Browser Fingerprints article. If you set the check box Randomize Web GL Fingerprint, then it enable the substitution of all the parameters listed below. If the check box is not checked, the default values ​​are used, provided that Web GL is not disabled in the settings.


Audio tab

From version 7.0.43 added the Audio tab.

This tab distorts the AudioContext Fingerprint. You can find out more about audio prints in our article Browser fingerprints. Values ​​for the Audio Noise field can be from 1 to 999999, Frequence Noise can be from 1 to 99.


Other tab

On this tab, we manage the referrer, canvas fingerprint (To Data URL), Bounds noise and plugins information. Read about Canvas Fingerprint and Font Fingerprint in the article Browser Fingerprints, about plugins in the article Managing Browser Information. Since version 7.0.43 the Bounds noise field has appeared. This field is used for working with Font Fingerprint. Its value can be from -1 to 999999999. At -1, distortion is disabled.

After we have set all the necessary profile settings, we save it as a json file using the Save button. In order to use the saved profile, you need to load it using the Load button.

Manage profile settings using commands.

Everything that we set in the dialog can be set using the appropriate commands.

Here’s an php example all the commands used to configure a profile:

In order to use the profile, use the command:

Working with profiles is constantly being improved, so you can discuss this article and make your comments or suggestions about profiles on our forum.

Anonymity in Human Emulator Studio. Browser Fingerprints.

Anonymity in Human Emulator Studio. Browser Fingerprints.

Browser Fingerprint.

Earlier in articles about anonymity, we already touched on the so-called browser fingerprints. What kind of prints are these? In fact, this is a means to determine the user based on the various parameters of his system, the software installed in it, as well as information about the hardware of the computer itself. All this is determined using various JS libraries, and after processing, it is converted to a fingerprint string, after which this string is converted to a 32-bit number and this will be your identifier. With this number can be determine the repeated visit to the site or track all your actions on this site.

So in the article Anonymity in Human Emulator Studio. Managing embedded browser information we have already talked about the parameters that affect the browser fingerprint. This is the userAgent string (navigator.userAgent), as well as the parameters of the navigator object appVersion, appName, appCodeName, language (s), platform, product, productsub, information about plugins and equipment, screen size, screen color depth.

In the article Anonymity in Human Emulator Studio. The location is Timezone, Internationalization, navigator.language.

In this article, we’ll look at other parameters that affect your browser fingerprint or, to put it another way, your user identifier.

Сanvas Fingerprint.

This is a special technology with which helps text is drawn on a hidden Canvas element with effects superimposed on it. Then
this image is converted to an array of bytes, and then converted to a base64 string using canvas.toDataULR(). And this line is added to your browser fingerprint.

Moreover, due to the platform dependences of the Canvas API library, with which helps the text drawing is performed, the resulting set of bytes will be unique on almost every computer.

To substitute this parameter in Human Emulator Studio, use the object browser command set_canvas_toDataURL

From version 7.0.43, any number or line is passed as a parameter on the basis of which “noise” is created for an image with text.

php example:

The result of the set_canvas_toDataURL function.

No noise:

Using noise:

In Studio 7.0.45, the jsChangeNoise parameter was added to the set_canvas_toDataURL command. This parameter contains the algorithm for changing the picture using JS. Thus, if you want you can use your own image processing algorithms, for example:

In Studio version 7.0.47, the program added the ability to receive the image source on the clipboard for further use in the program. To do this, select the menu item Service->Screenshots->Get last Canvas Based 64 encode array and copy to Clipboard.

An example of using the resulting canvas source code in php:

The result of work:

WebGL Fingerprint.

WebGL Fingerprint this is a further development of the idea of Сanvas Fingerprint.

WebGL is a JavaScript API for visualisation interactive 3D graphics in any compatible web browser without using plugins. WebGL applications consist of control code written in JavaScript and special effects code executed on the computer’s GPU. WebGL elements can be mixed with other HTML elements and combined with other parts of the page or page background.

Using this API, 3D triangles are drawn on which various effects are superimposed. Then, as well as with Canvas Fingerprint, the resulting image is converted into an array of bytes, which will be different on different computers.

The command set_random_webgl_fingerprint has been added to the object browser. In version 7.0.43, this command has undergone changes and now it does not randomly generate a value, but creates it based on the specified parameters.

Parameters for working with the command:
enable = true – use substitution or not
noiseImage – a number from 1 to 999999 – this is the noise applied to rendering images via WebGl; the larger the number, the greater the noise.
noiseParams – a string of numbers – 50 digits long, where each digit in the string is used to create noise for the WebGl parameters used to create the WebGL Report Hash on the page – the parameters themselves on the same page are below: (Max Vertex Attributes, Max Vertex Uniform Vectors, etc.)
unmaskedVendor, unmaskedRenderer, glVersion, shadingLanguageVersion, vendor, renderer are string values that can be viewed in the table at page

php example:

Before using spoofing:

After completing the work of the example, we have:

The command will act until the program is restarted or until you call it in the following form:

WebGL can simply be disabled using the browser enable_gpu_rendering object command.

php example:

Google SwiftShader.

In version 7.0.43, the option Enable Google SwiftShader for rendering is added.

What is Google SwiftShader? This is a special library that is used for high-performance rendering, which provides a graphics API implementation that runs on the CPU. It is used to display advanced 3D graphics regardless of the equipment and graphics drivers used. SwiftShader is used in Chrome to run WebGL on systems without modern GPUs or to work around problems in graphics drivers.

Why it is important for anonymity, enabling or disabling the use of Google SwiftShader in the Human Emulator Studio affects all parameters of browser fingerprint associated with rendering. Including information about the graphics driver, in particular WebGL Unmasked Renderer settings.

When Google SwiftShader is enabled, WebGL information:

With Google SwiftShader disabled:

As we see from the pictures that not just the Unmasked Renderer parameter is changing, but also the resulting lines of WebGL WebGL Report Hash and WebGL Image Hash. The same thing happens with Canvas Fingerprint, it also changes depending on whether Google SwiftShader is enabled or disabled.

This parameter changes only from the program settings and after changing it a mandatory restart of the program is required.

Font fingerprinting.

Font fingerprint(System fonts) is what fonts you have installed on your OS and how they are drawn. Based on the size measurement of HTML text elements, can be build an identifier that can be used to track the same browser over time.

Here are some options for getting your font fingerprint:

JS Fonts(unicode) — are produced by measuring the boundary fields of certain Unicode code points based on the above study.
JS Fonts (classic) — uses a CSS fallback mechanism to compare the prepared font list with common font families.
Flash Fonts — this is the simplest, Flash has a method that simply returns an array of available system fonts.

Based on all the information received, your unique identifiers are created again.

When the browser scale is changed even by 1 unit, the Font fingerprint identifiers also change.

Without zooming:

after executing the php code:

As you can see from the pictures, the definition of fonts using Flash in Human Emulator Studio is disabled by default.

Since version 7.0.43, the command set_random_bounds_fingerprint has been added to the object browser.

The command takes a parameter:

noise = -1 – noise, this is a number from -1 to 999999999. By default, noise is -1, that is, there is no noise.

Without using the command:

An example of using a command in php:

After executing the command:

You can remove the distortion using the command as follows:


The getClientRects method returns a value that is a collection of DOMRect objects, one for each CSS border field associated with the element.
Depending on other parameters such as resolution, fonts, etc. makes this value unique for each computer, and accordingly, having received this value, you can be identified by it in the future.

There is no substitution for this fingerprint, but it is also affected by changes in browser scale even by 1 unit.

php example:

Without zooming:

After running the example in php:

In any case, at the moment, our development department is looking for a solution to replace ClientRect.

As the functionality associated with the fingerprints of the browser changes or supplements, this article will be supplemented or modified.

AudioContext Fingerprint.

It works similarly to other fingerprints, but instead of the Canvas API, in this case, the AudioContext API library is used, this is the Web Audio API that all modern browsers support. Using the AudioContext API to determine the AudioContext fingerprint does not collect the sound played or recorded by your device, the AudioContext fingerprint is a property of the audio stack of your device and this method of obtaining your identifier is independent of the browser.

To replace this fingerprint in version 7.0.43 to the object browser the command set_random_audio_fingerprint was added.

The command accepts the following parameters:
noiseAudio – sound noise, can be from 1 to 999999.
noiseFrequence – frequency noise, can be from 1 to 99.

Without using the value function on

php command example:

After executing the example:

In order to reset to default, you just need to call the command in the form:

discuss the article on the forum