Browsers built into Human Emulator Studio.

Browsers built into Human Emulator Studio.

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 browser set_model

php usage example:


  • 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.

To discuss on the forum

Xhe local manager

XHE Local Manager.

XHE Local Manager is a separate free software that will help you work in multithreaded mode with the Human Emulator Studio.

Current version: 1.16.0

You can download the Manager on our forum, where you can also leave your suggestions and questions about the program.

See change log.

Software description

The Manager is used to run scripts in multithreaded mode. For this purpose, so-called tasks are used. In fact, the task is a script that will run its own exe human emulator in the amount specified in the task.

To run tasks, use software that are copied from the root folder of the program, which is defined in the settings as XHE Main Folder. When starting a task, the Manager, if the task is started for the first time, creates a folder with the task number and copies the Human Emulator there. The following runs use exe from the tasks folder. The software has the functionality to update all used Human Emulator.

The threads are updated from the XHE Main Folder, so if you want to update all the exe files in the tasks, you first update the XHE Main folder, and then on the Tasks tab, click the Update XHE button to update the selected task, or Update All XHE to update all the tasks.

Updates can be performed from disk or from ftp, http, sftp.
If the update is performed from disk, then a folder or zip archive is used as the update source. From other places — zip archive. Updates to human tasks are performed only from the root folder XHE Main Folder.

Login and password in the program settings is the username and password required to access the update source, i.e. access to ftp or http, where the zip archive is located for updating the XHE Main Folder. This archive must contain a version of the program that has already been activated for this computer, that is, the files code.txt and email.txt must be in its settings folder. Otherwise, when you run the task, you will be prompted to activate the program.

When the task is started, threads are started. These threads can be hidden, opened for viewing, and stopped, all at once, or only selected threads or tasks. To work in multithreaded mode, you need to adapt scripts to this task. The following variables are used for this purpose:

Through these variables, the script will receive the number of the thread that runs the script. That is, the numbers 0,1,2,3, etc., depending on the number of running threads. This is used to parallelize the execution of a task between running threads.

IMPORTANT: After installation, the program must run as an administrator.

Preparation of scripts

As noted in the section description of the program for working with the Manager, scripts must be adapted to work with this tool.

For a script to run in multiple threads, the beginning of the script must be as follows:

The first $xhe_host =”″; we specify that Human Emulator Studio does not change the second line $xhe_host =”$xhe_thread_port”; if this is set in the settings.

The $xhe_thread_num variable can be used to determine the current thread, for example, to write the results of work to a file.

In the folder Local Manager\My Scripts there are examples of scripts that we will use to create tasks. These same scripts can be viewed as an example for adapting your scripts to the Manager.

Program setting

Open the settings dialog using the menu or pressing the F9 key. See:

Where Source of XHE Update is the path to the program folder from which we will update the so-called XHE Main folder. The program from this folder will take the exe files and copy them to the threads to perform your tasks.

It is important that the Source path is real. Set it and click on the Update Main XHE Folder button. We are waiting for the program to copy the necessary files. At this time, the program window will not be available, but the panel with logs will display information that the copying started, and then that it ended.

The second tab of the settings dialog contains:

Refresh threads period (seconds) this is the refresh rate of the table of running threads in the Running Threads tab.

Auto restart threads by suspend – automatically restart fallen threads. If this check box is set in the program settings, the Manager will automatically restart threads that have fallen off during operation.

Working with tasks

Tasks are the main element of working with the Manager. For each of your scripts, you create your own task, where you specify the appropriate settings.

Creating a task

To add a new task, click the Add button. A dialog opens with several tabs.

The General tab is the name and description of the task.

The Threads tab is the number of threads and the path to the script, as well as the script arguments. By default, arguments contain the necessary arguments for operation. You can add your own through the space bar.

The Options tab is used to configure the operation of each exe thread being started. Here you may specify the folder with the cookies and settings for thread, browser command, and using the checkboxes to set: to curtail the run thread to tray — /in_tray, whether to hide the tray icon — /hide_tray_icon, to start a thread to work in unicode — /as_unicode, asking about change of port /ask_port, if a check is not worth it, the thread is automatic to move on to the next port when the configured port is busy. If this check box is selected, the thread will ask at startup before moving to the next port. And another check mark, use RT version, indicates whether to use the RT version or the full version of the program.

After we have set all the necessary settings for the task. Click the OK button. Our task will appear in the task table on the Tasks tab.

Task start

Now we can start it. To do this, click the Run button.

First, the program will create a tasks folder and a folder with the task number in it, to which it will copy the program to run threads from the XHE Main folder. After copying, the threads themselves are started. This opens the Running Threads tab with a table of running threads. The table displays data on these threads, the status of the scripts, and the amount of memory consumed by the threads.

On the same tab, you can update the table, you can do it automatically or by pressing a button, as well as leave the selected thread, show or hide the thread. When you click the Show button, the thread window will be expanded on top of other windows. When you click the Hide button, the selected thread will be hidden again. Accordingly, the Show All and Hide All buttons perform the same actions only for all threads at once.

In order to stop and close all threads at once on the Tasks tab, click the Stop button. You can also stop all tasks from running on this tab, as well as update programs that use tasks.

Running a scheduled task

The Manager also has functionality for running tasks on a schedule. It is very similar to the schedule for running scripts in the Human Emulator Studio.

To configure running tasks on a schedule, go to the Scheduler tab. And click on the Add button.

The task launch settings dialog opens.

Using this dialog, you specify the type of launch — it can be a single launch, a launch after a specified period of time, or an infinite (non-stop) launch. Here we specify the Start time, that is, the time of the first launch. Select the task that you want to run on a schedule. Write a comment on this task, and use the Active checkbox to set whether the launch will be active after creation. After all the settings have been set, click on the OK button.

Running on a schedule will appear in the table in the Scheduler tab.

On the same tab, in addition to adding a scheduled task launch. There are a number of buttons that allow you to edit, Activate or deactivate, delete the selected launch in the table, as well as buttons that allow you to do the same actions for all launches in the table.

You can use the Import All and Export All buttons to save launches to a json file or load them from it.

Anonymity in Human Emulator Studio. Browser Fingerprints.

Anonymity in Human Emulator Studio. Browser Fingerprints.

Browser Fingerprint.

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

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

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

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

Сanvas Fingerprint.

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

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

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

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

php example:

The result of the set_canvas_toDataURL function.

No noise:

Using noise:

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

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

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

The result of work:

WebGL Fingerprint.

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

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

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

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

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

php example:

Before using spoofing:

After completing the work of the example, we have:

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

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

php example:

Google SwiftShader.

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

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

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

When Google SwiftShader is enabled, WebGL information:

With Google SwiftShader disabled:

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

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

Font fingerprinting.

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

Here are some options for getting your font fingerprint:

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

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

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

Without zooming:

after executing the php code:

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

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

The command takes a parameter:

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

Without using the command:

An example of using a command in php:

After executing the command:

You can remove the distortion using the command as follows:


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

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

php example:

Without zooming:

After running the example in php:

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

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

AudioContext Fingerprint.

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

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

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

Without using the value function on

php command example:

After executing the example:

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

discuss the article on the forum

Anonymity in Human Emulator Studio. The location.

Anonymity in Human Emulator Studio. The location.

IP address (Http(s) Proxy, Socks4/5).

What is a proxy?

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:

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 (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:

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.


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:

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

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 = “”).

php usage example:


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:

php example of using all functions:

When executing the example above, 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:

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:

To change the MAC address, use the object connection command set_mac_address_by_number.

php example:

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.

discuss the article on the forum

Anonymity in Human Emulator Studio. Cookies, cache and more.

Anonymity in Human Emulator Studio. Cookies, cache and more.

Browser cache.

What is the Browser Cache?

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:

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) 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:

php example:


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.

php example:

Cookies(HTTP cookies, Flash Cookies, Evercookies).

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.

php example:

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:

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.

php example:

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:

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:

php example using app clear functions:

discuss the article on the forum

Anonymity in Human Emulator Studio. Managing embedded browser information.

Anonymity in Human Emulator Studio. Managing embedded browser information.

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:

The scale of the browser.

You can set the browser scale using command set_zoom of the object browser.

php example:

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:

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:

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:

«[{type: ‘type’, suffixes: ‘suffixe’, description: ‘description’, __pluginName: ‘ plugin name 1′ },
{type: ‘type’, suffixes: ‘suffixe’, description: ‘description’, __pluginName: ‘ plugin name 2′ }
{type: ‘type’, suffixes: ‘suffixe’, description: ‘description’, __pluginName: ‘ plugin name 3′ }
{type: ‘type’, suffixes: ‘suffixe’, description: ‘description’, __pluginName: ‘ plugin name 3′ } ]»

php example:

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:

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:

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:

discuss the article on the forum

Few ways for a programmer to make money using the Human Emulator.

Few ways for a programmer to make money using the Human Emulator.

Human Emulator is a very universal program covering a huge number of special features for browser automation.
The program uses scripts to work. Scripts automate any actions in built-in browser of the program and any actions with databases, FTP, folders, files, etc. They can be used for navigate to a specific website, to fill a lot of web forms, scraping specific data from websites, automated account creation, data mining, website testing, periodical report generation and much more. With just a few lines of code, the simplest scripts can nevertheless be tremendously time-saving. And they developing in most popular programming languages – PHP, C#, Python and Java Script(Node.js). Each script represents a php(c#, python or java script) file containing a list of commands that need to be executed by the Human Emulator so that the desired automated action could be achieved. And if you have base skills of PHP, C#, Python or Java Script programming languages you will don’t have any hard with the program.

human emulator studio

How a programmer can make money with the Human Emulator?

  1. Custom scripts development.
  2. Sale of your own scripts.
  3. Sale of your own applications.

Custom the Human Emulator scripts development.

Custom script development is the process of creating scripts for a specific set of users or organizations. We are often asked to advise developers of the Human Emulator scripts and at the moment we have several verified contacts of developers. On forums and freelance sites you can also find developers ready to write scripts for the Human Emulator to order. But still the demand for such work exceeds the number of performers. Therefore, we also work with all those who wish to become a script developer and make money on it.

Sale of your own the Human Emulator scripts.

This way is similar to custom scripts development, but instead of developing a script for one client, you put up your script for sale to many clients and get money from each sale.

Sale of your own applications based on the Human Emulator features.

Create your own software program based on features of the Human Emulator and then sell it to get your retribution. The advantage of this way is that you do the job once, but you keep making money at the expense of the work. Using of the Human Emulator features in your own application will allow you to safe a many time for developing because you will get access to features which develop during more than ten years.

Affiliate of webemulator.

Also you can become an affiliate of webemulator and will get a 20% commission on sales you generate. details

Contact us if you want to make money using the Human Emulator.

Our contacts:

telegram: @saleshumanemulator
Skype™: live:sales_91434

Solving captchas with in Human Emulator

Solving captchas with in Human Emulator

2Captcha is a human-powered image and CAPTCHA recognition service.

The process of solving captchas.

  • We send the image to 2Captcha server.
  • The server returns a unique task identifier (Captcha ID).
  • Run a loop that checks whether the captcha is solved.
  • As a result, we get either the text of the captcha or data for substitution in the sources of the page, or an error from the service.

Working with API 2Captcha in the program is simplified as much as possible. For this Human Emulator object has been added twocaptcha.

Let’s go through the main functions for working with the service 2Captcha.

Normal Captcha.

To recognize simple captcha with distorted text, use the function recognize.

As a result, the function returns a string with the solution of the captcha, which we substitute further in the input field on the site.

Using the function parameters you can set any type of such captcha, text or numbers, language, number of characters in the captcha, etc.


  • filename – path to captcha file
  • apikey – key for identification on the service
  • path – the service path
  • is_verbose – enable/disable verbose mode (commenting on what is happening): false( disable), true (enable)
  • rtimeout – delay between polls of the status of the captcha
  • mtimeout – timeout enter the captcha
  • is_phrase – 0 or 1 – the flag “captcha contains two or more words”
  • is_regsense – 0 or 1 – the flag “captcha is case sensitive”
  • is_numeric – 0 – not specified; 1 – captcha contains only numbers; 2 – captcha contains only letters; 3 – captcha contains only numbers OR only letters; 4 – captcha contains both numbers AND letters
  • min_len – 0 (no limit), minimal number of symbols in captcha
  • max_len – 0 (no limit), maximal number of symbols in captcha
  • is_russian – 0 – not specified; 1 – Cyrillic captcha; 2 – Latin captcha

Example of use in php:

As a result of the script, the text of the recognized captcha will appear in the debug panel of Human Emulator.

Text Captcha.

Text captcha is when you have to answer a question. For example: If tomorrow is Saturday, what day is today?

To recognize such captchas use the function recognize_text.

As a parameter, pass the text to be answered.

As a result, we get the correct answer, which must be either entered in a input field or selected from a listbox.

Example of using the function in php:

As a result of the example, the text with the correct answer will appear in the debug panel of Human Emulator.

ReCaptcha V2 and Invisible ReCaptcha V2.

Very popular captcha from Google. Different Invisible ReCaptcha V2 from the conventional ReCaptcha V2, that invisible captcha appears only after some action, say clicking on a button or field, and ReCaptcha V2 is visible on the page at once and looks like this:

There are two solutions to these captcha. First, getting a token and substitution of this token in the field on the site, and clicking on the specified pictures. Consider both solutions.

1.Recognition using a token.

This function is used recognize_recaptcha_v2.

This function takes the following parameters:

  • pageurl – full URL of the page where you want to solve ReCaptcha V2
  • googlekey – the so-called a sitekey. For each site it is different, and it can be found in the source text of the captcha.
  • invisible – type of captcha. Default: 0. 1 – tells us that the site using invisible ReCaptcha V2.
  • proxy – proxy. When you authenticate on IP: Ip_address:PORT. Example: proxy= When you authenticate using login and password: loginparameters. Example: proxy=proxyuser:strongPassword@
  • proxytype – the type of proxy: HTTP, HTTPS, SOCKS4, SOCKS5. Example: proxytype=SOCKS4

Proxy and proxytype parameters are not set for work without proxy.

After sending these parameters to the server, in response comes the token this is the text like this:

As a rule, we substitute the token in the field with the id “g-recaptcha-response“, but it depends on the site, there may be options with other fields or calling the so-called Callback functions.

See a detailed description of the nuances of the recognition of ReCaptcha V2 on

Example of using the function for both variants of ReCaptcha V2:

As a result of correct recognition of the captcha in the program will open a page with the text “Verification Success… Hooray!“.

2.Clicking on pictures to recognize ReCaptcha V2.

To solve ReCaptcha V2 this method uses the function recognize_click_captcha.

The function accepts the following parameters:

  • filename – path to captcha image
  • textinstructions – the text of what you want to select in the picture in UTF-8 encoding. This parameter is not required, if the picture is clear where to click – you can not send it.

Example of the recognition of ReCaptcha V2 with clicks on images in php:

In the results of the example, the program clicks on the desired images. If the picture repeats, you need to send a new version, etc.

As you can see from the examples, the ReCaptcha V2 solution through a token is much easier than the option of clicking on the pictures, but in any case, both of these options work. The second method is suitable for all types of captcha, where you have to click on the pictures.

Recognition GeeTest captcha.

In GeeTest captcha, you need to select several objects or move a piece of the puzzle in the right order.

For raspoznanie this type of captcha in Human Emulator function is used recognize_geetest.

The following parameters must be passed for correct recognition:

  • pageurl – Full URL of the page where you see GeeTest captcha
  • gt – public website key (static)
  • challenge – dynamic challenge key
  • api_server – API domain (optional)
  • proxy – proxy. When you authenticate on IP: Ip_address:PORT. Example: proxy= When you authenticate using login and password: loginparameters. Example: proxy=proxyuser:strongPassword@
  • proxytype – the type of proxy: HTTP, HTTPS, SOCKS4, SOCKS5. Example: proxytype=SOCKS4

Proxy and proxytype parameters are not set for work without proxy.

If captcha is already solved server will return the response in JSON. The response contains three values: challenge, validate and seccode:

To solve the geetest captcha you need to substitute values in the appropriate fields greatest_challenge, gee test_validate, geetest_seccode and click on button with text “Click to verify”.

Example of recognition GeeTest captcha in the Human Emulator program in php:

As a result of the example, a green check mark appears on the button “Click to verify”.

We have reviewed the most commonly used types of captcha. All types of captchas that can be recognized through the service and tariffs can be found on the website of the service.

If you need to add recognition of some type of captcha, which is not in the program write to us on the our forum.

Record video in the Human Emulator

Record video in the Human Emulator Studio.

In the version of Human Emulator Studio 7.0.38, several interesting commands appeared that we would like to draw the attention of users to.

These are the start_video_record and stop_video_record commands added to two objects – windows and browser. Commands added to the object – windows – record video from a given area of the screen, commands added to the object – browser record video from a specified area of the browser.

How it works?

When you start recording video, the program performs the specified number of screenshots-frames per second with the specified quality, after which a file is created with the recording in avi format.

Description of the commands.

The start_video_record command accepts the following parameters:

path – full or relative path to the video file.
fps – is the number of frames per second. So with fps = 10, 10 frames per second will be done, and with fps = 30, 30 frames per second or 1 frame in 33 milliseconds. The optimal FPS value will depend on how quickly actions take place in the recorded area. To record normal browsing, fps = 10 will be enough. Default: 10.
quality – JPEG image quality. Maximum quality 100%. Image quality is understood as the amount of useful data that JPEG can save. Default: 70.
x – X coordinate of the upper left corner of the recorded area. Default: -1.
y – Y coordinate of the upper left corner of the recorded area. Default: -1.
width – the width of the recorded area. Default: -1.
height – the height of the recorded area. Default: -1.

With x = -1, y = -1, width = -1, height = -1 – the entire area of the screen or the built-in browser is recorded.

The stop_video_record command does not require any parameters. After calling this command, a record avi file will be created.

An example of use in php.

An example of a video recorded using start_video_record commands.

Using C # scripts in the Human Emulator

Using C # scripts in the Human Emulator.

There are two ways to work with a program using C # code.

  1. Writing scripts in C # in the program.
  2. Connecting separately written applications to the Human Emulator functionality.

Both methods use the XHE.dll library. The only differences are that when writing scripts in the program you do not need to connect the library, since it is already connected, and when creating separate projects you will need to connect this library.

XHE.dll library.

This dll library is a set of all objects and their functions that exist in the program.

A detailed description of the functionality of the objects can be found in our official documentation. The description for each function includes an example in C#.

The library was added to the program along with sources that are in the folder “folder with the program\Templates CSHARP\Lib\XHE\ XHE.sln“. The library sources are opened using Microsoft Visual Studio. If for some reason you need to make your changes to our library, you open the project in Microsoft Visual Studio, add your code there and then compile. The library connected to the Human Emulator is in the folder “folder with the program\Templates CSHARP\Lib\XHE\XHE\bin\Release\XHE.dll“. The main thing to note is that with the release of the new version, you will again have to reduce the library code, adding your changes to it. Whatever you do, you can send your code to us and we will add it to all subsequent versions of the program, but in this case your code will be available to all users of Human Emulator.

The library has been added to both “Human Emulator” (based on Internet Explorer) and “Human Emulator Studio” (based on Chromium) ranges. Work with the library in all versions of the program is completely identical. The differences are only in the available functionality.

Writing scripts in C # in a program.

To create a script in C # in the Human Emulator, just click on the File menu, point to New, and then click C# Script.

The “0.cs” script will open in the Scripts Editor with the following code:

The first part of the script is used to allow the use of types in the namespace.

The second part is the script itself. The InitXHE function is the entry point for every the Human Emulator objects. This function is called before using any program object. Without this call, you cannot work normally with it. After calling this function, work is going on with objects. In this case, it is browser.navigate(“”) and app.quit ();.
When the script is executed, it is compiled into EXE file and this EXE file is launched. Exe itself appears in the folder with the script and later it can be run as a regular EXE file. The main thing is that at the same time the Human Emulator would be opened. In it all the actions prescribed in EXE file will be performed.

Connecting third-party projects to the Human Emulator functionality.

In this case, you connect the xhe.dll library to your project just like any other.

After that, all objects and functions for controlling the Human Emulator become available in your project.