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 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.
On this tab, we set the Name and Description of the profile.
Cash|Cookies.
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.
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: //127.0.0.1: 9150 to work through the toro. In this case, the Tor should already be running on your computer.
Languages and Acceptances.
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.
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.
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.
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.
Setting navigator.geolocation.getCurrentPosition – Latitude, 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.
In this tab, the parameters of internalization are set, which can be found in the article The location.
Web GL.
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.
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.
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:
Dynamic content is site content that is loaded after the main page of the site is loaded. This can be any data that is loaded onto the page, for example, using JS scripts. If you look at the source code of such a page, then this data will not be there. Data loading using scripts is used by online stores, sites for displaying various financial data, statistics sites, banking sites, etc. Parsing such sites without the participation of a browser will be a rather time-consuming process, since you have to understand how scripts work and try to emulate requests in order to simulate the operation of a browser. This requires some knowledge and a lot of time. Moreover, this work will have to be done for each site from which you need to parse such data.
Parsing dynamic content in the Human Emulator is much easier, since all content is loaded into the built-in browser and you don’t need to imitate anything, you just need to parse the data of interest. The algorithm of actions is very simple:
go to a web page
waiting for data loading
parse a data
As an example, we will get the Key data from the Nasdaq website for a few stocks as MSFT, BABA, AAPL and AMZN.
[4] => AOSL Alpha and Omega Semiconductor Limited
$14.95
1.88
14.42%
[5] => HMHC Houghton Mifflin Harcourt Company
$2.32
-0.17
-6.83%
[6] => BBIO BridgeBio Pharma, Inc.
$37.14
-2.46
-6.21%
[7] => NCMI National CineMedia, Inc.
$2.63
-0.17
-6.18%
[8] => LMNL Liminal BioSciences Inc.
$10.37
-0.65
-5.9%
[9] => GILT Gilat Satellite Networks Ltd.
$4.98
-0.23
-4.41%
[10] => AAPL Apple Inc.
$114.19
1.17
6,561,775
[11] => AAL American Airlines Group, Inc.
$12.85
-0.14
5,198,792
[12] => CRVS Corvus Pharmaceuticals, Inc.
$5.28
1.21
4,385,358
[13] => TSLA Tesla, Inc.
$427.50
12.41
3,874,375
[14] => NKLA Nikola Corporation
$24.91
0.66
3,482,596
[15] => TSLA Tesla, Inc.
$424.20
9.11
2.19%
[16] => AMZN Amazon.com, Inc.
$3142.70
17.70
0.57%
[17] => AAPL Apple Inc.
$114.06
1.04
0.92%
[18] => MYOK MyoKardia, Inc.
$220.54
80.94
57.98%
[19] => REGN Regeneron Pharmaceuticals, Inc.
$612.17
47.37
8.39%
)
It is not difficult to guess in this way you can receive data for any period of time. At the same time, using the script schedule, you can run such a script before opening trades and receive data during the entire time the trades are in progress.
Command line options in Human Emulator Studio. /port: “port” – indicates on which port the program is launched to receive control commands. If this parameter is not specified, the port is taken from the port.txt file in the Settings folder of the program. The port can be from 1 to 65535. For example, the /port: “7010” parameter – sets the port 7010 on which the program is running.
/script: “path to the script” – with the help of this parameter we specify which script to run in the program for execution. If the path to the script is not specified, the program is launched without executing the script. The path must be absolute, that is, for example: “C:\XWeb\Human Emulator Studio\My Scripts\1.php“
/script_args: “space separated arguments” – arguments to be passed to the script being run. This parameter is used to pass any data to the script. For example, we pass: “7010 ‘1.txt’ 5″. All these values will be placed in the array $argv[], that is, $argv[1] = 7010, $argv[2] =’1.txt’, and $argv[3] = 5. In this case, always $argv[0] = “path to the running script”, if the path is not specified then $argv[0] will be empty. The /port: parameter tells the whole program on which port to run, and to run the script, the port must be passed through the /script_args: parameter.
/browser_command_line: “space separated commands” – command line arguments for the Chromium browser. For example: /browser_command_line: “- disable-gpu —disable-headless-mode”. A list of available commands can be found here https://peter.sh/experiments/chromium-command-line-switches/.
/settings_folder: “path to folder” – path to the folder with settings. By default, all settings are stored in the Settings folder, which is located in the program folder. Using this parameter, you can specify a folder with settings for the program from anywhere. The path must be absolute, that is, for example: “C:\XWeb\Human Emulator Studio\Settings1“
/cookies_folder: “path to the cookie folder” – set the path to the cookie folder. The path must be absolute, that is, for example: “C:\XWeb\Human Emulator Studio\7010\cookies_1“
/cache_folder: “path to the cache folder” – set the folder to the cache folder. This is an obsolete parameter, since the cache folder is currently automatically placed inside the cookie folder.
/ask_port: “true” or /ask_port: “1” or /ask_port: “yes” – when starting the program, do not ask questions about switching to the next free port, if the current port is busy, then simply do not start the program.
/in_tray: “1” or /in_tray: “true” or /in_tray: “yes” – when launching, hide the program to the tray (system tray).
/hide_tray_icon: “1” or /hide_tray_icon: “true” or /hide_tray_icon: “yes” do not show the icon in the system tray (system tray).
/as_unicode: “1” or /as_unicode: “true” or /as_unicode: “yes” – the script is run in unicode format.
from version 7.0.44
/password: “psw” – to set the Password at startup setting.
/browser: “Chromium” or /browser: “Firefox” – select the browser model in which the script will be executed.
from version 7.0.47
/default_profile_path: “path” – to set the path to the default profile file.
from version 7.0.52
/decode_script_password: “password” – to pass the password when running the encoded script.
If the above parameters are not specified when starting the program from the command line, then the values are taken from the program settings or take the default values.
Run the program from the command line.
How to run a program with command line parameters.
There are many ways to run with command line parameters. Consider the following:
Option 1 through a shortcut on the desktop. Option 2 via a .bat file.
Desktop shortcut.
To do this, create a shortcut on the desktop, and then specify the command line launch parameters in the shortcut settings.
Now, every time you run through this shortcut, we will run a script with the parameters specified in it.
Batch file
Batch file (.bat) are ordinary text files containing a set of commands and having the .bat extension. Any text editor will do for editing such a file. In this case, if you double-click on the file, then it will not open in the editor, but will execute the commands written in it. In our case, we will register in this file the launch of the Human Emulator Studio program and pass command line parameters to it.
So, let’s run the program with the following command line /port: “7012” /script: “C:\XWeb\Human Emulator Studio\My Scripts\1.php” /script_args: “7012 ‘2332.txt’ 1123 ″. For clarity, we will run the program on port 7012 and use other arguments in this case.
Create a batch file and add the following line to it:
The script will run the same one that was launched through the shortcut.
After starting the file, the program will open with the launch of the 1.php script for execution. After running the script, the following information will be displayed in the debug window:
1
2
3
4
5
pass the following arguments tothe script from the command line/script_args:"7012 '2332.txt' 1123"
Autoclicker is a program that records all actions related to mouse and keyboard control and then reproduces all these actions automatically. Accordingly, an autoclicker for a browser is a program that repeats the necessary actions in the browser.
All versions of the program have all the necessary tools for recording and controlling the keyboard and mouse. For recording, the Macros tool is used, which records your actions in the browser built into the program.
Macros.
Working with Macros is described in the article User actions record using tool the Macros. This work is identical in all versions of the program. The only thing is that to write an autoclicker, you will need to select the Full mouse emulation and Full keyboard emulation checkboxes in the Macros settings. In this case, a real keyboard and mouse will be used.
Keyboard simulation.
To control the keyboard, the keyboard object has been added to all versions of the program. This object provides complete control over all keyboard capabilities. And in two modes: full keyboard simulation and transfer of events from the keyboard to the browser.
Full keyboard simulation.
In full keyboard emulation mode, Human Emulator controls input from a real keyboard, that is, it sends events as if a real person presses keyboard keys. In this case, all actions with the keyboard will be performed in any active window, be it a window of the built-in browser program or an open Notepad window.
An example of working in php in full emulation mode:
1
2
3
4
5
6
7
8
9
// go to the search engine
$browser->navigate("http://www.google.com");
// make the text input field active
$input->set_focus_by_name("q");
// enter text
$keyboard->input("human emulator\n",10);
An example of keyboard input into an open Notepad window for programs based on Internet Explorer:
1
2
3
4
5
6
7
8
9
10
// create a file
$textfile->write_file("1.txt","1");
// open the program for editing
$app->shell_execute("open","1.txt","",'',true);
// pause to start the program
sleep(5);
// enter text into the active window
$keyboard->input("human emulator\n",10);
In Human Emulator Studio, working with the input command is slightly different, so in order to perform the same action as in the example above, you either need to use the clipboard:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// create a file
$textfile->write_file("1.txt","");
// open the program for editing
$app->shell_execute("open","1.txt","",'',true);
// pause to start the program
sleep(5);
// save to clipboard
$clipboard->put_text("human emulator");
// hold CTRL
$keyboard->set_ctrl_prefix(true);
// press V
$keyboard->key(86);
// press CTRL
$keyboard->set_ctrl_prefix(false);
Or use the functionality to manage external windows.
An example on php for working in Studio:
1
2
3
4
5
6
7
8
9
10
11
12
// create a file
$textfile->write_file("1.txt","");
// open the program to edit the file
$app->shell_execute("open","1.txt","",'',true);
// pause to start the program
sleep(5);
// get notepad window
$ntp_wnd=$window->get_by_text("Notepad");
// enter text into it from the keyboard
$ntp_wnd->input("human emulator\n");
Passing events from the keyboard to the browser.
The second mode is event transmission. In fact, when you work with the keyboard, after each keystroke, the active window of the program receives a number of messages and the corresponding action is performed based on these messages. Moreover, this event moves from one active window to the next. That is, when you enter text from the keyboard into a text field in a browser, this message is received first by the browser window, and then through the chain of parent elements and the text field, as well as all its child elements.
Thus, you can work simultaneously in several dozen browsers, while in full emulation mode you can work with only one active browser window, as is the case with real keyboard use. All commands for sending events of the keyboard object have the send_ * prefix.
An example of sending events to php:
1
2
3
4
5
6
7
8
9
// go to the search engine
$browser->navigate("http://www.google.com");
// make the text input field active
$input->set_focus_by_name("q");
// enter text
$keyboard->send_input("human emulator \n",10);
In addition to the keyboard object commands, all HTML DOM objects have send_keyboard_input_by_ * commands. These commands pass keyboard input events to the HTML element.
Mouse simulation.
To control the mouse, the mouse object has been added to all versions of the program. As with the keyboard, you can also work with the mouse in two modes: full emulation of mouse actions and transmission of events from the mouse to the browser element. The principle of operation is the same and with the keyboard, full emulation of the use of a real mouse cursor, and in the event transmission mode, all events from the mouse are transmitted to the element.
Full mouse simulation.
Working with a real mouse. In this mode, the real mouse cursor will be used and during the execution of mouse actions, it will be possible to observe how the cursor on the monitor moves across the screen. For complete emulation, the corresponding commands were added to the object. With the help of these commands, you can perform all the actions that a person can perform with a real mouse: perform clicks on different buttons, spin the wheel, pinch and release buttons, move the cursor.
An example of using full emulation in php:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// go to the site
$browser->navigate("http://humanemulator.net");
// move the mouse cursor to the desired point
$mouse->move(250,150,2);
// hold down the right mouse button
$mouse->left_button_down(250,150);
// move the mouse cursor to the new coordinates
$mouse->move(1050,650,3);
// release the right mouse button
$mouse->left_button_up(1050,650);
The example above moves the mouse cursor to a specified point on the page, holds down the left mouse button and moves the cursor to new coordinates. After completing this example, a portion of the text on the page will be selected.
Example of mouse clicks in an outer window in an IE based Human Emulator:
1
2
3
4
5
6
7
8
9
// create a file
$textfile->write_file("1.txt","1");
// open the program for editing
$app->shell_execute("open","1.txt","",'',true);
// pause to start the program
sleep(5);
// open the context menu by right-clicking
$mouse->right_button_click();
An example of mouse clicks in an outer window in Chromium-based Human Emulator Studio:
1
2
3
4
5
6
7
8
9
10
11
12
13
// create a file
$textfile->write_file("1.txt","");
// open the program to edit the file
$app->shell_execute("open","1.txt","",'',true);
// pause to start the program
sleep(5);
// get notepad window
$ntp_wnd=$window->get_by_text("Notepad");
// enter text into it from the keyboard
$ntp_wnd->mouse_right_click(10,10);
Passing mouse events.
To send events directly to the browser, use the send_ * prefix commands. Unlike full emulation commands, these commands allow you to work even with a minimized program window and are suitable for multi-threaded work.
An example of sending mouse events to php:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// go to the site
$browser->navigate("http://humanemulator.net");
// move the mouse cursor to the desired point
$mouse->send_move(250,150,2);
// hold down the right mouse button
$mouse->send_left_button_down(250,150);
// move the mouse cursor to the new coordinates
$mouse->send_move(1050,650,3);
// release the right mouse button
$mouse->send_left_button_up(1050,650);
Through the functionality of the windowinterface object (an interface for managing external windows), you can not only work in full emulation mode, but also send mouse events to these windows.
Another way to work with the mouse and keyboard with page elements in a browser is to use the functionality of connecting to an element through an interface.
To obtain this interface, one of the commands available from any DOM object of the program is used.
After we have received a link to the interface, we use the commands: Full mouse emulation over the element, Mouse emulation at the event level over the element, Full keyboard emulation over the element, Keyboard emulation at the event level above the element.
In this case, our example for a full keyboard and mouse emulation to work with a google textbox would be:
1
2
3
4
5
6
7
8
9
10
11
// go to the search engine
$browser->navigate("http://www.google.com");
// get the textbox interface
$q_txt=$input->get_by_name("q");
// emulate keyboard events
$q_txt->input("human emulator \ n","10");
sleep(1);
// passing mouse events
$q_txt->mouse_click(10,10);
and sending the event to the same field will look like this:
1
2
3
4
5
6
7
8
9
10
11
12
// go to the search engine
$browser->navigate("http://www.google.com");
// get the textbox interface
$q_txt=$input->get_by_name("q");
// emulate keyboard events
$q_txt->send_input("human emulator \ n","10");
sleep(1);
// passing mouse events
$q_txt->send_mouse_click(10,10);
A random trajectory of the mouse.
When the command move the mouse cursor move or send_move is called, the mouse cursor moves in a straight line from the starting point to the point specified in the command. But sometimes it becomes necessary to move the mouse along complex and random trajectory, that is, as a person would do by viewing the page or reading text on it. For this purpose, the move_to and send_move_to commands have been added to the program. These commands move the cursor along random trajectory in the form of a line, curve, chaotic movement, along a circular path and along a trajectory to simulate text reading.
Php example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Go to google
$browser->navigate("http://bigfozzy.com");
// pause
sleep(2);
// Go to point 100,100 along the line in 1000 ms
$mouse->move_to(100,100,"line",1000);
// pause
sleep(2);
// Go to a point along the curve in 1000 ms
$mouse->move_to(500,500,"curve",1000);
// pause
sleep(2);
// Go to point 300,300 by chaos in 500 ms
$mouse->move_to(300,300,"chaotic",1000);
// pause
sleep(2);
// Go to point 400,400 in a circle in 1000 ms
$mouse->move_to(400,4000,"circle",1000);
Autoclicker based on Human Emulator.
As you can see from this article, all versions of the Human Emulator have enough functionality to use it to make not only a browser autoclicker, but also an autoclicker for external windows.
In the article we in detail explain how you can use the Macros in the Human Emulator Studio.
One of the first tools built into the program, which was added to simplify the creation of scripts, is the Macros.
How does it work?
When you enable the Macros, your actions in the browser are recorded, such as going to pages in the browser, all possible clicks on elements, and entering data in various browser fields. In this case, there are two modes of operation, this is when all actions are recorded via mouse control or using functions for working with individual objects.
Configuring the Macros
Before you start recording, you need to configure the Macros. The Macros settings are located in the General settings of the program, the Macros tab.
Now let’s go through all the settings.
Add focus by click — when you select this check box, the focus command will be added to each of your clicks. Add mouse move to click — when you select this check box, the send_mouse_move command will be added to each of your clicks. Add pause to click — if you select this check box, the sleep(1) command will be added after each click, i.e. wait for one second.
In other words, when you select these settings, your code will look like this:
Check boxes Full mouse emulation and Full keyboard emulation. When you select these check boxes, functions will be substituted that fully emulate mouse movements and keyboard input to the active window. When script run in full emulation mode you will not be able to use your computer or work in multithreaded mode, as any actions with the mouse cursor or using the keyboard may interfere with the script.
The radio button group Create function. Responsible for the priority parameter with the program define the element to work with. By default, the item is selected Auto, in other words, the item is determined by the first available parameter, starting with the item ID and ending with the item number.
The check box Create new script. If you select this check box, a new script will be created when you start recording the Macros and all actions will be recorded in this script. If the check box is removed, then the entry will go to the current script, in the place where the carriage is installed in the editor.
Start the Macros
Use the Actions menu to enable the Macros.
Press menu item Start Recordor use hotkey Ctrl+Shift+R.
Create simple script using the Macros.
Now let’s write a simple script. In built-in bowser enter google.com and press Go.
Turn on the Macros using menu item Start Record. Enter phrase human emulator in the Google search field. Press Enter. Click on the first link in the output. Turn off the Macros using menu item Stop Record. And we have the script like as:
Slightly change the Macros settings and disable the check boxes with focus, mouse movement and pause. And instead of Enter, press the Google search button. We get the script like as:
As it is not difficult to notice, the work in the Macros goes through the Dom Interface of objects. That is when you get the element itself you can do various actions with it such as:
Actions with an element click – click on an element meta_click – focus, move the mouse to the element at random coordinates, and click event – send an event to the element check – check the element focus – set the input focus on the element scroll_to_view – scroll the page so that the element is visible (via java script) ensure_visible – scroll the page so that the element is visible (via scrolling) scroll – scroll the element screenshot – take a screenshot of an item
Change an item set_value – set a value set_inner_text-set internal text set_inner_html-set internal htmlml add_attribute – add an attribute set_attribute – set an attribute remove_attribute – remove an attribute
etc.
And all these actions can be performed with any element, be it a anchor or a button. You can also get a page element as an interface using the same functions for all page elements:
Getting the DOM interface get_by_number – get the DOM interface by number get_by_name – get the DOM interface by name get_by_id – get the DOM interface by id get_by_inner_text – get the DOM interface by internal text get_by_inner_html – get the DOM interface from internal html get_by_outer_text – get the DOM interface from external text get_by_outer_html – get the DOM interface from external html get_by_href – get the DOM interface by href get_by_alt – get the DOM interface by alt get_by_src – get the DOM interface by src get_by_value – get the DOM interface by value get_by_attribute – get the DOM interface by attribute value get_by_properties – get the DOM interface by the value of several properties get_by_xpath – is to obtain the DOM interface by its XPath
In other words, as in other functions, we work with page elements by several parameters, such as name, id, sequence number, and so on. All this can be viewed through the element inspector or use the same context menu.
Use of macros.
The macros is useful when you need to write simple scripts or some parts of scripts, when you can’t define some elements with other tools. At the same time, you should understand that the scripts recorded by the Macros will still have to be edited, since we use the Macros to record actions with page elements. You can add commands that are not related to page elements using another tool, the code Helper.
All automation actions that are specified using commands in scripts are performed in the browser built into the program. The main browser in Human Emulator Studio is Chromium. It was on the basis of this browser that the first version of the program was made. Later, other browsers were added to the program, and currently the following browsers Chromium, Chromium (Compact), Chromium (Offscreen), Firefox (beta) and Chrome Selenium WebDriver (alpha) were built into the program.
The browser model can be selected using the settings dialog, the Browser tab, the Browser Model drop-down list.
or using the command of object browserset_model
php usage example:
1
2
3
// set browser model Chromium
$browser->set_model("Chromium")
options:
Chromium
Chromium (Compact)
Chromium (Offscreen)
Firefox
Chrome Selenium WebDriver
The same options can be used when working with the program through the command line in the command line parameter /browser: “XXX”.
Chromium Browser.
The Chromium browser is an open source project that allows its source code to be used in other products, which is why many browser applications and browsers use Chromium as the basis. This also applies to the Human Emulator Studio program, as well as browsers such as Google Chrome, Yandex.Browser, the latest versions of the Opera browser, the new Internet Explorer, etc. The differences between these browsers from each other is only in their additional functions added to the Chromium browser.
Chromium updates come out quite often, and as soon as a new stable version of Chromium appears, our developers implement it in the program, so in the latest versions of Human Emulator Studio, as a rule, the last stable Chromium is introduced. You can view the current version of the program by going to the chrome://version/ information page in the program.
Chromium (Compact).
From the version of Human Emulator Studio 7.0.47, the Chromium (Compact) browser model has been added. This is the same Chromium browser operating in a special mode in which the browser consumes less RAM, but loads a little more CPU. This is achieved through the use of WPF, which is based on a vector visualization system that does not depend on the resolution of the output device and is created taking into account the capabilities of modern graphics equipment. The graphic technology underlying WPF is DirectX.
Chromium (Offscreen).
From the version of Human Emulator Studio 7.0.48, the Chromium (Offscreen) browser model has been added. This is the same Chromium browser working in a special mode in which the browser does not draw the pages that are opened. That is, you simply will not see the page, although the program itself will work with it without problems.
In this mode, the browser works faster and consumes less memory, since it does not render anything on the real screen, including huge pictures by weight and other heavy elements. When working in this mode, there are restrictions on the use of a real mouse and keyboard; they do not work on a hidden browser. You can also take screenshots of only the visible part of the browser, but this can be easily solved by setting the size of the browser. Otherwise, there are no restrictions when working in this mode.
These two Chromium models were added to the program to optimize memory handling.
Firefox Browser.
Since version Human Emulator Studio 7.0.44, the Firefox browser has been added to the program. This is a free browser on the Gecko engine, developed and distributed by Mozilla Corporation. This browser is currently in beta mode. This means that almost all the functionality existing in the program is supported by this browser and it can be used to automate your tasks on a par with other browser models available in the program.
To work in this browser, select it in the program settings. The number of the built-in version can be viewed by going to the about: config page in the program browser and finding the fields containing the version word.
Chrome Selenium WebDriver Browser.
Since Human Emulator Studio 7.0.44 in alpha mode, an experimental model of the Chrome Selenium WebDriver browser has been added. Essentially, it’s controlling the Chrome browser installed on your computer using Selenium WebDriver. This browser model currently supports only the basic functionality of the program.
Selenium WebDriver is the software library of the Selenium project, with which you can control the behavior of the browser. This project is mainly used for testing sites or online services and their individual elements. Working in this mode does not guarantee anonymity, but since WebDriver works with real Chrome, it can help to solve some problems that for some reason do not work in other browsers built into the program.
When working in this mode, a separate Chrome browser window is launched, in which all actions are performed. In this case, Human Emulator Studio broadcasts this window.
In this browser, you can use program tools such as the Element Inspector and the Elements Tree to work with the HTML elements of the page open in the browser.
To exit this mode, you need to select a different browser model in the program settings.
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 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.
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:
1
2
3
4
5
6
7
8
echo"Via JS using a saved Canavas array :";
$js="
var imgDateArrayEncoded = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZpn/AGaZ/wBmmf8AZpn/AGaZ/wBmmf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZpn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZpn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmmf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZpn/AGaZ/wBmmf8AZpn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGaZ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAGaZ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGaZ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGaZ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmmf8AZpn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZpn/AAAAAAAAAAAAAAAAAAAAAABmmf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmmf8AAAAAZcwAs2XMALNlzACzZcwAs0etLv9lzACzAAAAAABmmf8AAAAAAGaZ/wBmmf8AAAAAAAAAAABmmf8AZpn/AGaZ/wBmmf8AAAAAAAAAAABmmf8AAAAAAAAAAAAAAAAAZpn/AAAAAAAAAAAAAAAAAGaZ/wAAAAAAAAAAAGaZ/wBmmf8AZpn/AAAAAAAAAAAAAAAAAAAAAABmmf8AZpn/AGaZ/wBmmf8AAAAAAAAAAAAAAAAAZpn/AAAAAABmmf8AZpn/AAAAAABmmf8AAAAAZcwAswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmmf8AZpn/AGaZ/wBmmf8AAAAAAAAAAAAAAAAAAAAAAGaZ/wBmmf8AZpn/AGaZ/wAAAAAAAAAAAAAAAABmmf8AAAAAZcwAswAAAAAAAAAAAGaZ/wAAAAAAAAAAAGaZ/wBmmf8AZpn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZpn/AGaZ/wBmmf8AAAAAAAAAAAAAAAAAAAAAAGaZ/wBmmf8AZpn/AGaZ/wAAAAAAAAAAAAAAAABmmf8AAAAAAGaZ/wBmmf8AAAAAAGaZ/wBmmf8AZpn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/2YA//9mAP//ZgD//2YA//9mAP//ZgD/AGaZ//9mAP//ZgD//2YA/wBmmf8AZpn/AGaZ//9mAP//ZgD//2YA//9mAP8AZpn/AGaZ/wBmmf8AZpn//2YA//9mAP//ZgD/AGaZ//9mAP8AZpn/AGaZ/wBmmf//ZgD//2YA/wBmmf//ZgD//2YA//9mAP//ZgD//2YA/wBmmf//ZgD//2YA/wBmmf8AZpn/AGaZ/wBmmf//ZgD//2YA//9mAP//ZgD/AGaZ/wBmmf8AZpn//2YA//9mAP//ZgD/AGaZ//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP8AAAAAAAAAAAAAAAAAAAAAAAAAAABmmf8AAAAAAGaZ/wAAAABlzACzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGaZ/wAAAAAAAAAAZcwAs2XMALNHrS7/ZcwAswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZpn/AAAAAGXMALMAAAAAAAAAAAAAAAAAZpn/AAAAAGXMALMAZpn/AGaZ/wAAAAAAAAAAAAAAAABmmf8AAAAAAAAAAAAAAAAAAAAAAGaZ/wAAAAAAZpn/AAAAAAAAAAAAAAAAAGaZ/wAAAAAAAAAAAAAAAABmmf8AAAAAAGaZ/wAAAAAAAAAAAAAAAABmmf8AAAAAAAAAAABmmf8AAAAAAAAAAAAAAAAAAAAAAGaZ/wAAAAAAAAAAAGaZ/wBmmf8AAAAAAAAAAAAAAAAAZpn/AAAAAGXMALMAAAAAAAAAAAAAAAAAAAAAAAAAAABmmf8AAAAAAAAAAAAAAAAAAAAAAGaZ/wAAAAAAAAAAAGaZ/wAAAAAAAAAAAAAAAAAAAAAAZpn/AAAAAAAAAAAAZpn/AAAAAGXMALMAAAAAAGaZ/wAAAAAAAAAAAGaZ/wAAAAAAAAAAAAAAAABmmf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZpn/AAAAAAAAAAAAAAAAAGaZ/wAAAAAAAAAAAGaZ/wAAAAAAAAAAAAAAAAAAAAAAZpn/AAAAAAAAAAAAZpn/AGaZ/wAAAAAAAAAAAGaZ/wBmmf8AAAAAAAAAAABmmf8AAAAAAAAAAAAAAAAAAAAAAAAAAP9mAP//ZgD//2YA//9mAP8AZpn/AGaZ//9mAP//ZgD//2YA/wBmmf//ZgD//2YA//9mAP8AZpn//2YA//9mAP8AZpn//2YA//9mAP//ZgD//2YA/wBmmf//ZgD//2YA/wBmmf8AZpn//2YA//9mAP//ZgD/AGaZ//9mAP8AZpn//2YA//9mAP//ZgD//2YA//9mAP8AZpn//2YA/wBmmf//ZgD//2YA//9mAP//ZgD/AGaZ//9mAP//ZgD/AGaZ//9mAP//ZgD//2YA/wBmmf//ZgD//2YA//9mAP8AZpn/AGaZ//9mAP//ZgD//2YA//9mAP//ZgD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmmf9lzACzZcwAswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmmf8AAAAAZcwAswAAAAAAAAAAAGaZ/wAAAABlzACzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGaZ/wBmmf9HrS7/AGaZ/wBmmf8AZpn/AAAAAAAAAABlzACzAGaZ/wAAAABlzACzAAAAAGXMALNHrS7/AAAAAAAAAABlzACzZcwAs0etLv9lzACzAAAAAABmmf9lzACzAGaZ/wAAAAAAZpn/ZcwAswBmmf8AAAAAAAAAAEetLv8AAAAAAAAAAGXMALNlzACzZcwAswAAAAAAZpn/AAAAAAAAAABlzACz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AAAAAGXMALNlzACzAAAAAAAAAABlzACzAAAAAAAAAAAAAAAAZcwAswAAAAAAAAAAZcwAswAAAAAAAAAAAAAAAGXMALMAAAAAAGaZ/wAAAAAAAAAAAAAAAAAAAABlzACzAAAAAAAAAAAAAAAAZcwAswAAAAAAAAAAZcwAswAAAAAAAAAAAAAAAAAAAABlzACzAAAAAAAAAABlzACzAAAAAAAAAAAAAAAAZcwAswAAAAAAAAAAAAAAAGXMALMAAAAAAAAAAAAAAAD/ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA/5OtAP//ZgD//2YA/5OtAP//ZgD//2YA//9mAP+TrQD//2YA//9mAP+TrQD//2YA//9mAP//ZgD/k60A/5OtAP//ZgD//2YA/5OtAP//ZgD//2YA//9mAP//ZgD/k60A//9mAP//ZgD//2YA//9mAP+TrQD//2YA//9mAP//ZgD//2YA/5OtAP//ZgD//2YA//9mAP+TrQD/k60A//9mAP//ZgD/k60A//9mAP//ZgD//2YA/5OtAP//ZgD//2YA/5OtAP//ZgD//2YA//9mAP//ZgD//2YA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGXMALMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGXMALMAAAAAAAAAAAAAAAAAAAAAZcwAswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZcwAs2XMALNlzACzZcwAs2XMALNlzACzAAAAAAAAAAAAAAAAZcwAswAAAAAAAAAAAAAAAAAAAAAAAAAAZcwAs2XMALNlzACzZcwAswAAAAAAAAAAAAAAAAAAAABlzACzAAAAAAAAAAAAAAAAZcwAswAAAAAAAAAAAAAAAAAAAABlzACzZcwAs2XMALMAAAAAAAAAAAAAAAAAAAAAZcwAs2XMALNlzACzZcwAswAAAAAAAAAAAAAAAGXMALMAAAAAAAAAAAAAAAAAAAAAZcwAs2XMALNlzACzZcwAs2XMALNlzACzZcwAswAAAAAAAAAAZcwAs2XMALNlzACzZcwAswAAAAAAAAAAAAAAAAAAAABlzACzZcwAs2XMALMAAAAAZcwAswAAAAAAAAAAZcwAswAAAAAAAAAAAAAAAAAAAABlzACzAAAAAAAAAABlzACzZcwAs2XMALMAAAAAAAAAAABmmf8AAAAAZcwAswAAAAAAAAAAAAAAAGXMALNlzACzZcwAswAAAAAAAAAAAAAAAAAAAABlzACzZcwAs2XMALNlzACzAAAAAAAAAAAAAAAAZcwAswAAAAAAAAAAAAAAAGXMALMAAAAAAAAAAAAAAABlzACzAAAAAAAAAAAAAAAA/2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD/k60A/5OtAP+TrQD//2YA//9mAP//ZgD//2YA/5OtAP+TrQD/k60A//9mAP+TrQD//2YA//9mAP+TrQD//2YA//9mAP//ZgD//2YA/5OtAP//ZgD//2YA//9mAP//ZgD/k60A//9mAP//ZgD//2YA//9mAP//ZgD/k60A/5OtAP+TrQD//2YA/5OtAP//ZgD//2YA//9mAP+TrQD/k60A/5OtAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlzACzAAAAAAAAAAAAAAAAAAAAAAAAAABlzACzAAAAAAAAAAAAAAAAZcwAs2XMALNlzACzZcwAswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGXMALMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlzACzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD//2YA//9mAP//ZgD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
var aTmp=atob(imgDateArrayEncoded).split('').map(function (c) { return c.charCodeAt(0); });
for (var i = 0; i < height*width*4; i++)
imageData.data[i] = aTmp[i];
";
echo$browser->set_canvas_toDataURL("1",$js)."\n";
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 browserleaks.com/webgl – 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 browserleaks.com/webgl.
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:
1
2
3
// note the use of random webgl fingerprint
$browser->set_random_webgl_fingerprint(false);
WebGL can simply be disabled using the browser enable_gpu_rendering object command.
php example:
1
2
3
// disable use of webgl
$browser->enable_gpu_rendering(false);
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.
You can remove the distortion using the command as follows:
1
2
3
// reset the noise
$browser->set_random_bounds_fingerprint();
ClientRect.
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.
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 audiofingerprint.openwpm.com:
We will not describe in detail what proxies are and how they work, if you wish, you can easily find a huge number of articles on this topic on the network. In short, the proxy is a laying server between you and the site, and all your requests to the site go through this server. Thus, the site sees the IP proxy server, and not your real IP.
But not so simple. There are various types of proxies:
HTTP and HTTPS Proxy is a proxy server that allows you to work on the Internet using HTTP and HTTPS / FTP protocols.
They, in turn, can be:
transparent – these proxies are not anonymous. They let you know that a proxy server is being used and issue the IP address of their client. anonymous – these proxies let you know that the proxy is being used, but they do not give out the IP address of your client. distorting – transmit a fictitious IP address to the remote web server. really anonymous (elite) – do not tell the remote computer your IP address and that a proxy server is being used.
SOCKS4/5 is a proxy server that works with various protocols: HTTP, FTP, POP3, etc., transmit all information from the client and do not add anything from itself and do not reveal HTTP headers, unlike HTTP proxy. The difference between SOCKS4 and SOCKS5 is that SOCKS 5 can work through the UDP network protocol, in schemes with strong authentication and supports IPv6 network addressing.
You can use any type of proxy depending on your tasks. A high-quality proxy server will not show your real IP, it will not be possible to understand through it that you are using a proxy server, it will replace other information about the provider, host, DNS and it will not be blacklisted.
Work with proxies and socks in Human Emulator Studio.
Working with proxies/socks in Human Emulator Studio is similar to working in Human Emulator. In both versions of the program, the object browser command enable_proxy is used for this.
But Human Emulator Studio, unlike Human Emulator, works with all types of proxies, including SOKS5. BUT at the moment, unfortunately, the program does not work with SOKS5 with authentication, that is, access to them is carried out by login and password. This is a feature of the Chromium engine and has not yet been fixed.
To disable the proxy, the object browser command disable_proxy is used; to get the current proxy, the command get_current_proxy is used.
php example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// show an example of use on the example of working with the torus
// to work under the torus, enable the connection through socks5
// for normal operation, the torus must be running on the computer
// keep in mind that TOR completely hides all your data, but it tells the site that the work is being done through an anonymizer tor.
Work with the proxy list.
Sometimes to solve a problem, you need not one proxy, but the use of a large number of proxies. Usually they are presented as text files in the format of one line one proxy server. To work with the proxy list, a special object proxyswitcher has been added to Human Emulator Studio. Using this object, you can organize in the script more convenient work with proxy lists from different sources, whether it be a text file or a link to a site. How to work with the object we will write separate article “Object proxyswitcher. Advanced work with proxy list.“
WebRTC.
WebRTC (Real Time Communication) is a technology that allows users to transfer streaming audio and video data between mobile applications and browsers. Thanks to WebRTC, users can create video conferencing directly in browsers without any intermediaries. The biggest threat to using WebRTC is that this web technology determines your actual IP address. To create audio-video communications, the browser must work with local IP addresses.
In Human Emulator Studio, the WebRTC connection goes through a proxy. You can also disable WebRTC using the object browser command enable_web_rtc.
php example:
1
2
3
4
5
6
7
// requires restarting the program
// allow
$browser->enable_web_rtc();
// disable WebRTC
$browser->enable_web_rtc(false);
You can also disable WebRTC from the program settings. In version 7.0.40, Fake Media UI and Fake Media Devices settings were also added to improve fingerprint WebRTC. These settings affect WebRTC Media Devices.
Settings WebRTC.
Enabled Fake Media UI и Fake Media Devices.
Disabled Fake Media UI и Fake Media Devices.
Please note that in order to change these parameters, a restart of the program is required.
Timezone.
If you use a proxy server in a different country, which is in a different time zone than yours, then you can determine if you are using a proxy server by receiving the timezone of your real machine. To avoid this, you need to set the timezone of your local computer the same as the proxy used.
In Human Emulator Studio, the object browser command set_time_zone is used for this. Since version 7.0.41, time_zone is transmitted as GMT, that is, for example 3 = GMT + 0300, and -3 = GMT -0300.
php example:
1
2
3
// set GMT + 0300
$browser->set_time_zone(3);
What is internationalization?
Internationalization is a way to create applications in which they can be adapted for different audiences speaking different languages, which provides comparison of strings based on the language, number formatting and date and time formatting.
Data that can be obtained using this API:
Locale for example en-US Calendar for example gregory NumberingSystem for example latn TimeZone for example UTC Year for example numeric Month for example numeric Day for example numeric
more about Internationalization https://www.freecodecamp.org/news/how-to-get-started-with-internationalization-in-javascript-c09a0d2cd834/
To work with this API from version 7.0.40 in Human Emulator Studio was added to the object browser the command set_internazionalization(locale = “”, timeZone = “”, calendar = “”, numberingSystem = “”, year = “” , month = “”, day = “”).
Geolocation is your exact location. That is, the resource will be available not only to the city, but also your coordinates. By default, receiving geo data in Human Emulator Studio is disabled. But since version 7.0.37, the set_geo command has been added to the browser object.
example of using a function in php:
1
2
3
4
5
6
7
8
9
10
11
// set Latitude: 51.299300 and Longitude: 9.491000
When executing the example above, whoer.net will have the following picture:
Work with real IP and system time.
In addition to all of the above, Human Emulator Studio has functionality for changing your local IP in the network, DNS, system time, changing the MAC address of a given network card.
To change the local IP and DNS (from version 7.0.42), use the object connection command set_local_ip.
php example:
1
2
3
// change the settings 0 network card set the public google DNS
Using public DNS will help prevent your real DNS from leaking. A leak occurs when the browser independently makes DNS queries, instead of a proxy server. In this case, the DNS query comes from your real IP address or the IP address of the provider and you can catch them.
To set the system’s real time, use the object windows command set_system_date.
php example:
1
2
3
// Set the new system date 2012.11.06
$windows->set_system_date(2012,11,6);
To change the MAC address, use the object connection command set_mac_address_by_number.
We draw your attention to the fact that all these functions change the REAL values in your system, so if your the Internet is connected directly to the computer and configured by MAC address, then replacing the MAC address will cause the Internet connection to not work.
In fact, the cache is a bunch of temporary files downloaded from the site when you first go to it, provided that caching is enabled on it. This technology is used to speed up work with the site, that is, the included cache on the site reduces the latency of downloading and displaying content and reduces network traffic.
Anonymity and cache.
But at the same time, saving such files carries certain risks, including third-party software that can get access to these files. In addition, the sites themselves can put special files in the cache for your subsequent identification. Therefore, to maintain your anonymity, the cache must be cleaned.
Human Emulator Studio uses the object browser command clear_cache to clear the cache.
php example:
1
2
3
4
// clear cache
$browser->clear_cache();
At the same time, data from local storage or local data storages are also cleaned with this function.
Web storage.
Web storage (or earlier DOM Storage) https://html.spec.whatwg.org/multipage/webstorage.html is an HTML standard that provides functionality for storing data on the client side during a session (Session Storage), or after the end of the session (Local Storage). The standard Web storage appeared when the owner of the sites stopped grabbing traditional cookies as they had significant size limitations and security problems.
DOM Storage is the name for a set of tools related to storage, first introduced in the Web Applications 1.0 specification, and now singled out as a separate W3C Web Storage specification.
Accordingly, for your anonymity, these repositories must also be cleaned. If you need to clean only Local Storage, you can use the object browser command clear_local_storage.
php example:
1
2
3
4
// clear only local data storage
$browser->clear_local_storage();
php example:
1
2
3
4
// clear cookies for all sites, including session cookies
$browser->clear_cookies("",true);
IndexedDB.
Another user data storage. Since version 7.0.42, it is cleaned using the object browser command clear_cookies.
And also a separate function was added to the object browser clear_indexed_db, only for cleaning this storage.
Http cookies (web cookies) – this is data from the server, which in text form stores on your computer various settings, authentications, sessions, statistics, personal preferences, etc.
Cleaned using the object browser command clear_cookies($match_name,$clear_session=false,$clear_flash=true);
match_name – a template for searching sites whose cookies need to be cleared (part of the address), if an empty string is specified – all are cleared; clear_session – clear session cookies (true) or do not clear (false) when the command is executed. Session cookies – tracking the status of a user’s access session; clear_flash – whether to clear (true) or not to clear (false) flash cookies.
Flash Cookies (LSO Cookies) – unlike ordinary cookies, they are common to all browsers and with their help you can store a larger amount of information. These cookies are also cleared using the object browser command clear_cookies.
This function clears all cookies, including flash cookies.
In addition to cleaning with the command clear_cookies for Flash Cookies, it is possible to delete them with the object browser command flash_cookies_delete, and also restore the saved flash cookies from the specified folder as current ones using command of the object browser flash_cookies_restore and save the current flash cookies to the specified folder using the object browser command flash_cookies_save.
Evercookie — the most stable cookies, cookies are stored in almost all available storages and if they are not cleared from everywhere, they are automatically restored from the remaining ones. To clear them, you need to close all the tabs, go to the remaining page on a blank page and clean the cookies and cache and preferably restart the program.
php example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// close all browser tabs
$browser->close_all_tabs();
// navigate to google
$browser->navigate("about:blank");
sleep(1);
// clear all cookies
$browser->clear_cookies("");
sleep(1);
// clear all cashe
$browser->clear_cache();
sleep(1);
// restart human emulator
$app->restart();
Saving and restoring cookies and cache.
In order to save and then reuse all cookies and cache, you can use the functions of the object browser set_cookies_folder – set a folder for cookies. Cache folders will be created inside the specified folder with cookies.
The logic here is simple: you set a new folder and perform all the necessary actions such as navigating the site, logging into the account, downloading content, etc., then change the folder to a new one and again perform all the necessary actions under a different account. As a result, you will have several folders with cookies and cache, which can be used in the future.
// perform the necessary actions to get cookies and cache
// site navigation login content loading, etc.
// change folders
// set the Cookies folder
$browser->set_cookies_folder($cookies_path2);
// re-execute the necessary actions to get cookies and cache
// site navigation login content loading, etc.
// then set again
// set the cookie folder
$browser->set_cookies_folder($cookies_path1);
// and again we go to the necessary sites and do some actions there, etc.
Please note that when you restart the program, the folders with cookies are reset on the default path, so if you want the folder with cookies to remain the same after restarting the program, you need to use the object app command restart to restart program and in it set the desired folder with cookies. The cache folder is now always inside the cookie folder.
Deleting folders with cookies and cache at the time of starting the program.
In the program from version 7.0.25, settings have appeared for clearing cookies and cache at startup. Since it is not possible to completely delete the folders with cookies and the cache while the program is running, special settings have been added so that at the time the program starts, these folders are not already occupied by the browser processes to completely delete them. These settings are in the program settings tab “General” checkboxes “Clear cookies of the current port by start” and “Clear cache of the current port by start“.
Complete cleaning.
Complete cleaning of everything can be done using the command clear of the object app
php example:
1
2
3
4
5
6
7
8
9
// close all browser tabs
$browser->close_all_tabs();
// go to the remaining tab on a blank page
$browser->navigate("about: blank");
sleep(1);
// clean everything
$app->clear();
To completely clear all cookies and cache, after clearing them, you must restart the program using the object app command restart. This command allows you to restart the program with the launch of the script, as well as set a number of settings such as port, path to the folder with cookies. In addition, when the program is completely restarted, the memory leaks will also be cleaned, and if you have the settings “Clear cookies on the current port by start” and “Clear cache on the current port by start“, the folders with cookies and cache will be completely deleted. Thus, the logic of your script should take into account all these nuances.
An example in php using the function of clearing cookies and cache:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// here we set the settings for surfing
// surf
// and then
// close all browser tabs
$browser->close_all_tabs();
// go to the remaining tab on a blank page
$browser->navigate("about: blank");
sleep(1);
// Clear cookies
$browser->clear_cookies("");
sleep(1);
// Clear cache
$browser->clear_cache();
sleep(1);
// restart the program by running the same script on the same port
Human Emulator Studio has the ability to change a wide range of settings. All browser settings and other commands for managing the browser can be found in the documentation for the object – browser. This article will talk specifically about changing those settings that contain information about the browser.
Browser sizes.
The width and height of the browser are set using the commands set_width and set_height of the object browser.
php example:
1
2
3
4
5
6
7
8
// resize
// randomly in the range from 300 to 1200
// width
$browser->set_width(rand(300,1200));
// height
$browser->set_height(rand(300,1200));
The scale of the browser.
You can set the browser scale using command set_zoom of the object browser.
php example:
1
2
3
4
// Set the scale to 400%
$browser->set_zoom(400);
Screen resolution and color depth.
Screen resolution and bit rate are set by one command of the object browser – set_screen_resolution. Defines navigator: (width, height, pixelDepth) and their duplicates (availWidth, availHeight, colorDepth).
php example:
1
2
3
4
// set screen resolution 1024x768 and 24 bits
$browser->set_screen_resolution(1024,768,24);
Useragent string.
To set the Useragent string or the so-called browser identifier, the object browser command set_user_agent is used. Together with the browser identifier, you must fill in the following navigator parameters (window.navigator): appVersion, appName, appCodeName, language (s), platform, product, productsub.
php example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// user-agent for chrome
// Mozilla/5.0 ([Platform]) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/[ChromeVer] Safari/537.36
// data to generate a random string user-agent
// chrome versions
// the contents of the file are as follows
/* 78.0.3904.83
78.0.3904.84
78.0.3904.85
78.0.3904.86
78.0.3904.87
78.0.3904.88
78.0.3904.9
78.0.3904.90
*/
// file must be in the script folder
// you can download it in the topic on the forum
$arr_chrome_versions=file('chrome_versions.txt');
// operating system
// 6.1 Windows 7
// 6.2 Windows 8
// 6.3 Windows 8.1
// 10.0 Windows 10
$arr_winOS=array("6.1","6.2","6.3","10.0");
// platform
$arr_pltf=array("Win32","Win64");
// we get randomly the version from the file
$num=mt_rand(1,count($arr_chrome_versions)-1);
$version=trim($arr_chrome_versions[$num]);
// os
$num=mt_rand(1,count($arr_winOS)-1);
$winOS=$arr_winOS[$num];
// platform
$pltf=array_rand($arr_pltf);
// bit rate of running applications
$pltf_app_bit="";
// navigator.cpuClass
$cpuClass="";
if($pltf=="Win32")
{
$pltf_app_bit="WOW64";
$cpuClass="x86";
}
else
{
$pltf_app_bit="Win64; x64";
$cpuClass="x64";
}
// collect a random User agent string
echo$user_agent_srting="Mozilla/5.0 (Windows NT $winOS; $pltf_app_bit) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/$version Safari/537.36";
// set the string to the browser
$browser->set_user_agent($user_agent_srting);
// set navigaror.platform и navigator.cpuClass
$browser->set_platform($pltf,$cpuClass);
// must be completed and add. navigator properties:
// sets the same parameters for navigator language, browserLanguage, systemLanguage, userLanguage
// first from the list
$browser->set_language($arr_lang[0]);
// the entire list is set in accepts
$browser->set_accept_language($languages);
Information about the plugins.
Substitution of the list of plugins preinstalled in your browser is carried out using command set_plugins_info of the object browser.
Obtaining this information is included in the so-called browser fingerprints. Using this technology, the site owner can get your unique profile as a user and then determine all your subsequent visits and actions. We’ll talk about browser fingerprints in a separate article.
The list of plugins is given as a string:
«[{ name : ‘plugin name 1’, description : ‘plugin description 1’, filename : ‘plugin file 1’, version : ‘plugin version 1’ }, { name : ‘plugin name 2’, description : ‘plugin description 2’, filename : ‘plugin file 2’, version : ‘plugin version 2’ }, { name : ‘plugin name 3’, description : ‘plugin description 3’, filename : ‘plugin file 3’, version : ‘plugin version 3’ }, { и т.д.}]»
From version 7.0.41, you can also specify a Mime list for plugins. Set as a string:
You can view information on a real plug-in by installing them in the Chrome browser, and then through the Developer Tools (press F12) go to the console and there enter “navigator.plugins“. Information on the plugins appears as follows:
Hardware Information.
To set the parameters navigator hardwareConcurrency – the number of processors (threads) that are available to the browser and deviceMemory – the number of gigabytes of memory that are available to the browser using the object browser command set_hardware_info.
Also, from version 7.0.42, this command can also be used to set the devicePixelRatio parameter. DevicePixelRatio returns the ratio of resolution in physical pixels to resolution in CSS pixels for the current display device. This value can also be interpreted as the ratio of pixel sizes: the size of one CSS pixel to the size of one physical pixel. Simply put, this tells the browser how many actual pixels on the screen should be used to draw one pixel of CSS.
The parameter depends on the device: for ordinary displays it is 1, but there can be 2 and 1.5
php example:
1
2
3
4
// set the number of processors 2 and 4 GB of memory and the ratio of resolution 1
$browser->set_hardware_info(2,4,1);
Do Not Track (DNT).
This is the proposed HTTP header field, designed to allow Internet users to opt out of web site tracking, which includes collecting data about user activity in several different contexts, as well as storing, using or sharing data received from this activity outside the context in which it occurred.
To set this flag, use the object browser command set_do_not_track.
php example:
1
2
3
4
// tell sites not to track our actions
$browser->set_do_not_track(true);
Touch screen.
You can set data about the used touch screen using the object browser command set_touch_info. The command changes the parameters of navigator.maxTouchPoints – the maximum number of simultaneous touch contacts and window.ontouchstart – whether touch events are enabled.
php example:
1
2
3
4
// Set the information about the screen sensor
// 5 simultaneous touch contacts and enable the transmission of touch events
This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish.AcceptRead More
Privacy & Cookies Policy
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.