# HIDEMIUM GUIDANCE FROM A-Z

Hidemium is the best anti-browser software in 2022, overcoming many shortcomings. This tool is for those who need to use multiple accounts with different profiles on the same computer

**These profiles are as independent as real users, separate in browser fingerprints: IP address, User-agent, proxy, cookies, time zone, language, media device, hardware, and more. Instead of having to invest in many computers, or use many virtual machines, now you can set it up all on one of your computers.**

* E-commerce platforms: Shopee, Lazada, or International floors as Amazon, eBay, Etsy,....
* Social networking platforms, advertising: Facebook, Google, Tiktok, Instagram,....
* Electronic money

**Anti-detect browser technology is synthesized and built by a team of excellent and experienced programmers. The application is regularly improved and upgraded to increase efficiency and optimal user experience.**


# FEATURES OF HIDEMIUM

There are some main sections in Hidemium software

#### 1, New Profile <a href="#stoc-new-profile" id="stoc-new-profile"></a>

**2, Profiles**

**3, Folders**

**4, Proxies**

**5, Automation**

<figure><img src="/files/lCuGYUaQRn6NQsR9R25O" alt=""><figcaption><p>Features of Hidemium</p></figcaption></figure>


# NEW PROFILE

Hidemium automatically creates a new profile or users can create a profile !

If users create new profile, users need to fill some information

<figure><img src="/files/qr07FMKX9ADHRkcVoFFc" alt=""><figcaption></figcaption></figure>


# MAIN

Here are some main information for a new profile that users need to fill in

<figure><img src="/files/ZipWDDLx39kiiGk72y7j" alt=""><figcaption><p>Main Section</p></figcaption></figure>

## Name, folder, status:

* Name: You can set a new profile with a name
* Folder: You can choose a folder for the new profile
* Status: You can choose the status for the new profile as Ban - Ready - New

<div align="left"><figure><img src="/files/qSrQU7ldHi0nAotyQBsE" alt=""><figcaption><p>Name and Folder</p></figcaption></figure> <figure><img src="/files/6Ik5i9KHSo2HMQWCBkVT" alt=""><figcaption><p>Status</p></figcaption></figure></div>

## Platform

* Windows&#x20;
* Mac OS&#x20;
* Linux&#x20;
* Android

## Platform version

You can choose the version of each Platform

<figure><img src="/files/oRorUjVfEAW2TFWzWzDh" alt=""><figcaption><p>Platform and Platform version</p></figcaption></figure>

## Chrome version

You can choose the version of Chrome&#x20;

<figure><img src="/files/ktIxNTRytWzld1iPaTDW" alt=""><figcaption><p>Chrome version</p></figcaption></figure>

## User - Agent

You can choose Auto fill User Agent or Manual fill User Agent

## Ports

<figure><img src="/files/j9uYry4cedg9t8S0DqS2" alt=""><figcaption><p>User Agent and Port</p></figcaption></figure>

## Proxy settings

You can choose Timezone, WebRTC, Geolocation and Languages fingerprints based on the external IP or Set manually. You can check your proxy details including location, country, timezone.. by clicking Edit Proxy Setting button.

<figure><img src="/files/7sMw3QDFh1Jax7WCa3Q2" alt=""><figcaption><p>Proxy setting</p></figcaption></figure>

### Timezone

This feature is the default, and you should follow Hidemium form because Timezone is based on the IP address or proxy you are using, which guarantees for browser profile. Besides, you can still manually enter the desired time zone without relying on the IP address or proxy.

* Timezone based on the external IP: You should leave this feature as default since Timezone will be based on IP address or proxy address, SOCKS that you are using. This will be best with the browser.
* Fill geolocation based on the external IP: This feature allows you to choose the timezone you want without relying on ip address, proxy, socks.

<figure><img src="/files/JUJHtI6jp4X9O35vuJXm" alt=""><figcaption><p>Timezone</p></figcaption></figure>

### **Geolocation**

It is a feature that allows setting geolocation based on IP address and proxy. Geolocation also allows you to set your browser’s current location manually.&#x20;

* Prompt: This feature allows you to select the location you want based on IP address, proxy, socks or you can set the current location of the browser manually by turn off the "Fill geolocation based on IP"
* Allow: allows you to use the original location of your computer even when using a proxy or sock.
* Block:  a feature that blocks websites from reading your location from both the computer and the proxy.

<div align="center"><figure><img src="/files/rbPhA4at4HpzUh5pr9ck" alt=""><figcaption><p>Geolocation</p></figcaption></figure></div>

### **WebRTC**

You should follow the default by Hidemium. It allows setting WebRTC parameters based on IP address and proxy or you can manually adjust the WebRTC address.

* Alter: This feature allows fake WebRTC based on proxy address, socks. You should leave this feature as default. Alter manual: The feature that allows you to set the WebRTC address manually.
* Disabled: Allows you to block websites from reading your webrtc address including your computer's network address and proxies, sock.
* Real: Use your computer's Webrtc address even if you use a proxy, sock.

<figure><img src="/files/oNzUBg0hCZZnXFWfPbFM" alt=""><figcaption><p>WebRTC</p></figcaption></figure>

### Languages

* Fill WebRTC Public IP based on the IP: This feature allows you to choose the WebRTC Public IP you want relying on IP address, proxy, socks.

<figure><img src="/files/BZF61xDpdeW9Qj99rXtk" alt=""><figcaption><p>Languages</p></figcaption></figure>


# PROXIES

There are many connection types as below

* HTTP proxy: is a method of HTTP connection using IP emulation.
* Socks 4 proxy: is a method of connecting socks 4 using IP emulation.
* Socks 5: is a method of connecting socks 5 using IP emulation.
* SSH: Proxy over SSH is an innovation that other anti-detect software does not have.

<figure><img src="/files/qELzmEJJbtM3JhNUHbQW" alt=""><figcaption><p>Proxies</p></figcaption></figure>


# COOKIES

The table below shows only cookies that have been imported manually, in order to see all profile cookies you need to open this link in the browser window: chrome://settings/content/all<br>

<figure><img src="/files/LswrqgeJF6DCW4zpnCp0" alt=""><figcaption><p>Cookies</p></figcaption></figure>


# HARDWARE

* Hidemium supports users to modify the computer's hardware like Architecture, Screen size, WEBGL METADATA, Noise, Hardware concurrency, Device memory, Media devices, Replace battery state

<figure><img src="/files/BwzXL26tcES9x9swzh05" alt=""><figcaption><p>Hardware</p></figcaption></figure>


# FONTS

Hidemium supports users to change the font of browser

* If users turn off "Overwrite", Hidemium will use the default font in computer
* If users turn on "Overwrite", Hidemium will suggest some fonts for users&#x20;

<figure><img src="/files/n25BcSJH6ZUzDCV19o5U" alt=""><figcaption><p>Fonts</p></figcaption></figure>


# BOOKMARKS

You can click “Enable bookmarks for profiles” to allow Hidemium to store web pages, images or files that you frequently visit or unfinished on your computer. When you open the browser, you just need to click on the icon of the website you need to visit on the toolbar then it immediately opens.

<figure><img src="/files/X8szNk2pFectKybbMzhG" alt=""><figcaption><p>Bookmarks</p></figcaption></figure>


# EXTENSIONS

The Extensions feature helps you to add utilities to the system of profiles in Hidemium software.

When using any browser, such as Google Chrome, you often add extensions to make it easier to open, the Extensions feature helps you to add automatically to all your profiles in Hidemium.&#x20;

<figure><img src="/files/Ri9K7lPKoFhORk9qEWuY" alt=""><figcaption><p>Extensions</p></figcaption></figure>

## Add Extension to profiles

Step 1: Click “Add Extensions”&#x20;

Step 2: Use the suggested utilities available in our software by clicking on the utility you need

<figure><img src="/files/axcSf3IlalhRIowp4tLh" alt=""><figcaption><p>Add Extensions</p></figcaption></figure>

## How to upload the extension or add an extension with file?

#### Step 1: Click “Upload Extensions”

#### Step 2:&#x20;

* Field “Name”: Fill in the name of extension
* Field “File upload”: You click “Browse” button and choose the extension that you want to add

#### Step 3: Click “Submit” to complete

<figure><img src="/files/vi9dcqOZuIKoAa6J5Et7" alt=""><figcaption><p>Upload Extension</p></figcaption></figure>


# AUTOFILL

Autofill is the combination between Automation and Fill. This functions allows to automatically fill data into cells, which helps to reduce the number of operations and save more time.

<figure><img src="/files/pdXytG5ykCCxMzTGEICR" alt=""><figcaption><p>Autofill</p></figcaption></figure>


# OTHER CONFIG

When you complete all the above items, you click “Create Profile” then you will have a new profile in Hidemium.

<figure><img src="/files/7mgOaqaSb2ZsciQxrewe" alt=""><figcaption></figcaption></figure>


# PROFILES

Users can go to the “Profiles” section to see the New profile that just created and Start the profile immediately.

## Your Profiles

Name: This shows all profile names that you created

Status: This shows status for all profiles that you chose when you created new profile

Proxy: This shows all Proxies that you chose when you created profile

Note: You can click to “Pen” icon to fill in your notices

Tags: You can assign profiles with 1 tag, which can help you to be easier access to your desired profile just by entering the tag

Last open: This shows the latest time that you used the profile

Message: This shows the status of each profile

Action: If you want to use the profile you click “Start” button&#x20;

<figure><img src="/files/xnoDfNeSBfiK7VTpbzKE" alt=""><figcaption><p>Your Profiles</p></figcaption></figure>

### You can click … to see more functions

* Share: You can share the profile with the other by adding their mail
* Add to Folder: You can add the profile to the Folder that you can manage easily
* Run CookieRobot:
* Copy:
* Cookies:
* Transfer: You can transfer the profile to another account to manage it
* Duplicate: You click here to have one more profile that is the same with the original one
* Edit: You click here to modify the profile
* Long proxy:&#x20;
* Delete: You click here to delete the profiles&#x20;
* Delete from Folder: You click here to delete profiles from the folder

<figure><img src="/files/9kkLVA28rYF30QmSJTeC" alt=""><figcaption><p>More functions</p></figcaption></figure>

## Shared with me

You can see the profiles which are shared with you account by click to "Shared with me" button, if there isn't any shared profiles, it will show "Data is empty"

<figure><img src="/files/J9mcGdk73FIxlrRAVMGp" alt=""><figcaption><p>Shared with me</p></figcaption></figure>


# Export All Data

Đấy là chức năng xuất thông tin của profiles ra file **.csv** . Bạn có thể xuất toàn bộ profile của bạn hoặc chọn các profile mà bạn muốn xuất thông tin.

Các thông tin của profile được xuất ra bao gồm: uuid, name, proxy, note, tags, datas, created at, last open, status.

Bạn chọn vào đây để xuất thông tin của tất cả các profiles:

<figure><img src="/files/4W5aEkVmCw3kHi2oFRuo" alt=""><figcaption></figcaption></figure>

Còn nếu bạn không muốn xuất hết toàn bộ profile thì có thể chọn các profiles cụ thể và xuất ra:&#x20;

<figure><img src="/files/K9TowaRd6INo7DgG2n3H" alt=""><figcaption></figcaption></figure>


# Update Multiple

Phần này cho phép bạn update Extension và Custom launch browser parameters của nhiều profile cùng lúc.

<figure><img src="/files/a7GRdaAMiAGPMVeU4pyT" alt=""><figcaption></figcaption></figure>

Tại đây bạn có thể chọn nhiều profile và chọn folder để update.&#x20;

<figure><img src="/files/l4fw7RlQqcSSur8BX80A" alt=""><figcaption></figcaption></figure>

Sau khi update thành công thì tất cả profile và các profile trong folder mà bạn chọn toàn bộ sẽ được update.&#x20;

Bạn có thể vào edit profile để kiểm tra:

<figure><img src="/files/y5zUCjNeDjq5ejp23uux" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/EwLsVWHWxDpOPAXFRFUy" alt=""><figcaption></figcaption></figure>


# Quick Create

Phần này giúp bạn tạo các profile nhanh chóng theo một config. Nếu bạn muốn tạo 100 profiles thì bạn có thể nhập 100 vào, có thể tạo tối đa 500 profiles.

<figure><img src="/files/3HORUcm8suo1HWpb6vsZ" alt=""><figcaption></figcaption></figure>

Bạn có thể tạo thêm các config theo ý muốn của bạn. Tối đa ta có thể tạo 5 config. Bạn chọn Manager default config để chuyển tới màn tạo config.&#x20;

<figure><img src="/files/YcSpH0zazPrs82eIsk9u" alt=""><figcaption></figcaption></figure>

Sau khi chuyển tới màn Default config, bạn chọn Add config để tạo config theo ý muốn:

<figure><img src="/files/rDUa6Tqadpa5zUluOujX" alt=""><figcaption></figcaption></figure>

Tại form add config bạn có thể chọn các trường mong muốn, tất cả các profile được tạo sẽ có các trường giống như config của bạn, ví dụ nếu bạn chọn Operating system là Window thì tất cả các profile được tạo từ config đó sẽ có OS là window.

Bạn cũng có thể chọn 1 config làm default, khi đó tại màn new mặc định sẽ hiển thị giống như config mà bạn đặt làm mặc định.


# Change Proxy

Khi muốn thay đổi proxy cho nhiều profile cùng lúc, ta có thể chọn chức năng này. Đầu tiên bạn chọn các profile cần thêm proxy, sau khi chọn xong sẽ xuất hiện menu bên trên, bạn chọn proxy.

<figure><img src="/files/gUrkZold9Wa2HExO1tFB" alt=""><figcaption></figcaption></figure>

Popup change proxy hiện lên, bạn có thể nhập proxy mà bạn muốn thêm vào profiles tại đây, các type proxy là SSH, HTTP, SOCKS4, SOCKS5:

<figure><img src="/files/C0eFtNKmjq42sWylbcbI" alt=""><figcaption></figcaption></figure>

Bạn cũng có thể chọn nhiều proxy trong danh sách proxy của bạn tại đây:

<figure><img src="/files/OGV8IP057HLAl4pQfE6j" alt=""><figcaption></figcaption></figure>


# Add Schedule

Khi bạn muốn lên lịch chạy automation, bạn có thể chọn chức năng này. Bạn chọn các profile để chạy, sau đó chọn Button Automation.

<figure><img src="/files/UD0IYk7yGpY6kapKihfE" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/GE9kxT5VkKHfszf5lqxP" alt=""><figcaption></figcaption></figure>

**Name:** Điền name của Schedule, bạn có thể bỏ trống trường này.

**Script:** Chọn script để chạy

**Task type:** Có 2 loại chính đó là Common và Schedule. Với common thì profile sẽ được chạy ngay sau lúc tạo. Còn Schedule bạn có thể đặt lịch chạy của các profiles với script bạn chọn.

Với Schedule bạn có thể chọn Execution frequency:

* Once: Chạy 1 lần trong ngày. bạn có thể chọn ngày và giờ chạy.

<figure><img src="/files/0PYeoEv7EQJOMHZIp8XB" alt=""><figcaption></figcaption></figure>

* Interval: Chạy trong khoảng thời gian từ start time đến end time. Bạn cần nhập Each time delay, trường này bạn cần nhập khoảng thời gian delay giữa các lần chạy. Ví dụ bạn nhập là 5 thì khi chạy xong một lần 5 phút sau mới chạy lần thứ 2, cứ thế cho đến hết end time.

<figure><img src="/files/TYBhCmh3rr1Q8ptzhMga" alt=""><figcaption></figcaption></figure>

* Daily: Chạy hằng ngày. Ở đấy bạn cần chọn Execution time là thời gian chạy script trong khoảng từ start time đến end time.&#x20;

<figure><img src="/files/rJMQBTf01EbDsvH9NgKU" alt=""><figcaption></figcaption></figure>

* Weekly: Chạy hàng tuần. Tại Execution time bạn có thể chọn thứ để chạy và giờ chạy. Và chọn thời gian bắt đầu và thời gian kết thúc.

<figure><img src="/files/qcmjTMh5EgaypBQC3Apt" alt=""><figcaption></figcaption></figure>

* Monthly: Chạy hàng tháng. Bạn có thể chọn ngày và giờ để chạy, chọn thời gian bắt đầu và thời gian kêt thúc. Ví dụ bạn chọn ngày 13 thì đến ngày 13 và đến giờ thì sẽ chạy profile.

<figure><img src="/files/sIk9p8oPpHwkLPzJb26U" alt=""><figcaption></figcaption></figure>


# FOLDERS

The Folder section makes it easier to manage your work areas. Specifically, you can divide and group tasks into the same group, which makes it much more convenient to run tasks.

<figure><img src="/files/vX58wUXm75DbQBXM3wGp" alt=""><figcaption><p>Folders</p></figcaption></figure>

## Your folders

* Name: You can see the folder names that you've just created
* Profiles: The quantity of profiles that each folder contains
* Created: This field shows the date that you created the folder

## Users can have 3 more actions in this section:

* Share - Users can share the folder with other account
* Edit - Users can edit the Folder name here
* Delete - Users can delete any folders as you want

<figure><img src="/files/vQ08DAXZ5mCO2vihoYRx" alt=""><figcaption></figcaption></figure>


# PROXIES

Users can import-export and manage proxies in bulk

Hidemium is more convenient when developing a batch proxy management tool.

* Import proxy:&#x20;
* Export proxy:  Hidemium also supports downloading the proxy list on the software with the Export feature in the Proxies section.
* Add proxy: Once you have entered the list of proxies, you can return to the Profiles section to select the Profile you want to add a proxy to (as introduced in the New Profile > Proxy section above).

<figure><img src="/files/hCVpfry9BFDn0m9V06FF" alt=""><figcaption><p>Proxy</p></figcaption></figure>


# API AUTOMATION V2


# Remote profile


# 1. Open profile

Returns an open profile

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>GET</td><td>api_url/openProfile?uuid={uuid}</td></tr></tbody></table>

<table><thead><tr><th>Params</th><th width="113.33333333333331">Value</th><th>Description</th></tr></thead><tbody><tr><td>uuid</td><td>string</td><td>UUID of profile</td></tr></tbody></table>

### **Example Request (Hidemium v2)**

<table><thead><tr><th width="194">Method</th><th>URL</th></tr></thead><tbody><tr><td>GET</td><td>http://127.0.0.1:5555/openProfile?uuid=99bed28d-7d71-432e-87c8-71d24926acb3</td></tr></tbody></table>

### **Example Response**

*Profile with UUID of "*&#x39;9bed28d-7d71-432e-87c8-71d24926acb&#x33;*" is opened.*

{% code lineNumbers="true" %}

```json
{
    "status": "successfully",
    "data": {
        "remote_port": 4000,
        "profile_path": "C:\\Users\\*****\\AppData\\Local\\Temp\\.hidemium\\99bed28d-7d71-432e-87c8-71d24926acb3",
        "execute_path": "C:\\Users\\*****\\.hidemium\\browser\\mulbrowser\\115.0.0.0_v6\\chrome.exe"
    }
}
```

{% endcode %}


# 2. Close profile

Returns an close profile

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>GET</td><td>api_url/closeProfile?uuid={uuid}</td></tr></tbody></table>

| Params | Value  | Description     |
| ------ | ------ | --------------- |
| uuid   | string | UUID of profile |

### **Example Request (Hidemium V2)**

<table><thead><tr><th width="251">Method</th><th>URL </th></tr></thead><tbody><tr><td>GET</td><td><a href="http://127.0.0.1:5555/openProfile?uuid=992bd6f1-0a4c-40b2-88c0-d6ae54db7347">http://127.0.0.1:5555/closeProfile?uuid=992bd6f1-0a4c-40b2-88c0-d6ae54db7347</a></td></tr></tbody></table>

&#x20;  **Params**

<table><thead><tr><th width="250">Key</th><th>Value</th></tr></thead><tbody><tr><td>uuid</td><td>992bd6f1-0a4c-40b2-88c0-d6ae54db7347</td></tr></tbody></table>

### **Example Response**

{% code lineNumbers="true" %}

```json
{
    "result": true
}
```

{% endcode %}


# 3. Checking

Checking your opening profile

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>GET</td><td>api_url/authorize?uuid={uuid}</td></tr></tbody></table>

| Params | Value  | Description     |
| ------ | ------ | --------------- |
| uuid   | string | UUID of profile |

### **Example Request (Hidemium V2)**

<table><thead><tr><th width="251">Method</th><th>URL</th></tr></thead><tbody><tr><td>GET</td><td><a href="http://127.0.0.1:5555/authorize?uuid=992bd6f1-0a4c-40b2-88c0-d6ae54db7347">http://127.0.0.1:5555/authorize?uuid=992bd6f1-0a4c-40b2-88c0-d6ae54db7347</a></td></tr></tbody></table>

### **Example Response**

*If profile is open, the return result is true; If profile is closed, the return result is false.*

{% code lineNumbers="true" %}

```json
{
    "status": true
}
```

{% endcode %}


# Get profile


# 1. List profile

Returns a list of profiles

### Request

<table><thead><tr><th width="262">Method</th><th>URL </th></tr></thead><tbody><tr><td>POST</td><td>api_url/profileList?page=1&#x26;limit=1</td></tr></tbody></table>

<table><thead><tr><th width="167">Params</th><th width="167.33333333333331">Value</th><th>Description</th></tr></thead><tbody><tr><td>browser_uuid[]</td><td>string</td><td>UUID of profile</td></tr><tr><td>name[]</td><td>string</td><td>the name of the profile</td></tr><tr><td>tag_id[]</td><td>number</td><td>ID of tag, use api <em>"<strong>list tag"</strong></em> to get tag_id</td></tr><tr><td>status_id</td><td>number</td><td>ID of status, use api <em>"<strong>list status"</strong></em> to get status_id</td></tr><tr><td>page</td><td>number</td><td>page number of pagination</td></tr><tr><td>limit</td><td>number</td><td>number of profiles displayed</td></tr></tbody></table>

### **Example Request**

<table><thead><tr><th width="274">Method</th><th>URL</th></tr></thead><tbody><tr><td>GET</td><td><a href="http://127.0.0.1:5555/profileList?page=1&#x26;limit=10">http://127.0.0.1:5555/profileList?page=1&#x26;limit=10</a></td></tr></tbody></table>

&#x20;  **Params**

| Key              | Value                                |
| ---------------- | ------------------------------------ |
| browser\_uuid\[] | 992bd6f1-0a4c-40b2-88c0-d6ae54db7347 |
| name\[]          |                                      |
| tag\_id\[]       |                                      |
| status\_id       |                                      |
| limit            |                                      |
| page             |                                      |

### **Example Response**

{% code lineNumbers="true" %}

```json
 "data": {
        "type": "success",
        "title": "Load successfully",
        "content": [
            {
                "uuid": "992bd6f1-0a4c-40b2-88c0-d6ae54db7347",
                "directory": "2023/05/15",
                "file_name": "e332938226517443e5ca72b5d269a0a6.zip",
                "can_be_running": true,
                "proxy": "",
                "created_at": "2023-05-15T07:28:07.000000Z",
                "created_at_diff": "43 minutes ago",
                "id": 20165,
                "folder_id": 532,
                "check_open": 1,
                "name": "15 - 5",
                "version": 112,
                "browser_type": "hidemium",
                "os": "mac",
                "note": "",
                "last_open": "2023-05-15 14:30:53",
                "last_open_diff": "41 minutes ago",
                "transfer": "",
                "source_version": null,
                "shares_role": false,
                "shared_uuid": "",
                "status": null,
                "status_chil": 0,
                "tags": [],
                "status_id": null,
                "listing": null
            }
        ]
    },
    "links": {
        "first": "https://v2-api.multibrowser.io/v1/browser/list?page=1",
        "last": "https://v2-api.multibrowser.io/v1/browser/list?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "path": "https://v2-api.multibrowser.io/v1/browser/list?page=1",
        "per_page": "10",
        "to": 1,
        "total": 1
    }
}
```

{% endcode %}


# 2. List config default

Get your list default config

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>GET</td><td>api_url/get-list-config-default?page={page}&#x26;limit={limit}</td></tr></tbody></table>

| Params | Value  | Description                  |
| ------ | ------ | ---------------------------- |
| page   | number | page number of pagination    |
| limit  | number | number of profiles displayed |

### **Example Request**&#x20;

<table><thead><tr><th width="251">Method</th><th>URL</th></tr></thead><tbody><tr><td>GET</td><td><a href="http://127.0.0.1:5555/get-list-config-default?page=1&#x26;limit=10">http://127.0.0.1:5555/get-list-config-default?page=1&#x26;limit=10</a></td></tr></tbody></table>

&#x20;  **Params**

<table><thead><tr><th width="250"></th><th></th></tr></thead><tbody><tr><td>page</td><td>1</td></tr><tr><td>limit</td><td>10</td></tr></tbody></table>

### **Example Response**

<pre class="language-json" data-line-numbers><code class="lang-json">[
<strong>    {
</strong>        "id": 433,
        "name": "1",
        "isDefault": true,
        "config": {
            "os": [
                "win",
                "mac",
                "lin",
                "android"
            ],
            "browser": [
                "chrome"
            ],
            "name": "1",
            "id": 433,
            "StartUrl": null
        },
        "created_at": "2024-01-08T01:19:37.000000Z"
    },
<strong>    {
</strong>        "id": 427,
        "name": "3 browser",
        "isDefault": false,
        "config": {
            "browser": [
                "chrome",
                "edge",
                "opera"
            ],
            "name": "3 browser",
            "profileName": "fgh",
            "id": 427,
            "StartUrl": null
        },
        "created_at": "2024-01-06T04:49:52.000000Z"
    }
]

</code></pre>


# 3. List status

Returns a list of status

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>GET</td><td>api_url/get-list-status</td></tr></tbody></table>

### **Example Request**

<table><thead><tr><th width="251">Method</th><th>URL</th></tr></thead><tbody><tr><td>GET</td><td><a href="http://127.0.0.1:5555/get-list-status">http://127.0.0.1:5555/get-list-status</a></td></tr></tbody></table>

### **Example Response**

{% code lineNumbers="true" %}

```json
[
    {
        "id": 58,
        "name": "12345",
        "color": "btn-outline-purple"
    },
    {
        "id": 59,
        "name": "hahaha",
        "color": "btn-outline-warning"
    },
    {
        "id": 65,
        "name": "red",
        "color": "btn-outline-secondary"
    },
    {
        "id": 70,
        "name": "blue",
        "color": "btn-outline-primary"
    },
    {
        "id": 71,
        "name": "green",
        "color": "btn-outline-primary"
    }
]

```

{% endcode %}


# 4. List tag

Returns a list of tag

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>GET</td><td>api_url/get-list-tag</td></tr></tbody></table>

### **Example Request**

<table><thead><tr><th width="251">Method</th><th>URL</th></tr></thead><tbody><tr><td>GET</td><td><a href="http://127.0.0.1:5555/get-list-tag">http://127.0.0.1:5555/get-list-tag</a></td></tr></tbody></table>

### &#x20;**Example Response** <a href="#hidemium-v4" id="hidemium-v4"></a>

{% code lineNumbers="true" %}

```json
[
    {
        "value": 132,
        "label": "tag 1"
    },
    {
        "value": 136,
        "label": "tag 2"
    },
    {
        "value": 137,
        "label": "tag 3"
    },
    {
        "value": 138,
        "label": "tag 4"
    }
]
```

{% endcode %}


# 5. List version

Returns a list of tag

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>GET</td><td>api_url/get-list-version</td></tr></tbody></table>

### **Example Request**

<table><thead><tr><th width="251">Method</th><th>URL</th></tr></thead><tbody><tr><td>GET</td><td><a href="http://127.0.0.1:5555/get-list-tag">http://127.0.0.1:5555/get-list-v</a>ersion</td></tr></tbody></table>

### &#x20;**Example Response**

{% code lineNumbers="true" %}

```json
{
    "win": [
        "115.0.5790.32",
        "114.0.5735.61"
    ],
    "lin": [
        "115.0.5790.32",
        "114.0.5735.90"
    ],
    "android": [
        "115.0.5790.32",
        "114.0.5735.196"
    ],
    "mac": [
        "115.0.5790.3",
        "114.0.5735.90"
    ]
}
```

{% endcode %}


# 6. Get profile by uuid

Returns a profile information

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>GET</td><td>api_url/browser/get-profile-by-uuid?uuid={uuid}</td></tr></tbody></table>

<table><thead><tr><th width="167">Params</th><th width="167.33333333333331">Value</th><th>Description</th></tr></thead><tbody><tr><td>uuid</td><td>string</td><td>UUID of profile</td></tr></tbody></table>

### **Example Request**

<table><thead><tr><th width="251">Method</th><th>URL</th></tr></thead><tbody><tr><td>GET</td><td><a href="http://127.0.0.1:5555/get-list-tag">http://127.0.0.1:5555</a>/browser/get-profile-by-uuid?uuid=99801eb6-41c0-4f94-a3f7-f14d2886f594</td></tr></tbody></table>

### **Example Response**

{% code lineNumbers="true" %}

````json
```json
{
    "type": "success",
    "title": "Request successfully.",
    "content": {
        "uuid": "99801eb6-41c0-4f94-a3f7-f14d2886f594",
        "name": "Xander Crist I [3]",
        "config": {
            "name": "Xander Crist I [3]",
            "version": 112,
            "os": "win",
            "browser_type": "hidemium",
            "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.5615.121 Safari/537.36",
            "osVersion": "Windows NT 10.0; Win64; x64",
            "browserVersion": "112.0.5615.121",
            "Resolution": {
                "width": 1920,
                "height": 1080,
                "pixelRatio": 2
            },
            "canvas": "noise",
            "WebGLImage": true,
            "WebGLMeta": true,
            "clientRectsEnable": false,
            "WebGLMetadataVendor": "Google Inc. (NVIDIA)",
            "WebGLMetadataRenderer": "ANGLE (NVIDIA, NVIDIA GeForce GTX 1070 Ti Direct3D11 vs_5_0 ps_5_0, D3D11-27.21.14.5671)",
            "languages": "en-US,en;q=0.9",
            "mediaDevices": true,
            "timezone": "Asia/Bangkok"
        },
        "proxy": "",
        "created_at": "2023-06-26T04:58:23.000000Z",
        "created_at_diff": "1 day ago",
        "note": "",
        "last_open": null,
        "last_open_diff": null,
        "status": null,
        "status_chil": 0,
        "tags": []
    }
}
```
````

{% endcode %}


# 7. Get list folder

returns a list of your folders

### Request

| Method | URL                                     |
| ------ | --------------------------------------- |
| GET    | <http://127.0.0.1:5555/get-list-folder> |

## Response&#x20;

```json
[
    {
        "id": 598,
        "uuid": "9a7dc6b9-b088-49c4-9030-e28298f9bfa1",
        "name": "Facebook",
        "total_browser": 10,
        "created_at": "2023-10-30T07:12:36.000000Z",
        "created_at_diff": "18 hours ago"
    },
    {
        "id": 602,
        "uuid": "9a7f52ac-e791-4915-9912-d1c93c8c2556",
        "name": "Youtube",
        "total_browser": 10,
        "created_at": "2023-10-31T01:39:45.000000Z",
        "created_at_diff": "1 minute ago"
    }
]
```


# Interact profile


# 1. Create profile by default

Create profile using default configuration

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>POST</td><td><a href="http://127.0.0.1:5555/create-profile-by-default">http://127.0.0.1:5555/create-profile-by-default</a></td></tr></tbody></table>

#### **Body**

<pre class="language-json" data-line-numbers><code class="lang-json">{
<strong>    "config_id": "222"
</strong>}
</code></pre>

* config\_id: ID of default config. Use API **list config default** to get config\_id

### **Response**

{% code lineNumbers="true" %}

```json
{
    "type": "success",
    "title": "Create successfully.",
    "content": {
       //content information 
    }
}
```

{% endcode %}


# 2. Create profile customize

Tạo profile mới và import cookie vào profile vừa tạo.

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>POST</td><td>http://127.0.0.1:5555/create-profile-custom</td></tr></tbody></table>

#### **Body**

<pre class="language-json" data-line-numbers><code class="lang-json">// The fields are not required
{
<strong>  
</strong>  "os": "win",  //win , mac , lin , android
  "userAgent": "",
  "canvas": "noise",  //"noise" or "off"
  "webGLImage": "true", //"true" or "false"
  "audioContext": "true",   //"true" or "false"
  "webGLMetadata": "true",   //"true" or "false"
  "clientRectsEnable": "true",    //"true" or "false"
  "languages": "en-us,vi;q=0.9",
  "resolution": "1024x768",
  "proxy": "HTTP|192.168.1.1|22|username|password",
  "name" : "", //tên profile
  "checkname" : true, //true|false thêm điều kiện check trùng tên khi tạo
  "folder_name" : "ten folder", //check nếu có thì dùng folder đó ko thì sẽ tạo
  "cookies" : [] //mảng cookies
}
</code></pre>

### **Response**

{% code lineNumbers="true" %}

```json
{
    "type": "success",
    "title": "Profile has been created successfully.",
    "content": {
       //content information 
    }
}
```

{% endcode %}


# 3. Change fingerprint

Shuffle some specific of fingerprint

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>PUT</td><td>http://127.0.0.1:5555/change-fingerprint</td></tr></tbody></table>

#### Body

```json
{
    "profile_uuid": "99e4dd8a-ef34-4be8-8306-26d02c38292a",
    "clear": true
}
```

### **Response**

{% code lineNumbers="true" %}

```json
{
    "type": "success",
    "title": "Update successfully.",
    "content": []
}
```

{% endcode %}


# 4. Update note

Update note of profile

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>PUT</td><td>http://127.0.0.1:5555/browser/update-note</td></tr></tbody></table>

#### **Body**

{% code lineNumbers="true" %}

```json
{
   "profile_uuid": "992bd6f1-0a4c-40b2-88c0-d6ae54db7347",
   "note": "Notes of a profile are recorded here!"
}
```

{% endcode %}

* profile\_uuid: UUID of profile
* note: Content notes

### **Response**

{% code lineNumbers="true" %}

```json
{
    "type": "success",
    "title": "Update successfully.",
    "content": []
}
```

{% endcode %}


# 5. Update name

Update note of profile

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>PUT</td><td>http://127.0.0.1:5555/browser/update-name</td></tr></tbody></table>

#### **Body**

{% code lineNumbers="true" %}

```json
{
   "profile_uuid": "992bd6f1-0a4c-40b2-88c0-d6ae54db7347", //required
   "data": "David James", //required
   "restore_session": false //optional
}
```

{% endcode %}

* profile\_uuid: UUID of profile
* data: Name of profile
* ```
  restore_session: restore browser session
  ```

### **Response**

{% code lineNumbers="true" %}

```json
{
    "type": "success",
    "title": "Update successfully.",
    "content": []
}
```

{% endcode %}


# 6. Sync tags

Synchronize the profile's tag

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>PUT</td><td>http://127.0.0.1:5555/sync-tags</td></tr></tbody></table>

### **Body**

{% code lineNumbers="true" %}

```json
{
    "tags": ["1212121","bbbb1"],
    "profile_uuid": "992c1053-4ed6-4018-8776-f91a0a8da77b"
}
```

{% endcode %}

* profile\_uuid: UUID of profile
* tags: Profile tags are limited to 15 characters

### &#x20;**Response**

{% code lineNumbers="true" %}

```json
{
    "type": "success",
    "title": "Sync successfully.",
    "content": []
}
```

{% endcode %}


# 7. Change status

Change status of profile

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>PUT</td><td>http://127.0.0.1:5555/change-status</td></tr></tbody></table>

#### **Body**

{% code lineNumbers="true" %}

```json
{
    "id": 59,
    "browser_uuid": "9931e0ff-c610-4345-a956-bf2fb42e4119"
}
```

{% endcode %}

* id: id of status, use api ***list status*** to get id. Also, the ID of the default status: '0'- No Status, '-1'-Ban, '-2' - Ready, '-3'- New.
* browser\_uuid: UUID of profile&#x20;

### **Response**

{% code lineNumbers="true" %}

```json
{
    "type": "success",
    "title": "Update successfully.",
    "content": []
}
```

{% endcode %}


# 8. Delete profile

Delete profile from profile list

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>DELETE</td><td>http://127.0.0.1:5555/delete-profile</td></tr></tbody></table>

#### **Body**

{% code lineNumbers="true" %}

```json
{
    "uuid_browser":[
        "98a715d1-efa7-45b6-912f-21d7eacd5d22",
        "9a47bc62-1aef-4b09-a585-218437bf1258"
    ]
}
```

{% endcode %}

* uuid\_browser: UUID of profile

### &#x20;**Response**

{% code lineNumbers="true" %}

```json
{
    "type": "success",
    "title": "Delete successfully.",
    "content": []
}
```

{% endcode %}


# Proxy


# 1. Update proxy

Update proxy of profile

## **1. Hidemium V2**

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>PUT</td><td>http://127.0.0.1:5555/update-proxy</td></tr></tbody></table>

### **Body**

{% code lineNumbers="true" %}

```json
{
    "uuid": "992d5efd-7709-4f2b-a1b1-50a16ca2b3bf",
    "title": "title",
    "ip": "222.22.22.222",
    "port": "222",
    "user": "222",
    "pass": "222",
    "type": "HTTP",
    "note": "note",
    "details": {
        "ip": "141.95.19.6s5",
        "hostname": "vps-efd874c9.vps.ovh.net",
        "city": "Limburg an der Lahn",
        "region": "Hesse",
        "country": "CA",    
        "loc": "50.3836,8.0503",
        "org": "AS16276 OVH SAS",
        "postal": "65549",
        "timezone": "Europe/Berlin",
        "asn": {
            "asn": "AS16276",
            "name": "OVH SAS",
            "domain": "ovh.net",
            "route": "141.95.0.0/17",
            "type": "hosting"
        }
    }
}
```

{% endcode %}

* uuid: UUID of proxy, need to use API list profile to get proxy's UUID
* ip: IP address
* port: access port
* user: username of proxy
* pass: Password of proxy
* type: proxy type (HTTP, SOCKS4, SOCKS5, SSH)
* details: detailed information of proxy: ip, location, org, city, region, country, timezone, asn.

### **Response**

{% code lineNumbers="true" %}

```json
{
    "type": "success",
    "title": "Update successfully.",
    "content": []
}
```

{% endcode %}


# 2. update profile's proxy

Update proxy of profile

### **Request**

<table><thead><tr><th width="249">Method</th><th>URL</th></tr></thead><tbody><tr><td>POST</td><td>http://127.0.0.1:5555/update-proxy-profile</td></tr></tbody></table>

### **Body**

{% code lineNumbers="true" %}

```json
{
    "browser_update":[
        {
            "uuid":"99321674-b6c5-4004-a182-be6147beea3e",
            "proxy":"SOCKS5|192.168.30.51|8080|123|121"
        }
    ]
}
```

{% endcode %}

* uuid: UUID of profile
* proxy: Proxy wants to update to profile, in the format: **type|ip\_address|port|username|pass**

### &#x20;**Response**

{% code lineNumbers="true" %}

```json
{
    "type": "success",
    "title": "Edit successfully.",
    "content": []
}
```

{% endcode %}


# Automation


# List scripts

Returns a list of scripts (workflows)

### Request

| Method | URL                                |
| ------ | ---------------------------------- |
| GET    | <http://scripts?page=1\\&limit=10> |

| Params | Value | Description                  |
| ------ | ----- | ---------------------------- |
| page   | 1     | page number of pagination    |
| limit  | 10    | number of profiles displayed |

### Example request&#x20;

| Method | URL                                             |
| ------ | ----------------------------------------------- |
| GET    | <http://127.0.0.1:5555/scripts?page=1&limit=10> |

### **Response**

```json
 "data": {
        "type": "success",
        "title": "Request successfully.",
        "content": [
                //content information 
                ]
        }
```


# AUTOMATION USER MANUAL

Automation is a feature that helps you automate everything with just a few commands. It is suitable for repetitive or repetitive work processes with a large number of profiles such as register account, raise account, auto like, plow YouTube views, auto search to increase SEO,... and is created by articles created according to your ideas called scripts. Below is a complete tutorial on the Automation feature.

Tự động hóa là tính năng giúp bạn tự động hóa mọi thứ chỉ bằng một vài lệnh. Nó phù hợp với những quy trình làm việc lặp đi lặp lại hoặc lặp đi lặp lại với số lượng lớn hồ sơ như đăng ký tài khoản, tăng tài khoản, auto like, cày view Youtube, auto search để tăng SEO,... và được tạo bởi các bài viết được tạo theo ý tưởng của bạn gọi là kịch bản. Dưới đây là hướng dẫn đầy đủ về tính năng Tự động hóa.

<figure><img src="/files/hIX5CzaFGMCSD94EQ25N" alt=""><figcaption><p>This is the main working screen of automation.</p></figcaption></figure>

&#x20;But before you want to work with automation, you need to know how to can select element because It is necessary for most nodes to utilize it. You can open random URL and after that, click mouse right and click here :&#x20;

Nhưng trước khi muốn làm việc với tự động hóa, bạn cần biết cách chọn phần tử vì hầu hết các nút đều cần sử dụng nó. Bạn có thể mở URL ngẫu nhiên và sau đó, nhấp chuột phải và nhấp vào đây:<br>

<figure><img src="/files/7EFPNMKvOZMMMR0PUex2" alt=""><figcaption></figcaption></figure>

And choose exact element you want put in script like this :&#x20;

Và chọn phần tử chính xác mà bạn muốn đưa vào tập lệnh như thế này:

<figure><img src="/files/i38VZ7WLFU1lwNF65tty" alt=""><figcaption></figcaption></figure>

After that, you can see the blue lines in right tab like this :&#x20;

Sau đó, bạn có thể thấy các đường màu xanh lam ở tab bên phải như thế này:

<figure><img src="/files/ymg5AFkAbQlH8g7U9w4h" alt=""><figcaption></figcaption></figure>

Continue clicking copy selector or copy xpath or full xpath. Normally you can copy selector but sometimes you have to copy full xpath, you can search when should I use either of them. If you have some understanding of inspect commands, selecting elements is easier without copying.

Tiếp tục nhấp vào copy selector or copy xpath or full xpath. Thông thường bạn có thể copy selector nhưng đôi khi bạn phải sao chép copy full xpath, bạn có thể tìm kiếm khi nào tôi nên sử dụng một trong hai bộ chọn đó. Nếu bạn có chút hiểu biết về cách lấy các phần tử một cách chính xác, việc chọn các phần tử sẽ dễ dàng hơn mà không cần sao chép.

Mỗi tập lệnh sẽ tương đương với một chu trình làm việc, trong các tập lệnh chứa “node” và luôn có hai trường hợp cho một node : đỏ và xanh. Màu xanh lá cây là những gì bạn đặt chính xác và nó tiếp tục thực hiện các hành động trên các node khác, trong khi màu đỏ là không chính xác. Đối với một số thành phần, bạn phải thực hiện cả xanh và đỏ:

<figure><img src="/files/1bojdrcbOOUHcWEuUsqB" alt=""><figcaption></figcaption></figure>


# Navigator


# New tab

When you use this node, the script will open a new tab to take the next action starts with URL you put in .

Khi bạn sử dụng nút này, tập lệnh sẽ mở một tab mới để thực hiện hành động tiếp theo bắt đầu bằng URL bạn nhập.

<figure><img src="/files/ny81h4IFuUOJPlH7eU5O" alt=""><figcaption></figcaption></figure>

| parameter | illustrate                                                                                                                                                                                                                                                             |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| URL       | <p>Nhập URL (đường dẫn) của trang web mà bạn muốn truy cập, chẳng hạn như: <https://www.facebook.com>, <https://www.google.com></p><p></p><p>Enter the URL (path) of the website you want to access, such as: <https://www.facebook.com>, <https://www.google.com></p> |

{% file src="/files/fCgwLCaK7ymPdTLgE54Q" %}


# Active tab

If your profile has multiple tabs, and you want to switch website tabs, you can use this active tab node.

Nếu profile của bạn có nhiều tab, và bạn muốn chuyển đổi tab trang web, bạn có thể sử dụng node active tab này.

<figure><img src="/files/yfNXyK1wXBcQ6KFva4uI" alt=""><figcaption></figcaption></figure>

For example, we have 3 tabs as follows:

Ví dụ ta có 3 tab như sau:

<figure><img src="/files/AkPYZF0gqY1ThQc6HObU" alt=""><figcaption></figcaption></figure>

#### Filter

* URL:

&#x20;           Equal: Enter the absolute path of the website, for example: <https://www.facebook.com/&#x20>;

&#x20;           Equal: Nhập đường dẫn tuyệt đối của trang web, ví dụ: <https://www.facebook.com/>

&#x20;           Contain: Enter the relative path of the website, for example: facebook

&#x20;           Contain: Nhập đường dẫn tương đối của trang web, ví dụ : facebook

* Title:

&#x20;            Equal: Enter the absolute title of the website, for example: Electronics, Cars, Fashion, Collectibles & More | eBay

&#x20;            Equal: Nhập tiêu đề tuyệt đối của trang web, ví dụ: Electronics, Cars, Fashion, Collectibles & More | eBay

&#x20;            Contain: Enter the relative title of the website, for example, Facebook

&#x20;            Contain: Nhập tiêu đề tương đối của trang web, ví dụ: Facebook

#### Select tab&#x20;

You need to enter the tab number of the tab you want to activate. For example, when you want to switch to the Facebook tab to work with that tab, you can enter the tab number as 1.

Bạn cần nhập tab number của tab mà bạn muốn active. Ví dụ khi bạn muốn chuyển sang tab Facebook để làm việc với tab đó thì bạn có thể nhập tab number là 1.

{% file src="/files/DpLrX7IdjAOjZ3FqZayd" %}


# Close tab

You can choose to close the current tab or select a tab, if you select tab you need to type tab number.\
\
Bạn có thể chọn đóng tab hiện tại hoặc bạn có thể nhập số tab mà bạn muốn đóng.

<figure><img src="/files/RaRYYUFIUg7P1pgP1pSv" alt=""><figcaption></figcaption></figure>

| parameter     | illustrate                                                                                                                                                                                                                                            |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Current       | <p>Đóng tab hiện tại đang active.    </p><p> </p><p>Close the currently active tab.</p>                                                                                                                                                               |
| Select tab    | <p>Select the tab you want to close. Enter the number of the tab you want to close or select a variable containing the tab number.       </p><p> </p><p>Chọn tab bạn muốn đóng. Nhập số của tab mà bạn muốn đóng hoặc chọn biến chứa số của tab. </p> |
| Other all tab | <p>Close all tabs except the active tab.</p><p></p><p>Thực hiện đóng toàn bộ tất cả các tab ngoại trừ tab đang active.</p>                                                                                                                            |

For example, there are the following 3 tabs:

Ví dụ có 3 tab sau:

<figure><img src="/files/v1yZo08kL5wubqmlG7t8" alt=""><figcaption></figcaption></figure>

When you select Current, the Ebay tab will be closed. If you select Select tab and enter the number 2, the Youtube tab will be closed. Tab numbers start from 1.&#x20;

If you select Other all tabs, Facebook  and Youtube will be closed.

Khi bạn chọn Current thì tab Ebay sẽ bị đóng. Còn nếu bạn chon Select tab và nhập số 2 thì tab Youtube sẽ bị đóng. Số tab bắt đầu từ 1.

Nếu bạn chọn Other all tab thì tab facebook và tab youtube sẽ bị đóng.

{% file src="/files/0yo4cS0wf2dP1U973Mbf" %}


# Open url

When you want to open a website into the current tab (not open a new tab) then you can use this tab.

Khi bạn muốn mở một trang web vào tab hiện tại (không mở một tab mới) thì bạn có thể sử dụng tab này.

<figure><img src="/files/ZVBvlSuWorFRkDSJ3IPe" alt=""><figcaption></figcaption></figure>

| parameter       | illustrate                                                                                                                                                                                                                                                                                                                                                          |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| URL             | <p>Enter the URL of the website you want to visit, such as: <https://www.google.com>, <https://www.facebook.com>. Or you can also choose a variable that contains a valid URL.</p><p></p><p>Nhập URL của trang web mà bạn muốn truy cập, chẳng hạn như: <https://www.google.com>, <https://www.facebook.com>  . Hoặc bạn cũng có thể chọn biến chứa URL hợp lệ.</p> |
| Timeout waiting | <p>Maximum waiting time. For example: 30000: If this step is not performed successfully within 30 seconds, the next step will be performed directly.</p><p></p><p>Thời gian chờ đợi tối đa. Ví dụ: 30000: Nếu bước này không được thực hiện thành công trong vòng 30 giây thì bước tiếp theo sẽ được thực hiện trực tiếp.</p>                                       |
| Referer header  | <p>The URL of the website you are moving from to the current page. Header Referer shows where you are coming from when accessing a website.</p><p></p><p>URL của trang web mà bạn đang chuyển từ đó tới trang hiện tại. Header Referer thể hiện rằng bạn đến từ đâu khi truy cập một trang web.</p>                                                                 |

{% file src="/files/sV6VMBj4BWOtFwlvE01E" %}


# Reload page

You can use it when you want to reload the active tab's page, similar to pressing F5.

Bạn có thể sử dụng nó khi bạn muốn tải lại trang của tab đang active, tương tự như việc bạn nhấn F5.

<figure><img src="/files/kEf5oybeJ2mGB7ZI2T4G" alt=""><figcaption></figcaption></figure>

| parameter       | illustrate                                                                                                                                                                                                                                                                                                                    |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Timeout waiting | <p>Maximum waiting time. For example: 30000: If this step is not performed successfully within 30 seconds, the next step will be performed directly.</p><p></p><p>Thời gian chờ đợi tối đa. Ví dụ: 30000: Nếu bước này không được thực hiện thành công trong vòng 30 giây thì bước tiếp theo sẽ được thực hiện trực tiếp.</p> |

{% file src="/files/a9wr60VSkycWiVFDQ2bO" %}


# Screenshot

When you perform a certain step and want to take a screenshot, you can use the Screenshot node.

Khi bạn thực hiện một bước nhất định và muốn chụp ảnh màn hình thì có thể sử dụng node Screenshot.

<figure><img src="/files/b5AjZmCyJ4KIYgJprdDN" alt=""><figcaption></figcaption></figure>

| parameter                     | illustrate                                                                                                                                                                                                           |
| ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Screenshot name               | <p>You can enter the name of the image you want or use the node's default name.</p><p></p><p>Bạn có thể nhập tên của ảnh mà bạn muốn hoặc sử dụng tên măc định của node.</p>                                         |
| Save to folder: Default       | <p>Automatically save photos to your device's Pictures folder.</p><p></p><p>Tự động lưu ảnh vào folder Pictures của máy bạn.</p>                                                                                     |
| Save to folder: Select Folder | <p>Choose where to save the photo.</p><p></p><p>Chọn nơi lưu ảnh.</p>                                                                                                                                                |
| Chụp toàn màn hình            | <p>ON: Capture the entire web page </p><p>OFF: Capture the part currently displayed on the website screen</p><p></p><p>ON: Chụp toàn bộ trang web</p><p>OFF: Chụp phần đang hiển thị trên màn hình của trang web</p> |
| Format                        | <p>Select the output image format as png or jpeg.</p><p>Chọn định dạng của ảnh đầu ra là png hoặc jpeg. </p>                                                                                                         |

{% file src="/files/8cry2ZwVPoWrdb2wlNMP" %}


# Switch Frame

&#x20;Some pages have iframe and you have to use node Switch Frame to navigate. You have two choices Sub frame and main frame. If you choose a subframe you need to select the element of that frame and here you also set the timeout waiting. When you use other platform accounts to log into a platform, you may come across a situation like this: when you log into Tik Tok with a Google account, a new tab will appear outside the main tab to log in to your account. To control this sub-tab using a script, you need to use the Switch Frame node.\
\
Một số trang có iframe và bạn phải sử dụng nút Switch Frame để điều hướng. Bạn có hai lựa chọn Khung phụ và khung chính. Nếu chọn khung con bạn cần chọn element  của khung đó và ở đây bạn cũng đặt thời gian chờ. Giống như việc bạn đăng nhập vào một nền tảng thông qua các tài khoản nền tảng khác sẽ gặp trường hợp như thế này, VD: đăng nhập tik tok bằng tài khoản google thì nó sẽ hiện ra một tab ngoài tab chính để đăng nhập account google. Lúc này nếu muốn script điều khiển được tab phụ kia thì cần dùng node Switch Frame này.

<figure><img src="/files/amkEO6Z4xhe7upNsMYKH" alt=""><figcaption></figcaption></figure>

| parameter                 | illustrate                                                                                                                                                                                                                                                                                                                    |
| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Sub frame: Select element | <p>Enter the frame's CSS selector, then you can perform actions on elements in the frame.</p><p></p><p>Nhập CSS selector của frame, sau đó bạn có thể thực hiện các hành động đối với các phần tử trong frame.</p>                                                                                                            |
| Sub frame: Main frame     | <p>When choosing main frame, the steps behind it will be affected on the main page of the website.</p><p></p><p>Khi chọn main frame thì các bước đằng sau đó sẽ được tác động lên trang chính của trang web.</p>                                                                                                              |
| Timeout waiting           | <p>Maximum waiting time. For example: 30000: If this step is not performed successfully within 30 seconds, the next step will be performed directly.</p><p></p><p>Thời gian chờ đợi tối đa. Ví dụ: 30000: Nếu bước này không được thực hiện thành công trong vòng 30 giây thì bước tiếp theo sẽ được thực hiện trực tiếp.</p> |

{% file src="/files/gJSpwUdyUXoTygf4zoX2" %}


# Switch Extension popup

Some pages have Extension popups and you must use the Switch Extension popup button to navigate. You have two options: Extension popup page and Main page. If you choose Extension popup page, you need to select the element of that popup and here you also set the wait time. Just like when you register to a platform through other platform accounts, you will encounter a situation like this, for example: registering for twitter with a google account, it will appear a tab outside the main tab to register. Now, if you want the script to control the other sub-tab, you need to use this Switch Extension popup button.

Một số trang có Extension popup và bạn phải sử dụng nút Switch Extension popup để điều hướng. Bạn có hai lựa chọn Extension popup page và Main page. Nếu chọn Extension popup page bạn cần chọn element của popup đó và ở đây bạn cũng đặt thời gian chờ. Giống như việc bạn đăng ký vào một nền tảng thông qua các tài khoản nền tảng khác sẽ gặp trường hợp như thế này, VD: đăng ký twitter bằng tài khoản google thì nó sẽ hiện ra một tab ngoài tab chính để đăng ký. Lúc này nếu muốn script điều khiển được tab phụ kia thì cần dùng node Switch Extension popup này.

<figure><img src="/files/xfhtX93QZmK8S8OnIC1M" alt=""><figcaption></figcaption></figure>

| parameter                            | illustrate                                                                                                                                                                                                                                                                                                                                           |
| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Extension popup page: Select element | <p>Enter a CSS selector, such as #email, #global-enhancements-search-query. After selecting Extension popup page, the following nodes will be active in the popup.</p><p></p><p>Nhập CSS selector, chẳng hạn như #email, #global-enhancements-search-query. Sau khi chọn Extension popup page thì các node phía sau sẽ được hoạt động tại popup.</p> |
| Extension popup page: Main page      | <p>When we want to navigate the following nodes back to the main page of the website after selecting Extension popup page, we choose Main page.</p><p></p><p>Khi ta muốn điều hướng các node phía sau trở lại trang chính của trang web sau khi chọn Extension popup page thì ta chọn Main page</p>                                                  |
| Timeout waiting                      | <p>Maximum waiting time. For example: 30000: If this step is not performed successfully within 30 seconds, the next step will be performed directly.</p><p></p><p>Thời gian chờ đợi tối đa. Ví dụ: 30000: Nếu bước này không được thực hiện thành công trong vòng 30 giây thì bước tiếp theo sẽ được thực hiện trực tiếp.</p>                        |

{% file src="/files/DZfNncK8K9tP513Ubw9j" %}


# Go back

When you want to return to the previous website, use go back. Similar to when you select this arrow.

Khi bạn muốn quay trở lại trang web trước đó thì ta dùng go back. Tương tự như việc bạn chọn mũi tên này.

<figure><img src="/files/mb2fppFyJ49UCPf07GYk" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/QhztxeDK0WsjdsaIPlkp" alt=""><figcaption></figcaption></figure>

| parameter       | illustrate                                                                                                                                                                                                                                                                                                                    |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Timeout waiting | <p>Maximum waiting time. For example: 10000: If this step is not performed successfully within 10 seconds, the next step will be performed directly.</p><p></p><p>Thời gian chờ đợi tối đa. Ví dụ: 10000: Nếu bước này không được thực hiện thành công trong vòng 10 giây thì bước tiếp theo sẽ được thực hiện trực tiếp.</p> |

{% file src="/files/enzJgwaSOH0wXQXoaIAR" %}


# AI Agents


# Hidemium AI

Node này sẽ được hỗ trợ trong hidemium V4

Để việc viết script trở nên đơn giản hơn thì các bạn có thể sử dụng node Hidemium AI

<img src="https://education.hidemium.io/wp-content/uploads/2025/02/Screenshot_1.png" alt="" height="544" width="619">

&#x20;

**Model:** Ở đây các bạn có thể chọn các công nghệ AI bao gồm: Gemini, Open AI, Anthropic, DeepSeek, Ollama

**API key:** Các bạn cần nhập các API key tương ứng với các Model đã chọn ở trên. Các bạn có thể nhập nhiều API key của model đó. Mỗi API một dòng, node sẽ random ngẫu nhiên một trong số nhiều API mà bạn nhập vào.

**Prompt:** Nhập rõ yêu cầu mà bạn muốn AI thực hiện.

**Output:** Kết quả mà AI trả về sẽ được lưu tại đây.

**Timeout:** Thời gian chờ, nếu như để trống thì sẽ đợi đến khi nào AI thực hiện xong thì mới chạy đến node tiếp theo.

&#x20;

**Ví dụ thực tế:**&#x20;

Tôi có yêu cầu như sau:

<img src="https://education.hidemium.io/wp-content/uploads/2025/02/Screenshot_3.png" alt="" height="546" width="619">

&#x20;

Và đây là demo chạy:

{% file src="/files/NKaJKrvKyFfhTx1tFdxv" %}

&#x20;

&#x20;

Các bạn cũng có thể xem video hướng dẫn tại đây: <https://www.youtube.com/watch?v=0AAQjfNQsl0>


# Finger Action


# Tap

Đây là node dùng cho các profile Android và IOS

Node này tương đương với node click, nhưng chỉ được áp dụng cho Android và IOS.

Dùng để chạm vào phần tử mong muốn.

<figure><img src="/files/yOMzcUuO5Ht84ouQIYD3" alt=""><figcaption></figcaption></figure>

| parameter        | illustrate                                                                                                                                            |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| Selector element | <p></p><p></p><p>Nhập CSS selector/xpath của phần tử mà bạn muốn thực hiện chạm</p>                                                                   |
| Element order    | <p>Chọn thành phần nào của trang web:<br>Fixed value: chọn một phần tử cố định<br>Random value: random một giá trị ngẫu nhiên trong khoảng đã đặt</p> |
| Coordinates      | Nhập tọa độ x,y của phần tử bạn muốn chạm vào                                                                                                         |


# Touch Move

Node này dùng để **giả lập thao tác vuốt tay trên màn hình** (tức là **chạm vào 1 điểm → kéo → thả ra ở điểm khác**). Và chỉ áp dụng cho profile Android và IOS.

Ví dụ:

* Vuốt lên / vuốt xuống
* Kéo màn hình sang trái / phải
* Kéo một vật từ chỗ này sang chỗ khác

### Ý nghĩa từng ô trong **Touch Move**

* **Start X**: chỗ **bắt đầu chạm** theo **chiều ngang**
* **Start Y**: chỗ **bắt đầu chạm** theo **chiều dọc**

👉 **Start = điểm đặt tay xuống**

***

* **End X**: chỗ **kéo tới** theo **chiều ngang**
* **End Y**: chỗ **kéo tới** theo **chiều dọc**

👉 **End = điểm thả tay ra**

<figure><img src="/files/1xmcY76wxKOMV61eLiPP" alt=""><figcaption></figcaption></figure>


# Mouse


# Click

### Giới thiệu tổng quan

True to its name, this button is used to automatically click the mouse on the element you select and put it in the "select element" box. \
\
Đúng như tên gọi của nó, nút này dùng để tự động click chuột vào phần tử bạn chọn và cho vào ô “select element”.&#x20;

<figure><img src="/files/ibMoWhekRpWiEceRGS3R" alt=""><figcaption></figcaption></figure>

| parameter         | illustrate                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Click type        | <p>Left: left click on the selected element Right: right click on the selected element Midle: click on the element of your choice and open it in a new tab. Click down: Click and hold the mouse button at the same time. Click up: Release the mouse button at the element you select.</p><p></p><p>Left: click chuột trái vào phần tử đã chọn<br>Right: click chuột phải vào phần tử đã chọn<br>Midle: click vào phần tử bạn chọn và mở phần tử đó trong một tab mới.                                           Click down: Click đồng thời thực hiện giữ chuột Click up: Thực hiện việc thả chuột tại phần tử mà bạn chọn</p> |
| Button click type | <p>Click: click once on the selected element Double click: double click on the selected element</p><p></p><p>Click: click một lần vào phần tử đã chọn<br>Double click: click đúp vào phần tử đã chọn</p>                                                                                                                                                                                                                                                                                                                                                                                                                         |
| Selector          | <p>Enter the CSS selector of the element you want to click on.</p><p></p><p>Nhập CSS selector của phần tử mà bạn muốn thực hiện click</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| Element order     | <p>Which element of the website to choose: Fixed value: select a fixed element Random value: random a random value within a set range</p><p></p><p>Chọn thành phần nào của trang web:<br>Fixed value: chọn một phần tử cố định<br>Random value: random một giá trị ngẫu nhiên trong khoảng đã đặt</p>                                                                                                                                                                                                                                                                                                                            |
| Coordinates       | <p>Enter the x,y coordinates of the element you want to click</p><p></p><p>Nhập tọa độ x,y của phần tử bạn muốn click</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |

### Hướng dẫn sử dụng

Ví dụ : Bạn cũng có thể sử dụng node click để nhấn và giữ chuột:

Khi bạn muốn nhấn và giữ chuột trong một khoảng thời gian thì bạn là như sau:

Bước 1: Khi bạn muốn click để nhấn chuột thì bạn chọn click down, và nhập selector của phần tử mà bạn muốn giữ chuột

<figure><img src="/files/2qOn2wIRCnOiW5ZeV02m" alt=""><figcaption></figcaption></figure>

Cũng tại node này bạn nhập thời gian giữ chuột, ví dụ bạn muốn giữ chuột trong 5s thì bạn nhập thời gian vào phần Sleep time trong setting.

Bước 2: Sau đó bạn sử dụng thêm 1 node click nữa để thả chuột. Ở đây bạn chọn click up để thả chuột, bạn cần nhập selector của phần tử như ở bước 1

<figure><img src="/files/PspGgqO8HCpfxDZ26ROZ" alt=""><figcaption></figcaption></figure>

Như vậy là bạn đã có thể nhấn và giữ chuột thành công.


# Press and hold

Ở đây bạn sẽ sử dụng node click trong automation để thực hiện hành động nhấn và giữ chuột.

Trong node click có thêm 2 option đó là Click down và Click up, 2 option này tương đương với việc bạn click chuột xuống và thả chuột ra.

<figure><img src="/files/K6wvGKpRGpXDasGDZZt5" alt=""><figcaption></figcaption></figure>

Khi sử dụng 2 option này bạn có thể nhấn giữ chuột để kéo một phần tử từ chỗ này sang chỗ khác. Hoặc kéo thả từ tọa độ này sang tọa độ khác.

Bạn cũng có thể thực hiện nhấn giữ chuột (click down) trong 1 khoảng thời gian sau đó thả chuột ra (click up).

Khi bạn muốn giữ vào một điểm để di chuyển nhân vật thì bạn có thể chỉ cần sử dụng click down để thực hiện việc di chuyển nhân vật.


# Mouse movement

\
When you want to hover over an element, you can use this button.

Khi bạn muốn di chuột vào một phần tử nào đó thì có thể dùng node này.

<figure><img src="/files/BIJVIrH5mmkCTjUl3Yuk" alt=""><figcaption></figcaption></figure>

| parameter      | illustrate                                                                                                                                                                                                                                                                                            |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Select element | <p>Enter the CSS selector of the element you want to hover on, such as #email, #global-enhancements-search-query</p><p></p><p>Nhập CSS selector của phần tử mà bạn muốn di chuột vào đó, chẳng hạn như #email, #global-enhancements-search-query</p>                                                  |
| Element order  | <p>Which element of the website to choose: Fixed value: Select a fixed element Random value: random a random value within a set range</p><p></p><p>Chọn thành phần nào của trang web:<br>Fixed value: Chọn một phần tử cố định<br>Random value: random một giá trị ngẫu nhiên trong khoảng đã đặt</p> |
| Focus          | <p>There are 2 options, if you choose true it will focus on the element you choose, but if you choose false it will not focus on it.</p><p></p><p>Có 2 lựa chọn, nếu bạn chọn true thì sẽ focus vào phần tử mà bạn chọn, còn nếu chọn false thì sẽ không focus vào đó</p>                             |
| Coordinates    | <p>Enter the x,y coordinates of the object you want to move the mouse to</p><p></p><p>Nhập tọa độ x,y của đối tượng mà bạn muốn di chuyển chuột vào đó</p>                                                                                                                                            |

{% file src="/files/RLGihEXOS13ugZtsMvRs" %}


# Scroll

It is intended for users who wish to scroll the page to simulate an action or locate the next element they wish to manipulate by selecting an element or by coordinates and you need to determine the coordinates of that location.\
\
Nó dành cho người dùng muốn cuộn trang để mô phỏng một hành động hoặc xác định vị trí phần tử tiếp theo mà họ muốn thao tác bằng cách chọn một phần tử hoặc theo tọa độ và bạn cần xác định tọa độ của vị trí đó

<figure><img src="/files/yGy6rRQzTKZ2G1e6vpo1" alt=""><figcaption></figcaption></figure>

| parameter      | illustrate                                                                                                                                            |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| Select element | <p>Enter the CSS selector of the element you want to scroll the page down</p><p></p><p>Nhập CSS selector của phần tử mà bạn muốn cuộn trang xuống</p> |
| Element order  | <p>Permanently select an element that you want to scroll down</p><p></p><p>Chọn cố định một phần tử mà bạn muốn cuộn xuống</p>                        |
| Coordinates    | <p>Enter the x,y coordinates to which you want to scroll the page</p><p></p><p>Nhập tọa độ x,y mà bạn muốn cuộn trang tới tạo độ đó</p>               |

{% file src="/files/Cs7FILJKCSZ11ObmYEYl" %}


# Drop-down selector

Node này được sử dụng khi bạn muốn chọn một giá trị từ tùy chọn thả xuống (drop-down).

Ví dụ bạn muốn chọn một giá trị trong drop-down này:

<figure><img src="/files/jTmvRcCr2IQUpi8nO1uo" alt=""><figcaption></figcaption></figure>

You must take the drop-down CSS selector and enter the value corresponding to the screen value you want to display.

Bạn phải lấy CSS selector của drop-down và nhập value tương ứng với giá trị màn bạn muốn hiển thị.

<figure><img src="/files/1RgwXEgKuU3ENDh9JBvG" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/pzuaAivlO4ipIzaarJih" alt=""><figcaption></figcaption></figure>

| parameter      | illustrate                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Select element | <p>Enter the dropdown's CSS selector</p><p></p><p>Nhập CSS selector của dropdown</p>                                                                                                                                                                                                                                                                                                                                                                                                            |
| Element Order  | <p>Which element of the website to choose: Fixed value: Select a fixed element. Random interval: random a random value within a set range.</p><p></p><p>Chọn thành phần nào của trang web:<br>Fixed value: Chọn một phần tử cố định.<br>Random interval: random một giá trị ngẫu nhiên trong khoảng đã đặt.</p>                                                                                                                                                                                 |
| Selected value | <p>Enter the value of the option you want to select. For example, we have the following option:Everything Else. Then in the Selected value field we will enter 99 to run the script, the dropdown will display the value as Everything Else</p><p></p><p>Nhập value của option mà bạn muốn chọn. Ví dụ ta có option sau: \<option value="99">Everything Else\</option>  . Khi đó trường Selected value ta sẽ nhập là 99 chi chạy script thì dropdown sẽ hiển thị giá trị là Everything Else</p> |

{% file src="/files/YNReC6xc0dbEtCaEBKvY" %}


# Mouse wheel

This node simulates the mouse wheel to scroll the page. You need to enter the X and Y coordinates for the mouse wheel to reach that point.\
\
Node này mô phỏng thanh lăn chuột để cuộn trang. Bạn cần điền tọa độ X và Y để thanh lăn chuột đi tới điểm đó.

<figure><img src="/files/AxTBc1oyfaWi9BEK7XJf" alt=""><figcaption></figcaption></figure>

| parameter          | illustrate                                                                                                                                                                            |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Enter X coordinate | <p>Enter the X coordinate or select the variable containing the coordinate you want to scroll to.</p><p></p><p>Nhập tọa độ X hoặc chọn biến chứa tọa độ mà bạn muốn lăn chuột tới</p> |
| Enter Y coordinate | <p>Enter the Y coordinate or select the variable containing the coordinate you want to scroll to.</p><p></p><p>Nhập tọa độ Y hoặc chọn biến chứa tọa độ mà bạn muốn lăn chuột tới</p> |

{% file src="/files/NAE9Y8MwZTLoWUs7uJ3V" %}


# Keyboard


# Press key

This node allows you to select the desired key for the script to enter, similar to a keyboard.\
\
Nút này cho phép bạn chọn phím mong muốn để nhập tập lệnh, tương tự như bàn phím.

<figure><img src="/files/ldhYTLIoTKVitUWsuPcr" alt=""><figcaption></figcaption></figure>

| parameter  | illustrate                                                                                                                                                                                                                                  |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Select key | <p>Select the keys you desire, using this button is equivalent to pressing the corresponding key on the keyboard.</p><p></p><p>Chọn các phím mà bạn mong muốn, sử dụng node này tương đương với việc nhấn phím tương ứng trên bàn phím.</p> |

{% file src="/files/4eOYlh60mB9nGL9rbPNh" %}


# Type text

If you want the script to enter text, you can enter it directly at the node or select a variable containing the text.

Nếu muốn script nhập văn bản thì có thể nhập trực tiếp tại nút hoặc chọn biến chứa văn bản.

<figure><img src="/files/G1Q1bXRHVVf7ycrHhGaV" alt=""><figcaption></figcaption></figure>

| parameter           | illustrate                                                                                                                                                                                                                                                                                      |
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Enter text          | <p>Enter a piece of text that you want to use or select the variable that contains the text.</p><p></p><p>Nhập một đoạn văn bản mà bạn muốn sử dụng hoặc chọn biến chứa văn bản.</p>                                                                                                            |
| Enter interval time | <p>Space between entered characters. For example: 100. If this step is performed, each character will be entered 100 milliseconds apart.</p><p></p><p>Khoảng cách giữa các ký tự được nhập vào. Ví dụ: 100. Nếu bước này được thực hiện, thì mỗi kí tự sẽ được nhập cách nhau 100 mili giây</p> |

We have the following example: When you want to enter email into Facebook's email field

Ta có ví dụ sau: Khi bạn muốn điền email vào trường email của facebook

<figure><img src="/files/5faHX0nrjcUcVv0W3eRL" alt=""><figcaption></figcaption></figure>

Ta có script như sau:

Ta có script như sau:

<figure><img src="/files/tSIeR65b1PtA35mSILuc" alt=""><figcaption></figcaption></figure>

At node click you will have to enter the CSS selector of the email field, then node type you will enter your email. So we have successfully entered email into Facebook's email field.

Tại node click bạn sẽ phải nhập CSS selector của trường email, sau đó node type bạn sẽ nhập email của bạn. Như vậy là ta đã điền thành công email vào trường email của facebook.

<figure><img src="/files/xHrN4Cu7iqcbh4qGMnqv" alt=""><figcaption></figcaption></figure>

{% file src="/files/xH6ZrUtmqc22WmHS1J0h" %}


# Send text to selector

The user can perform two actions simultaneously with this node. Click on the input box you want to send a piece of text to, such as email, password, or keyword, and refer to it as select element. And we talked above about how to get the correct selector. After, we need to enter a single content on one line; Please enter multiple content in a new line, and one of content will be random selected. Example :&#x20;

&#x20;    Content one

&#x20;    Content two

Or click on the orange button and it will let you choose the variables you entered\
\
Người dùng có thể thực hiện đồng thời hai hành động với nút này. Nhấp vào hộp nhập mà bạn muốn gửi một đoạn văn bản tới, chẳng hạn như email, mật khẩu hoặc từ khóa và coi nó là phần tử chọn. Và chúng ta đã nói ở trên về cách lấy bộ chọn chính xác. Sau đó, chúng ta cần nhập một nội dung trên một dòng; Vui lòng nhập nhiều nội dung vào một dòng mới và một trong các nội dung sẽ được chọn ngẫu nhiên. Ví dụ :&#x20;

&#x20;    Nội dung một&#x20;

&#x20;    Nội dung hai&#x20;

Hoặc nhấp vào nút màu cam và nó sẽ cho phép bạn chọn các biến bạn đã nhập.

<figure><img src="/files/TJ5b9rjopVopdUIFZCDA" alt=""><figcaption></figcaption></figure>

| parameter           | illustrate                                                                                                                                                                                                                                                     |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Select element      | <p>Enter the CSS selector of the element you will fill with text, such as #email, #global-enhancements-search-query</p><p></p><p>Nhập CSS selector của phần tử mà bạn sẽ điền text vào, chẳng hạn như #email, #global-enhancements-search-query</p>            |
| Element order       | <p>Choose which element of the website</p><p></p><p>Chọn thành phần nào của trang web</p>                                                                                                                                                                      |
| Content             | <p>Enter content, 1 line per content. If you enter multiple lines, node will automatically randomize and take 1 line at random</p><p></p><p>Nhập nội dung, mỗi nội dung 1 dòng. Nếu bạn nhập nhiều dòng thì node sẽ tự random và lấy ngẫu nhiên 1 dòng</p>     |
| Enter interval time | <p>Space between entered characters. For example: If you enter 100, each character will be entered 100 milliseconds apart</p><p></p><p>Khoảng cách giữa các kí tự được nhập vào. Ví dụ: Bạn nhập là 100 thì mỗi kí tự sẽ được nhập cách nhau 100 mili giây</p> |

{% file src="/files/RoTerEXrLMGMX1fJVmgG" %}


# Clear text

Node này dùng để xóa text trong các ô input, text area&#x20;

Các bạn chỉ cần điều element của ô cần xóa, sau khi chạy xong thì toàn bộ text trong ô input, text area sẽ bị xóa.

<figure><img src="/files/Ah7Kk7jLDpRGHChGSbMN" alt=""><figcaption></figcaption></figure>


# Data


# Element exists

This function allows you to check whether the element you select exists or not.

Chức năng này cho phép bạn kiểm tra xem phần tử bạn chọn có tồn tại hay không.&#x20;

If the element does not exist then it will go to the red line:

Nếu phần tử không tồn tại thì nó sẽ đi ra đường màu đỏ:

<figure><img src="/files/iJyUgAsXZHprsLceWXyB" alt=""><figcaption></figcaption></figure>

If the element exists then it will go to the blue line:

Nếu phần tử tồn tại thì nó sẽ đi ra đường màu xanh:

<figure><img src="/files/BnkYo3s8o0cozTZ50L7x" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/D4QewF4sBxajqjqde0ox" alt=""><figcaption></figcaption></figure>

| parameter       | illustrate                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Select element  | <p>Enter a CSS selector, such as #email, #global-enhancements-search-query</p><p></p><p>Nhập CSS selector, chẳng hạn như #email, #global-enhancements-search-query</p>                                                                                                                                                                                                                                                           |
| Element order   | <p>Select any component of the web</p><p></p><p>Chọn thành phần nào của trong web</p>                                                                                                                                                                                                                                                                                                                                            |
| Visible         | <p>If set to true, the element you select must be visible for the node to run to the green line. If set to false, as long as that element is present (regardless of visibility), the node will run to the green line.</p><p></p><p>Nếu để true thì phần tử mà bạn chọn phải visible thì node mới chạy ra đường xanh. Còn nếu để false thì chỉ cần có phần tử đó (không quan tâm đến visible) thì node sẽ chạy ra đường xanh.</p> |
| Timeout waiting | <p>Maximum waiting time. For example: 30000: If this step is not performed successfully within 30 seconds, the next step will be performed directly.</p><p></p><p>Thời gian chờ đợi tối đa. Ví dụ: 30000: Nếu bước này không được thực hiện thành công trong vòng 30 giây thì bước tiếp theo sẽ được thực hiện trực tiếp.</p>                                                                                                    |

{% file src="/files/5obHjg7iQ6ZDQf4olMB5" %}


# Get URL

When you use the Get URL node, you can get relevant information about website links, store the relevant information in a variable, and call it for other operations.

Khi bạn sử dụng node Get URL, bạn có thể lấy thông tin liên quan về các links trang web, lưu trữ thông tin liên quan trong một biến và gọi nó cho các hoạt động khác.

<figure><img src="/files/I6N1n8aUubdHIB7Mmg9h" alt=""><figcaption></figcaption></figure>

Let's assume that the URL being opened is: <https://www.etsy.com/search?q=book&ref=search_bar>

Giả sử rằng URL được mở là: <https://www.etsy.com/search?q=book&ref=search_bar>

| parameter           | illustrate                                                                                                                                                                                           |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Content: Full URL   | Lấy toàn bộ URL là: <https://www.etsy.com/search?q=book&ref=search_bar>                                                                                                                              |
| Content: Domain     | <p>Get the domain of the URL: [www.etsy.com](http://www.etsy.com)</p><p></p><p>Lấy domain của URL là: [www.etsy.com](http://www.etsy.com)</p>                                                        |
| Content: Search key | <p>When entering "q", store "book" in variable. When entering "ref", save "search\_bar" in variable.</p><p></p><p>Khi nhập "q", lưu "book" vào biến. Khi nhập "ref", lưu "search\_bar" vào biến.</p> |
| Output Variable     | <p>Save the obtained value into the variable</p><p></p><p>Lưu giá trị lấy được vào biến</p>                                                                                                          |

{% file src="/files/ANTcAX0zm8JISZifuUIp" %}


# Get text

You need to select an element and then the script will get the text value contained in that element and  save to the variable of your choice.\
\
Bạn cần chọn một phần tử và sau đó script sẽ lấy giá trị văn bản có trong phần tử đó và lưu vào biến bạn chọn.

<figure><img src="/files/e7eWJbuc6rmGlzHmkN3g" alt=""><figcaption></figcaption></figure>

| parameter       | illustrate                                                                                                                                               |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Select element  | <p>Enter the CSS selector of the element containing the text you want to get</p><p></p><p>Nhập CSS selector của phần tử chứa text mà bạn muốn lấy</p>    |
| Element order   | <p>Select elements based on the order they appear on the page</p><p></p><p>Chọn các thành phần dựa trên thứ tự chúng xuất hiện trên trang</p>            |
| Output variable | <p>Save the extracted elements as variables and enter the variable name</p><p></p><p>Lưu các phần tử được trích xuất dưới dạng biến và nhập tên biến</p> |

{% file src="/files/Q8jC5VoDJVOqYhTvxyZ9" %}


# Get value

This node allows you take a value from element you put in here, and you need to set a Output Variable for that. Only get the value of \<input> or \<textarea> or \<select> tags. If you want to get the value of other tags you can use the Get attribute value node.\
\
Nút này cho phép bạn lấy một giá trị từ phần tử mà bạn muốn và bạn cần đặt Biến đầu ra cho giá trị đó. Chỉ lấy được giá trị của các thẻ \<input> hoặc \<textarea> hoặc \<select>. Nếu bạn muốn lấy giá trị của các thẻ khác bạn có thể sử dụng nút Get attribute value.

<figure><img src="/files/EAutkgyPYYkxq1QOlr1I" alt=""><figcaption></figcaption></figure>

| parameter       | illustrate                                                                                                                                          |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| Select element  | <p>Enter the CSS selector of the element for which you want to get the value</p><p></p><p>Nhập CSS selector của phần tử mà bạn muốn lấy giá trị</p> |
| Element order   | <p>Select elements based on the order they appear on the page ​</p><p></p><p>Chọn các thành phần dựa trên thứ tự chúng xuất hiện trên trang</p>     |
| Output variable | <p>Save the extracted value into a variable</p><p></p><p>Lưu giá trị được trích xuất vào biến</p>                                                   |

{% file src="/files/FoCAHWVgMVC8BsZo3gpP" %}


# Get attribute value

This button allows you to get the attribute value from the element you put here and you need to fill in the attribute name for which you want to get the value, set the Output Variable for that value.

Nút này cho phép bạn lấy giá trị thuộc tính từ phần tử bạn đặt ở đây và bạn cần điền tên thuộc tính mà bạn muốn lấy giá trị, đặt Biến đầu ra cho giá trị đó.&#x20;

<figure><img src="/files/R42mlvkRZhOcbrAhu1wK" alt=""><figcaption></figcaption></figure>

| parameter       | illustrate                                                                                                                                                                                                     |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Attribute name  | <p>The name of the attribute for which you want to get the value. For example: title, alt, color, class, ...</p><p></p><p>Tên của thuộc tính mà bạn muốn lấy giá trị. Ví dụ: title, alt, color, class, ...</p> |
| Select element  | <p>Enter a CSS selector, for example #email, #global-enhancements-search-query</p><p></p><p>Nhập CSS selector , chằng hạn #email, #global-enhancements-search-query</p>                                        |
| Element order   | <p>Select elements based on the order they appear on the page</p><p></p><p>Chọn các thành phần dựa trên thứ tự chúng xuất hiện trên trang</p>                                                                  |
| Output Variable | <p>Save the extracted value into a variable</p><p></p><p>Lưu giá trị được trích xuất vào một biến</p>                                                                                                          |

For example, you want to get this image link:

Ví dụ bạn muốn lấy link ảnh này:

<figure><img src="/files/CMowsdTq6ZR5Ha5UwhpI" alt=""><figcaption></figcaption></figure>

You need to enter the CSS selector of this image element and enter the attribute name, here the attribute name of this image is **src**

Bạn cần nhập CSS selector của phần tử ảnh này và nhập tên thuộc tính, ở đây tên thuộc tính của ảnh này là **src**&#x20;

<figure><img src="/files/61dYoxtZbtOiXeTEqA3y" alt=""><figcaption></figcaption></figure>

You have then retrieved the value of this image attribute and stored it in a variable.

Khi đó bạn đã lấy được giá trị của thuộc tính ảnh này và lưu vào biến.

{% file src="/files/OtvS223qphS5RX0X6pzQ" %}


# Random

You can generate random values ​​for the variable of your choice.\
\
Bạn có thể tạo các giá trị ngẫu nhiên cho biến bạn chọn.

<figure><img src="/files/LK00IVtVJ4RH4pYy5D1W" alt=""><figcaption></figcaption></figure>

* Email: Please enter the domain of the email you want. For example, if you enter the domain as abc.com, the random email will be <email@abc.com>.&#x20;

* Full Name: Randomly output any full name Random letters: Randomly generates different letters based on the number you choose&#x20;

* Password: Randomly generate characters to use as a password, the number depends on your choice&#x20;

* First name: Ramdom gives any first name&#x20;

* Last name: Randomly generate any lastname&#x20;

* Number: Ramdom outputs a number within the range you choose&#x20;

* Output variable: Stores random values into a variable

* Email: Bạn hãy nhập domain của email mà bạn mong muốn. Ví dụ bạn nhập domain là abc.com thì email được random có dạng <email@abc.com>.

* Full Name: Random ra một tên đầy đủ bất kì

* Random letters: Random ra các kí tự khác nhau dự vào số lượng mà bạn chọn

* Password: Random ra các kí tự để làm password, số lượng tùy vào bạn chọn

* First name: Ramdom ra một first name bất kì

* Last name: Random ra một lastname bất kì

* Number: Ramdom ra một số nằm trong khoảng mà bạn chọn

* Output variable: Lưu các giá trị được random ra vào biến

{% file src="/files/x6pLkbC710IJOl9xzKqR" %}


# File upload

You can upload files to your desired website. Website file upload buttons need to have an **Input** tag with **type="file"**.&#x20;

Note that there are some websites that have an **Input** tag with **type="file"** but have this **Display: none** attribute, so you cannot get the selector of this input type, you must get the selector of the **Label** tag above the **Input** tag.

Bạn có thể tải tệp lên trang web mà bạn mong muốn. Các button upload file của trang web cần có thẻ **Input** với **type="file".**&#x20;

Lưu ý có một vài trang web có thẻ **Input** với **type="file"** nhưng lại có thuộc tính **Display: none** này thì bạn không thể lấy selector của thể input này được, mà bạn phải lấy selector của thẻ **Label** bên trên thẻ **Input.**

<figure><img src="/files/Pd8XIXxjzeSX3L7uFXfw" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/IPJzTj7VRujDnubwCXbN" alt=""><figcaption></figcaption></figure>

<table><thead><tr><th width="260">parameter</th><th>illustrate</th></tr></thead><tbody><tr><td>Select element</td><td><p>Enter the CSS selector of the element to upload</p><p></p><p>Nhập CSS selector của phần tử cần upload</p></td></tr><tr><td>Element order</td><td><p>Select elements based on the order they appear on the page</p><p></p><p>Chọn các thành phần dựa trên thứ tự chúng xuất hiện trên trang</p></td></tr><tr><td>Path to the file</td><td><p>Local file: select a local file to upload. </p><p>Folder file random: choose a folder and randomly upload a file in the folder. </p><p>Network file: to upload a network file, enter a URL starting with http/https.</p><p></p><p>Local file: chọn một tệp cục bộ để tải lên<br>Folder file random: chọn một thư mục và tải lên ngẫu nhiên một tệp trong thư mục.<br>Network file: để tải lên tệp mạng, hãy nhập URL bắt đầu bằng http/https.</p></td></tr><tr><td>Timeout waiting</td><td><p>Maximum waiting time. For example: 30000. If this step is not performed successfully within 30 seconds, the next step will be performed directly.</p><p></p><p>Thời gian chờ đợi tối đa. Ví dụ: 30000. Nếu bước này không được thực hiện thành công trong vòng 30 giây thì bước tiếp theo sẽ được thực hiện trực tiếp.</p></td></tr></tbody></table>

{% file src="/files/c5bHfz7VMzYb16548z4f" %}


# File choose event

File choose event is performed when a page has a file choose event triggered. And that file selection event does not have an **Input** tag with **type="file"**, you can use node file choose event.&#x20;

Note that this **File choose event** should be placed before the **click** .

File choose event được thực hiện khi page có sự kiện chọn file được kích hoạt. Và sự kiện chọn file đó không có thẻ **Input** với **type="file"** thì bạn có thể sử dụng node file choose event.&#x20;

Lưu ý node File choose event này nên để đằng trước node click.

<figure><img src="/files/9vewcH58WMxCe5txCF9q" alt=""><figcaption></figcaption></figure>

| parameter            | illustrate                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Choose selector type | <p>Local file: select a local file to upload to a folder. </p><p>Folder file random: choose a folder and randomly upload a file in the folder. </p><p>Network file: to upload a network file, enter a URL starting with http/https.</p><p></p><p>Local file: chọn một tệp cục bộ để tải lên một thư mục.<br>Folder file random: chọn một thư mục và tải lên ngẫu nhiên một tệp trong thư mục.<br>Network file: để tải lên tệp mạng, hãy nhập URL bắt đầu bằng http/https.</p> |
| Timeout waiting      | <p>Maximum waiting time. For example: 30000. If this step is not performed successfully within 30 seconds, the next step will be performed directly.</p><p></p><p>Thời gian chờ đợi tối đa. Ví dụ: 30000. Nếu bước này không được thực hiện thành công trong vòng 30 giây thì bước tiếp theo sẽ được thực hiện trực tiếp.</p>                                                                                                                                                 |

{% file src="/files/q1Jnd4vgrLEEQs5pYFCX" %}


# Read file

This is an important node. To input your data, upload a text file. You can choose to arrange the data line by line or separated by a special character. If you select the latter option, you can also specify whether the script should randomly select certain lines or read each line in order and delete them as they are processed. Alternatively, you can leave these options blank  for sequential processing of each line without deletion, select the appropriate option above. When setting variables to map values, write the first value of the data, followed by the second value, and so on. For example, if you have <Abc123@gmail.com>|abc123|<Xyz456@gmail.com>, the format should be email|pass|recovery mail. Write each line separately, Like this : \
\
Đây là một nút quan trọng. Để nhập dữ liệu của bạn, hãy tải lên một tệp văn bản. Có thể lựa chọn sắp xếp dòng dữ liệu theo dòng hoặc cách nhau bằng ký tự đặc biệt. Nếu bạn chọn tùy chọn thứ hai, bạn cũng có thể chỉ định xem script nên chọn ngẫu nhiên một số dòng nhất định hay đọc từng dòng theo thứ tự và xóa chúng khi chúng được xử lý. Ngoài ra, bạn có thể để trống các tùy chọn này để xử lý tuần tự từng dòng mà không xóa chúng, hãy chọn tùy chọn thích hợp ở trên. Khi đặt biến thành map values, hãy ghi giá trị đầu tiên của dữ liệu, theo sau là giá trị thứ hai, v.v. Ví dụ: nếu bạn có <Abc123@gmail.com>|abc123|<Xyz456@gmail.com> thì định dạng phải là email|pass|recovery mail. Viết riêng từng dòng, như thế này:

<figure><img src="/files/d6Sc9ZCUnibGfvG2WGii" alt=""><figcaption></figcaption></figure>

<table><thead><tr><th width="323">parameter</th><th>illustrate</th></tr></thead><tbody><tr><td>Path to the file</td><td><p>Path to the txt file you want to read.</p><p></p><p>Đường dẫn tới file txt mà bạn muốn đọc.</p></td></tr><tr><td>Type: Line by line</td><td><p>Read data line by line from top to bottom. After reading any line, delete that line from the file</p><p></p><p>Đọc dữ liệu theo từng dòng từ trên xuống, sau khi đọc hết dòng nào thì sẽ xóa dòng đó khỏi file</p></td></tr><tr><td>Type:  Line by line (with delimiter)</td><td><p>When you want to read data in lines, and your data has a separator to distinguish data on a line.</p><p></p><p>Khi muốn đọc dữ liệu theo dòng,và dữ liệu của bạn được cách nhau bởi một dấu phân cách thì bạn có thế chọn cái này.</p></td></tr><tr><td>Type: Read all</td><td><p>Read all data in the file and save it to the variable.</p><p></p><p>Đọc toàn bộ dữ liệu trong file và lưu vào biến.</p></td></tr><tr><td>Random</td><td><p>If random is selected, the data lines will be read randomly, and after reading the file data will not be deleted.</p><p></p><p>Nếu chọn random, các dòng dữ liệu sẽ được đọc một cách ngẫu nhiêu, và sau khi đọc xong dữ liệu của file sẽ không bị xóa</p></td></tr><tr><td>Delete line after read</td><td><p>Delete data after reading</p><p></p><p>Xóa dữ liệu sau khi đọc xong</p></td></tr><tr><td>Variables map value (Ordering by index)</td><td><p>If your data is separated by a delimiter, enter the delimiter here and fill in the variable corresponding to each element of the data stream.</p><p></p><p>Nếu dữ liệu của bạn được phân cách bằng một dấu phân cách, bạn hãy nhập dấu phân cách tại đây và điền biến tương ứng với từng thành phần của dòng dữ liệu.</p></td></tr><tr><td>Output variable</td><td><p>Save the extracted elements as variables and enter the variable name</p><p></p><p>Lưu các phần tử được trích xuất dưới dạng biến và nhập tên biến</p></td></tr></tbody></table>

{% file src="/files/rA3apOcVwLSKrC48knod" %}

{% file src="/files/jlGOKnNGPsrr4ghMpTwB" %}


# Write file

The button allows you to edit your file by overwriting, Append to the side with special characters, or write on new lines. To add a file, enter its full path or upload it from your device in the designated "file path" section. Then, choose the data you want to include in the file based on the variable you set up in the orange Variables node and select the file format. Once you've made your selections, additional options will appear for specifying the location of the data you entered.&#x20;

As an example, let's say I have a file containing multiple Google accounts that need to be logged in. To mark these accounts, I can use the "write file" function. In the orange "Variable" node, I will set the "Login" variable with a value of "Complete" and the "Logout" variable with a value of "Decline". Next, I will use the Node "Element Exits" function to check if the account has been logged in. If an account has been successfully logged in, I will use the "write file" function to mark it as "Complete" (by selecting the login variable) and then indicate the account. If an account has not been logged in, I will use the "write file" function to mark it as "Decline" (by selecting the logout variable). Or you can mark which profile matches which data line in your file when using this feature and select the variable "PROFILE\_NAME"<br>

Nút này cho phép bạn chỉnh sửa tập tin của mình bằng cách ghi data xử lý trong script ra ngoài file, Thêm ký tự đặc biệt nếu bạn muốn data đó vào bên cạnh data cũ hoặc viết thêm dòng mới . Để thêm tệp, hãy nhập đường dẫn đầy đủ của tệp hoặc tải tệp lên từ thiết bị của bạn trong phần "file path" được chỉ định. Sau đó, chọn dữ liệu bạn muốn đưa vào tệp dựa trên biến bạn thiết lập trong nút Biến màu cam và chọn định dạng tệp. Khi bạn đã thực hiện các lựa chọn của mình, các tùy chọn bổ sung sẽ xuất hiện để chỉ định vị trí của dữ liệu bạn đã nhập.&#x20;

Ví dụ: giả sử tôi có một tệp chứa nhiều tài khoản Google cần phải đăng nhập. Để đánh dấu các tài khoản này, tôi có thể sử dụng chức năng "Write file". Trong nút "Variable" màu cam, tôi sẽ đặt biến "Đăng nhập" có giá trị "Hoàn thành" và biến "Đăng xuất" có giá trị "Từ chối". Tiếp theo, tôi sẽ sử dụng chức năng "Element Exits" của Node để kiểm tra xem tài khoản đã được đăng nhập chưa. Nếu tài khoản đã đăng nhập thành công, tôi sẽ sử dụng chức năng "Write file" để đánh dấu là "Hoàn thành" (bằng cách chọn biến đăng nhập) và sau đó chỉ ra tài khoản. Nếu tài khoản chưa đăng nhập, tôi sẽ sử dụng chức năng "Write file" để đánh dấu là "Từ chối" (bằng cách chọn biến đăng xuất). Hoặc bạn có thể đánh dấu profile nào khớp với dòng dữ liệu nào trong file của mình khi sử dụng tính năng này và chọn biến "PROFILE\_NAME"

<figure><img src="/files/QKUUDCGrB4qasHQ5XAYx" alt=""><figcaption></figcaption></figure>

<table><thead><tr><th width="302">parameter</th><th>illustrate</th></tr></thead><tbody><tr><td>File path</td><td><p>The file path to which you want to write data</p><p></p><p>Đường dẫn tệp mà bạn muốn ghi dữ liệu vào</p></td></tr><tr><td>Select input data from variable</td><td><p>Select a variable containing data to write that data to the file</p><p></p><p>Chọn một biến chứa dữ liệu để ghi dữ liệu đó vào file</p></td></tr><tr><td>Selector type</td><td><p>Choose the file format you want to write to: TXT, CSV, JSON.</p><p>Chọn định dạng tệp mà bạn muốn ghi vào: TXT, CSV, JSON.</p></td></tr><tr><td>Select write mode: Overwrite</td><td><p>Overwrite previous data</p><p></p><p>Ghi đè lên dữ liệu trước đó</p></td></tr><tr><td>Select write mode: Append</td><td><p>Add to file, write on new line or on the same line</p><p></p><p>Ghi thêm vào tệp, ghi xuống dòng mới hoặc cùng dòng</p></td></tr></tbody></table>

{% file src="/files/jCPBPurB8tvaD7Tuf08a" %}


# HTTP

&#x20;This node can be challenging, especially for those with limited knowledge of HTTP. However, having a good understanding of HTTP will make it easier to use. In essence, this HTTP sends requests to the API using either the GET or POST method and displays the response in the tabs below.\
\
Node này có thể là một node khó, đặc biệt đối với những người có kiến ​​thức hạn chế về HTTP. Tuy nhiên, hiểu rõ về HTTP sẽ giúp sử dụng dễ dàng hơn. Về bản chất, HTTP này gửi yêu cầu tới API bằng phương thức GET hoặc POST và hiển thị phản hồi trong các tab bên dưới.

<figure><img src="/files/CvLyt69wuIWHMJnzo325" alt=""><figcaption></figcaption></figure>

* Enter URL: Request URL address

* [<mark style="color:blue;">**Request method**</mark>](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods): GET, POST, PUT, DELETE.&#x20;

* Headers:[ **Header**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers) of the request

* Cookies:  [**HTTP cookies**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)

* Select content Type: Select your content type.&#x20;

* Response body mapping: Response of the request&#x20;

* Nhập URL: Địa chỉ URL yêu cầu

* [**Phương thức yêu cầu**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods): GET, POST, PUT, DELETE.&#x20;

* Headers:[ **Header**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers) được yêu cầu

* Cookies:  [**HTTP cookies**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)

* Select content Type: Chọn loại nội dung của bạn.

* Response body mapping: Phản hồi của yêu cầu

1. Example 1: The <mark style="color:blue;">**API**</mark> has the following response:

&#x20;       Ví dụ 1:  [**API**](https://docs.hidemium.io/use-cases/api-automation/get-profile/4.-list-tag) có response như sau:

```json
[
    {
        "value": 132,
        "label": "tag 1"
    },
    {
        "value": 136,
        "label": "tag 2"
    },
    {
        "value": 137,
        "label": "tag 3"
    },
    {
        "value": 138,
        "label": "tag 4"
    }
]
```

To get the <mark style="color:blue;">`Value`</mark> of "label": "tag 3" we write as follows: <mark style="color:blue;">`2.value`</mark>

Để lấy được <mark style="color:blue;">`Value`</mark> của "label": "tag 3" ta viết như sau: <mark style="color:blue;">`2.value`</mark>

<figure><img src="/files/69P8jTX1PhFd7d9piHRC" alt=""><figcaption></figcaption></figure>

2. Example 2: We have the following response:

&#x20;       Ví dụ 2: Ta có đoạn response sau:

```json
{
    "status": "success",
    "data": [
        {
            "id": 7,
            "email": "michael.lawson@gmail.com.",
            "first_name": "Michael",
            "last_name": "Lawson"
        },
        {
            "id": 8,
            "email": "lindsay.ferguson@gmail.com",
            "first_name": "Lindsay",
            "last_name": "Ferguson"
        },
        {
            "id": 9,
            "email": "tobias.funke@gmail.com",
            "first_name": "Tobias",
            "last_name": "Funke"
        }
    ]
    }
}
```

To get the <mark style="color:blue;">`email`</mark> of <mark style="color:blue;">`"first_name": "Michael"`</mark>, we write <mark style="color:blue;">`data.0.email`</mark>

Để lấy được <mark style="color:blue;">`email`</mark> của <mark style="color:blue;">"first\_name": "Michael"</mark> , ta viết <mark style="color:blue;">`data.0.email`</mark>

Additionally, if you want to get the entire api response, you can write as follows:

Ngoài ra nếu bạn muốn lấy toàn bộ response của api thì bạn có thể ghi như sau:

<figure><img src="/files/dztEap6HUicYjuBVfqfa" alt=""><figcaption></figcaption></figure>

In **Response body mapping**, enter response and select the variable to store the data, so you can get the entire response of that API.

Tại **Response body mapping** bạn nhập là response và chọn biến để lưu dữ diệu, như vậy là bạn đã có thể lấy toàn bộ response của API đó.

Lưu ý: Trong phần body, các bạn không được nhập comment ở đó, nếu có comment thì khi chạy sẽ bị lỗi.

{% file src="/files/pTEDZ2n1Mky3cWJhf8pN" %}


# Set variable

This node allows you to change the value of a variable by adding, subtracting, multiplying, dividing, and concatenate .\
\
Nút này cho phép bạn thay đổi giá trị của một biến bằng cách cộng, trừ, nhân, chia, và nối tiếp.

<figure><img src="/files/7qZgTAYbDWW5V9tq6GvP" alt=""><figcaption></figcaption></figure>

| parameter         | illustrate                                                          |
| ----------------- | ------------------------------------------------------------------- |
| Variable name     | <p>Choose a variable</p><p>Chọn một biến</p>                        |
| Operator          | <p>Select operator</p><p>Chọn toán tử</p>                           |
| Variable or value | <p>Enter the variable or value</p><p>Nhập vào biến hoặc giá trị</p> |

{% file src="/files/LxlcvIcDeonN95oBH0ne" %}


# Authenticator Code

You just need to put the 2FA live authenticator key here and then this node will automatically get the code for you.\
\
Bạn chỉ cần đặt khóa xác thực trực tiếp 2FA vào đây và sau đó nút này sẽ tự động lấy mã cho bạn.<br>

<figure><img src="/files/GYu2Do8wpF5jPQiwn4W4" alt=""><figcaption></figcaption></figure>

<table><thead><tr><th width="222">parameter</th><th>illustrate</th></tr></thead><tbody><tr><td>Secret</td><td><p>Enter the 2-factor authentication code or select the variable containing the authentication code</p><p>Nhập mã xác thực 2 yếu tố hoặc chọn biến chứa mã xác thực</p></td></tr><tr><td>Save to</td><td><p>Save the confirmation code in a variable for use by the next nodes.</p><p></p><p>Lưu mã xác nhận vào biến để sử dụng cho các node tiếp theo.</p></td></tr></tbody></table>


# Converting JSON

Converting JSON will help you convert a JSON string into an object.

Converting JSON sẽ giúp bạn chuyển đổi một chuỗi JSON thành object.

<figure><img src="/files/UvdO12FfA1TtR5lslxzw" alt=""><figcaption></figcaption></figure>

| parameter         | illustrate                                                                                                       |
| ----------------- | ---------------------------------------------------------------------------------------------------------------- |
| Convert variables | <p>Select the variable containing the value as a json string.</p><p>Chọn biến chứa giá trị là một chuỗi json</p> |
| Save to           | <p>Save the resulting value in another variable.</p><p>Lưu giá trị thu được vào một biến khác.</p>               |


# Download file

You enter a URL address and choose a location to save the file on your device, then the system will automatically download the file from that URL for you.\
\
Bạn nhập địa chỉ URL và chọn vị trí lưu file trên thiết bị, sau đó hệ thống sẽ tự động tải file từ URL đó cho bạn.

<figure><img src="/files/MCeMYht4rChQF7CQqE4l" alt=""><figcaption></figcaption></figure>

| parameter        | illustrate                                                                           |
| ---------------- | ------------------------------------------------------------------------------------ |
| URL              | <p>Enter the URL of the file to download.</p><p>Nhập URL của file cần tải xuống.</p> |
| Path to the file | <p>Select a folder to save the file.</p><p>Chọn thư mục để lưu file</p>              |

{% file src="/files/G2FhgGI6Fl0l9yLYXh8o" %}


# Extraction In Text

To extract specific values from a block of text, utilize regex ( Regular Expression) with rule A(.\*)\B. Example: you want to take a verify code in a message like "The authentication code is 128293. Please....." so you have a formula is "is(.\*). Please" and the value returned to you is 128293. \
\
Để trích xuất các giá trị cụ thể từ một khối văn bản, hãy sử dụng biểu thức chính quy (Regular Expression) với quy tắc A(.\**)\B. Ví dụ: bạn muốn lấy mã xác minh trong thông báo như "Mã xác thực là 128293. Vui lòng...." vậy là bạn có công thức là "là(.\*). Vui lòng*" và giá trị trả về cho bạn là 128293.

<figure><img src="/files/mx46pT1EsjVBPsOmEZkv" alt=""><figcaption></figcaption></figure>

<table><thead><tr><th width="260">parameter</th><th>illustrate</th></tr></thead><tbody><tr><td>Data</td><td><p>Select the variable containing a piece of text to extract.</p><p>Chọn biến chứa một đoạn text cần trích xuất.</p></td></tr><tr><td>Extract rules</td><td><p>Enter Regex expression to get data.</p><p>Nhập biểu thức Regex để lấy dữ liệu.</p></td></tr><tr><td>Index result</td><td><p>Enter the index of the result, if you do not enter the node will automatically get index 0.</p><p>Nhập index của kết quả lấy được, nếu không nhập node sẽ tự lấy động lấy index 0.</p></td></tr><tr><td>Save to</td><td><p>Save the extracted value into a variable and this value will be based on the index you choose.</p><p>Lưu giá trị vừa trích xuất được vào biến và giá trị này sẽ dựa vào index mà bạn chọn.</p></td></tr><tr><td>Test</td><td><p>When you click, you can see the results you have extracted with the index.</p><p>Khi click vào bạn có thể thấy kết quả mà bạn đã trích xuất được kèm theo index.</p></td></tr></tbody></table>

For example, we have a piece of data like this: "*We have the following websites <https://www.facebook.com/> and other websites like <https://www.youtube.com/> and <https://www.etsy>. com/*". When you want to get the URL contained in this piece of data, at the Extraction in text node, enter the following:

Ví dụ ta có một đoạn dữ liệu như sau: "*We have the following websites <https://www.facebook.com/> and other websites like <https://www.youtube.com/> and <https://www.etsy.com/>*". Khi muốn lấy URL có trong đoạn dữ liệu này, tại node Extraction in text ta nhập như sau:&#x20;

<figure><img src="/files/beaCrKHle2Ic6sUlPD4q" alt=""><figcaption></figcaption></figure>

In the **Index result** field, enter the number 1, we will get **<https://www.facebook.com/>** and store it in the **result** variable.

Tại trường **Index result** nhập số 1 ta sẽ lấy được <mark style="color:blue;"><https://www.facebook.com/></mark> và lưu vào biến **result**.

{% file src="/files/IWJEePEYVCvKqWr3cOKj" %}


# Set cookies

Use the cookie of any browser on another profile and log in to a new profile without entering a user password. Similar to using edit this cookie.\
\
Sử dụng cookie của bất kỳ trình duyệt nào trên hồ sơ khác và đăng nhập vào hồ sơ mới mà không cần nhập mật khẩu người dùng. Tương tự như sử dụng chỉnh sửa cookie này.

<figure><img src="/files/PSqajC4c7oDtdxLVdOn1" alt=""><figcaption></figcaption></figure>

| parameter   | illustrate                                                                                                      |
| ----------- | --------------------------------------------------------------------------------------------------------------- |
| Set Cookies | <p>Enter cookies or select the variable containing cookies.</p><p>Nhập cookies hoặc chọn biến chứa cookies.</p> |

{% file src="/files/hlL7cmjO47xtbDNv7Bla" %}


# Get cookies

When you use the Get cookies node, you can get information, user usage activity and write it to a variable.

Khi bạn sử dụng node Get cookies, bạn có thể lấy thông tin, hoạt động sử dụng của người dùng và ghi vào một biến.

<figure><img src="/files/r7uM6DiRMk48JkwVFPna" alt=""><figcaption></figcaption></figure>

| parameter       | illustrate                                                                                                                                                                                                                                                                                                                                                                                   |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Domain          | <p>Nhập tên miền của trang web mà bạn muốn lấy cookie, để trống nếu bạn muốn lấy tất cả cookies của trình duyệt. Ví dụ bạn muốn lấy cookie của facebook thì bạn có thể nhập: facebook.com.</p><p>Nhập tên miền của trang web mà bạn muốn lấy cookie, để trống nếu bạn muốn lấy tất cả cookies của trình duyệt. Ví dụ bạn muốn lấy cookie của facebook thì bạn có thể nhập: facebook.com.</p> |
| Output Variable | <p>Save extracted cookies as variables.</p><p>Lưu các cookies được trích xuất dưới dạng biến.</p>                                                                                                                                                                                                                                                                                            |

{% file src="/files/Bxe8nYKbmvr6nCaWpdJj" %}


# Clear cookies

This node allows you to delete website cookies in your browser. Paste the link in the domain box or leave it blank to delete all cookies.\
\
Nút này cho phép bạn xóa cookie trang web trong trình duyệt của bạn. Dán liên kết vào hộp tên miền hoặc để trống để xóa tất cả cookie.

<figure><img src="/files/X6YK1YPT5LjIMIaHWfui" alt=""><figcaption></figcaption></figure>

| parameter | illustrate                                                                                                                                                                                            |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Domain    | <p>Enter the domain name of the website, leave blank if you want to clear all browser cookies.</p><p></p><p>Nhập tên miền của trang web, để trống nếu bạn muốn xóa tất cả cookie của trình duyệt.</p> |


# Image Search

This node allows you to select an image to search in any web page and save the coordinates of that image in a variable.

Node này cho phép bạn chọn hình ảnh để tìm kiếm trong một trang web bất kì và lưu lại tọa độ của hình ảnh đó vào biến.

<figure><img src="/files/rFR1bB2rMXOsSRvSxagi" alt=""><figcaption></figcaption></figure>

| parameter                     | illustrate                                                                                                                                                                                                                                                                                                                                                                                   |
| ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Choose imgage                 | <p>Select the image you need to search for, maybe a photo of a button,....</p><p>Chọn hình ảnh mà bạn cần tìm kiếm, có thể là ảnh của một button,....</p>                                                                                                                                                                                                                                    |
| Take a full screen            | <p>When you turn this switch on, the node will search for images on the entire web page, when you turn this switch off the node will only search on the part where the web page is displayed on the screen.</p><p>Khi bạn bật switch này, node sẽ tìm kiếm hình ảnh trên toàn bộ trang web, khi bạn tắt switch này node chỉ tìm kiếm trên phần mà trang web được hiển thị trên màn hình.</p> |
| X Coordinates Output Variable | <p>Save the X coordinates that the node finds of the image into a variable</p><p>Lưu tọa độ X mà node tìm được của hình ảnh vào biến</p>                                                                                                                                                                                                                                                     |
| Y Coordinates Output Variable | <p>Save the Y coordinates that the node finds of the image into a variable</p><p>Lưu tọa độ Y mà node tìm được của hình ảnh  vào biến</p>                                                                                                                                                                                                                                                    |
| Timeout waiting               | <p>Maximum waiting time. For example: 30000. If this step is not performed successfully within 30 seconds, the next step will be performed directly.</p><p>Thời gian chờ đợi tối đa. Ví dụ: 30000. Nếu bước này không được thực hiện thành công trong vòng 30 giây thì bước tiếp theo sẽ được thực hiện trực tiếp.</p>                                                                       |


# Set Data

This node helps you store data on the server. In the next runs, you only need to use the get data node to use the data previously saved on the server.

Node này giúp bạn lưu trữ dữ liệu lên server, trong những lần chạy tiếp theo bạn chỉ cần sử dụng node get data để sử dụng những dữ liệu đã được lưu trên server trước đó.

<figure><img src="/files/26tJXVaFTwhKeXsZKqnc" alt=""><figcaption></figcaption></figure>

Data stored on the server will be in the form:{"key1":"value1","key2":"value2",....}.

Dữ liệu được lưu trên server sẽ có dạng {"key1":"value1","key2":"value2",....}.

For example, when you want to save your email and password to the server, you can enter the following:

Ví dụ khi bạn muốn lưu email và password lên server thì bạn có thể nhập như sau:

<figure><img src="/files/R15lqbNOGDCv0MPpIZjh" alt=""><figcaption></figcaption></figure>

Then the data saved on the server will be: {"email":"<email1@gmail.com>","pass":"pass123123"}

Khi đó dữ liệu được lưu trên server sẽ là: {"email":"<email1@gmail.com>","pass":"pass123123"}

Note: When using node set data, only save data to the server in the profile and run the script containing this node.

Lưu ý: Khi dùng node set data chỉ lưu data lên server vào profile mà chạy script chứa node này.&#x20;


# Get Data

This node will help you get the data you have saved on the server to use for other nodes

Node này sẽ giúp bạn lấy được những data mà bạn đã lưu trên server để sử dụng cho các node khác

<figure><img src="/files/wc6blSBRxFjlQhbLqWiG" alt=""><figcaption></figcaption></figure>

With this get data node, you must enter the correct key that you used the set data node to save on the server. And then you will have to save the value of the corresponding key into a variable to use for the next nodes.

Với node get data này bạn phải nhập đúng key mà bạn đã dùng node set data để lưu trên server. Và khi đó đó bạn sẽ phải lưu value của key tương ứng vào một biến để sử dụng cho các node tiếp theo.&#x20;

<figure><img src="/files/favE1M0WexZHG5HaaO6m" alt=""><figcaption></figcaption></figure>

Note: When using the get data node, you can only get data for that profile. If you do not use the get data node, you will not be able to use the data you store on the server. Therefore, if you want to use this data, you need to use Get data to save the data into variables so that it can be used for the nodes behind this script.

Lưu ý: Khi dùng node get data thì chỉ lấy được data của profile đó. Nếu bạn không sử dụng node get data thì bạn sẽ không thể sử dụng các data mà bạn lưu trên server được. Do đó muốn sử dụng được các data này bạn cần dùng Get data để lưu các data vào biến để có thể sử dụng cho các node phía sau của script này.


# Spreadsheet

Node Spreadsheet helps you read data from excel files or google sheets.

Node Spreadsheet giúp bạn đọc dữ liệu từ file excel hoặc google sheet.

### Giải thích các trường của node

<figure><img src="/files/71IW9RV8srVtNDDKrInk" alt=""><figcaption></figcaption></figure>

**Local file:**&#x20;

* Path to the file: Chọn file excel có sẵn trong máy của bạn.
* Range: Một nhóm các ô trong file excel. Ví dụ bạn muốn đọc dữ liệu từ ô A1 đếm ô E5, ta sẽ nhập trường Range là A1:E5. Trường range này chỉ có thể nhập chữ hoa.
* Sheet name: Tên của excel sheet. Nếu bỏ trống ô này, sẽ mặc định lấy sheet name đầu tiên.
* First row as keys: Khi tick vào checkbox này, ta sẽ coi hàng đầu tiên của excel là tên của các cột dữ liệu, khi không chọn checkbox thì các hàng đều ngang hàng nhau.
* Save to: Lưu giá trị lấy được vào biến
* Preview: Xem trước dữ liệu mà node đọc được từ file.
* Map key:&#x20;

&#x20;             **TH1: Khi chọn checkbox First row as keys, ta có bảng dữ liệu như sau:**&#x20;

<figure><img src="/files/jJOLNsOQZd6ahYSKswBX" alt=""><figcaption></figcaption></figure>

&#x20;        Khi chọn preview sẽ hiển thị như sau:

<figure><img src="/files/tDkKNdVvcmW06CKp6Bxv" alt=""><figcaption></figcaption></figure>

Trường hợp này ta sẽ nhập map key:

&#x20;          \[0]\[“Email”]  : Thì kết quả sẽ lấy được giá trị email là <abc@gmail.com>

&#x20;          \[1]\[“Email”]  : Thì kết quả sẽ lấy được giá trị email là <so1@gmail.com>

Tương tự nếu muốn lấy password ra thì ta nhập map key :

&#x20;          \[0]\[“Password”]  : sẽ lấy được giá trị là a123123

&#x20;          \[1]\["Password"]  : sẽ lấy được giá trị là abcd123

&#x20;**TH2: Khi không chọn checkbox First row as keys, ta có bảng dữ liệu như sau:**&#x20;

<figure><img src="/files/BqP5qj4ScygW3nxhsVJH" alt=""><figcaption></figcaption></figure>

Khi click vào preview sẽ hiển thị như sau:

<figure><img src="/files/KaW7qqrhLCNrc5lAfMuH" alt=""><figcaption></figcaption></figure>

&#x20;    Khi đó map Key ta sẽ nhập:

&#x20;                \[0]\[0]  : Sẽ lấy được giá trị là <abc@gmail.com>

&#x20;                \[0]\[1] : Sẽ lấy được giá tri là a123123

&#x20;                \[1]\[0]  : sẽ lấy được giá trị là <so1@gmail.com>

&#x20;                \[1]\[1]  : Sẽ lấy được giá trị là abcd123

### Hướng dẫn đọc từng hàng khớp với từng profile

<figure><img src="/files/oeyzFkvEWafT8CuNGSa0" alt=""><figcaption></figcaption></figure>

Ta có Script như sau:

<figure><img src="/files/96EqnUKzR31A6uEjn7vE" alt=""><figcaption></figcaption></figure>

Với trường hợp này ta sẽ tạo một biến ${index} có giá trị là 1.&#x20;

Các node ta nhập như sau:&#x20;

<figure><img src="/files/h1xRX0PnObJgIpq8ZLju" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/FlW23i4oUtGLlSNM3Bwu" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/RW2YMjBU8RqTkF6c991m" alt=""><figcaption></figcaption></figure>

Với bảng dữ liệu như trên thì tại node for ta sẽ cho chạy 10 vòng lặp. Mỗi vòng lặp ta sẽ chạy qua từng hàng của file excel nhờ node Set variable, node làm giá trị của biến index tăng lên 1 sau mỗi vòng lặp. Khi biến này được tăng lên thì trường Range của node Spreadsheet qua mỗi vòng lặp sẽ lần lượt là A1:B1, A2:B2, A3:B3,....... Khi lặp như vậy ta sẽ sử dụng node if làm điều kiệm để so sánh Profile\_id của profile đang chạy với uuid của file excel. Nếu Profile\_id trùng với uuid của file excel thì dừng vòng lặp và ghi dữ liệu của hàng đó vào biến để sử dụng cho các node tiếp theo.

Dưới đây là một script ví dụ của node đọc file, với ví dụ này sẽ đọc lần lượt theo từng hàng và tương ứng với từng profile mà bạn chạy. Bạn phải thay dữ liệu trong cột uuid bằng uuid của các profile mà bạn muốn chạy.

{% file src="/files/qGmI4UNcu1cwA5wsZFJL" %}

{% file src="/files/yBXTvTJnYfRWtDZelhN0" %}


# Spreadsheet V2

Node Spreadsheet là Version 2 của node Spreadsheet. Với V2 này, các bạn có thể đọc file excel và file google sheet một cách dễ dàng hơn so với node Spreadsheet.

<figure><img src="/files/r4TfYuW5kenOahO3HYrA" alt=""><figcaption></figcaption></figure>

### Local File

* Path to file: Chọn file mà bạn muốn đọc.
* Range: Một nhóm các ô trong file excel. Ví dụ bạn muốn đọc dữ liệu từ ô A1 đếm ô E5, ta sẽ nhập trường Range là A1:E5. Bạn cũng có thể bỏ trống trường này. Range bắt buộc phải nhập là chữ hoa.
* Sheet name: Tên của excel sheet. Nếu bỏ trống ô này, sẽ mặc định lấy sheet name đầu tiên.
* First row as title (Column name): Khi tick vào checkbox này, ta sẽ coi hàng đầu tiên của excel là tên (tiêu đề) của các cột dữ liệu, khi không chọn checkbox thì các hàng đều ngang hàng nhau.
* Read row with stop condition: Khi bạn không chọn checkbox này thì node sẽ mặc định lấy dữ liệu của hàng đầu tiên. Khi bạn chọn checkbox này, bạn phải nhập 2 trường *Column to compare và Value to compare***.** Column to compare: Trường này bạn sẽ nhập cột để so sánh. Value to compare: Trường này bạn sẽ nhập giá trị để so sánh. Khi không chọn checkbox này, chạy với nhiều profile thì tất cả các profile đều lấy dữ liệu cảu hàng đầu tiên.&#x20;
* Row match conditions: Chọn một biến. Trường này sẽ trả về số của hàng khớp với hàng mà node đang đọc đến và lưu vào biến bạn chọn. Bạn có thể sử dụng biến này vào node WriteSheet để ghi dữ liệu vào hàng tương ứng với hàng dữ liệu đang được đọc.  Ví dụ ta có bảng dữ liệu sau:

<figure><img src="/files/Y700x5hIDrUfZRvzyzrc" alt=""><figcaption></figcaption></figure>

&#x20;        Với bảng dữ liệu này: Ví dụ dữ liệu đang được đọc ở hàng số 4, thì node sẽ lưu giá trị 4 vào biến mà bạn chọn.

* Last row of datas: Hiển thị hàng cuối cùng chứa dữ liệu trong file. Tại file excel của bạn, bạn cũng có thể kiểm tra xem dòng cuối cùng có chứa dữ liệu bằng cách nhấn <mark style="color:blue;">**Ctrl + End**</mark> .Ví dụ ta có bảng dữ liệu sau:

<figure><img src="/files/IsRycH9voV5nZmCRKYVt" alt=""><figcaption></figcaption></figure>

&#x20;             Với bảng dữ liệu này thì ta sẽ lấy được số của hàng chứa dữ liệu cuối cùng trong file của bạn. Ở đây ta có 10 hàng, node sẽ lưu giá trị 10 sẽ được lưu vào biến mà bạn chọn. Trường này không phụ thuộc vào range mà bạn nhập, có nghĩa là khi bạn nhập range là A1:B3 thì trường này vẫn sẽ lấy số hàng cuối cùng chứa dữ liệu trong bảng đó là 10.

* Storage: Bao gồm 2 trường là *Column name và Save to.* Với trường Column ta sẽ phải nhập đúng tên của cột dữ liệu. Còn trường Save to ta sẽ lưu giá trị đọc được từ Column name vào một biến.
* Preview: Hiển thị dữ liệu mà node đã đọc được.

### Google sheet&#x20;

<figure><img src="/files/EDSXw7jVQXBxLOwglgYl" alt=""><figcaption></figcaption></figure>

###

* Google Spreadsheet ID: Nhập ID của Google sheet, bạn có thể lấy ID tại đây:&#x20;

<figure><img src="/files/YbbbBqgLANi6sqg2mH23" alt=""><figcaption></figcaption></figure>

###

* Credential file: chọn file Json đã tải về

Hướng dẫn lấy file credential:

1\.      Truy cập link <https://console.cloud.google.com/>  và đăng nhập

2\.      Sau khi đăng nhập thành công, ta tạo 1 project mới:

\-        Chọn Select a project

<figure><img src="/files/9y95OzMSdkmv4a3s8xMB" alt=""><figcaption></figcaption></figure>

&#x20;

\-        Chọn new project

<figure><img src="/files/xjaSGp0HwmU9Xz1quYSE" alt=""><figcaption></figcaption></figure>

\-        Nhập tên project và chọn Create

<figure><img src="/files/OM2qz2Fx2aqnzaUiGqk3" alt=""><figcaption></figcaption></figure>

3\.      Enable Google sheet API

\-        Tại thanh tìm kiếm nhập Google sheets API. Kết quả tìm kiếm hiện ra, sau đó tại Marketplace chọn Google sheet API

<figure><img src="/files/kzO7FFgJH8V5bk78U5Pt" alt=""><figcaption></figcaption></figure>

\-        Thực hiện enable Google sheets API

<figure><img src="/files/Ieg3e1FxcpVqD2hpSoL9" alt=""><figcaption></figcaption></figure>

&#x20;

4\.      Tạo Credentials

\-        Sau khi enable Google sheets API thành công, tiếp tục chọn Credentials

<figure><img src="/files/8DTwj8WlPZhjwiWSni3Y" alt=""><figcaption></figcaption></figure>

&#x20;

\-        Chọn Create Credentials, sau đó chọn Service account

<figure><img src="/files/7GcvaL3EjThYEXd9SjNT" alt=""><figcaption></figcaption></figure>

\-        Nhập Service account name sau đó chọn Done

<figure><img src="/files/7P0NTvWS7NNF5P5Rzzjs" alt=""><figcaption></figcaption></figure>

\-        Account vừa tạo sẽ hiển thị ở đây:

<figure><img src="/files/GmdDBjZxB8mzsP7TTgQY" alt=""><figcaption></figcaption></figure>

\-        Click vào account đó và chọn tab Keys:

<figure><img src="/files/FQWuVi0SFXaSnxygxUsa" alt=""><figcaption></figcaption></figure>

&#x20;

\-        Chọn Add key -> chọn Create new key:

<figure><img src="/files/Wy013L1QlEotYIrJwLlb" alt=""><figcaption></figcaption></figure>

&#x20;

\-        Chọn JSON -> Chọn create

<figure><img src="/files/JSFaMwaHq5gfMwzKSQWA" alt=""><figcaption></figcaption></figure>

&#x20;

Sau khi tạo xong sẽ tự động tải file JSON về, và các bạn thêm file đó vào trường Credencial trong node Spreadsheet V2

<figure><img src="/files/FMMbflK5x4NO9TiUtsAM" alt=""><figcaption></figcaption></figure>

5\.      Shared sheet với account tạo ở bước trên

\-        Copy email tạo ở bước trên:

<figure><img src="/files/MXDOa4mbPUvySNK6M36R" alt=""><figcaption></figcaption></figure>

&#x20;

\-        Shared trang sheet với account ở trên:

<figure><img src="/files/vNhNvI9fdRRraKbgBWto" alt=""><figcaption></figcaption></figure>

&#x20;

Như vậy ta đã thực hiện Setup Google sheet để phục vụ việc đọc file trên google sheet thành công. Các trường bên dưới vẫn tương tự như Local file.

### Hướng dẫn chi tiết&#x20;

**Trường hợp chọn checkbox First row as title (Column name):**

Ta có bảng dữ liệu như sau:

<figure><img src="/files/VnGVm8b13WKdysC74RTm" alt=""><figcaption></figcaption></figure>

Ở node Spreadsheet ta nhập như sau:

<figure><img src="/files/mRZACWqlYZ96Zd1mfSoS" alt=""><figcaption></figcaption></figure>

Ở trường hợp này khi chọn checkbox First row as title (Column name), thì ta sẽ lấy hàng đầu tiên của Range mà bạn nhập là tiêu đề của cột. Và các trường Column to compare, Column name ta phải nhập đúng tiêu đề của cột, ví dụ trong trường hợp này tên cột sẽ là email và password. Khi nhập vào các trường trong node như hình trên thì ta lấy được dữ liệu như hiển thị trong preview. Nếu khi ta không chọn checkbox Read row with stop condition thì mặc định sẽ lấy hàng đầu tiên của file ngoại trừ hàng tiêu đề.

**Trường hợp không chọn checkbox First row as title (Column name):**

<figure><img src="/files/yuZ8RdnOXXyYONtOuqmD" alt=""><figcaption></figcaption></figure>

Ở trường hợp này khi chọn checkbox First row as title (Column name), thì sẽ không lấy hàng đầu tiên làm tiêu đề của cột. Và các trường Column to compare, Column name ta phải nhập đúng tên cột của bảng, ví dụ trong trường hợp này tên cột sẽ là A, B, C,... .&#x20;

**Ví dụ về đọc lần lượt từng hàng của file excel khớp với từng profile đang chạy:**

<figure><img src="/files/XEgC4GTqrirYMwNFIYz8" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/XKcxCMVz9YijbMrnJqCs" alt=""><figcaption></figcaption></figure>

Để chạy từng profile khớp với từng hàng dữ liệu của file excel, ta phải nhập trường *Column to compare* và *Value to compare.* Với trường Column ta sẽ nhập tiêu đề của cột chứa uuid của từng profile với trường hợp này tiêu đề sẽ là uuid, trường Value to compare ta sẽ chọn biến ${PROFILE\_ID}. Nhập như trên thì khi chạy profile ta có thể so sánh được profile đang chạy có profile\_id trùng với hàng dữ liệu của cột uuid file excel và đọc đúng dữ liệu của hàng với profile tương ứng. &#x20;

Trường Column name ta chỉ cần nhập đúng title của cột mà ta muốn đọc từ file excel và lưu vào biến.

File excel dưới đây bạn có thể thay thế bằng uuid của các profile mà bạn sẽ chạy.

{% file src="/files/6GItX52ze2D9LRtNSpxS" %}

{% file src="/files/G5eud69J4YN8qiCXaIqS" %}

**Ví dụ về đọc random từng hàng của file excel cho từng profile:**&#x20;

Với trường hợp bạn muốn đọc các hàng của file excel vào từng profile mà không theo thứ tự nào. Khi đó bạn có thể sử dụng node Random ở trước node Spreadsheet V2 để random ra chỉ số của cột.&#x20;

<figure><img src="/files/VRS6tdBC14mjvg7ZjvGd" alt=""><figcaption></figcaption></figure>

Trong trường hợp này ta sẽ random từ 1 đến 10. Sau đó tại trường Range của node Spreadsheet ta sẽ nhập như sau  A${index}:B10, trong trường hợp random này thì ta không nên chọn checkbox Read row with stop condition.&#x20;

<figure><img src="/files/0eyAPUDrEMgGntEl325t" alt=""><figcaption></figcaption></figure>

Khi đó khi chạy với nhiều profile thì dữ liệu trong file excel sẽ được lấy một cách ngẫu nhiêu không theo một thứ tự nào cả.

Dưới đây là một script đọc random các hàng với mỗi profile mà không theo thứ tự:

{% file src="/files/Z7jReBVdSMJaW4xCr8V5" %}

{% file src="/files/Bh8wujPBKCgY6etKM2P7" %}

**Ví dụ về đọc toàn bộ dữ liệu của một cột và ghi vào 1 biến**

Ví dụ ta có bảng dữ liệu sau:

<figure><img src="/files/0fkA2U2yo2Aa6cGdsy8D" alt=""><figcaption></figcaption></figure>

Khi muốn đọc tất cả dữ liệu của cột A (email) vào 1 biến ta có script như sau:

<figure><img src="/files/sXt6j2lEVyGuQybZSWmQ" alt=""><figcaption></figcaption></figure>

Tại node Variables ta tạo 1 biến là biến index có giá trị là 2 (do bảng excel trên dữ liệu bắt đầu từ hàng thứ 2, còn nếu bạn nào dữ liệu bắt đầu từ hàng thứ nhất thì các bạn nhập là 1)

<figure><img src="/files/atrIEbiHe1wwhcAPX7T6" alt=""><figcaption></figcaption></figure>

Tại node Spreadsheet v2 các bạn nhập như sau:

<figure><img src="/files/9RohW724MP50HOQfzErY" alt=""><figcaption></figcaption></figure>

Tại node Set variable thứ nhất, các bạn cần nhập như sau:

<figure><img src="/files/pcg3JqLadojl2Wnnfr4R" alt=""><figcaption></figcaption></figure>

Qua mỗi vòng lặp thì giá trị của index sẽ tăng lên 1, cứ mỗi 1 vòng lặp thì sẽ đọc được giá trị của 1 dòng trong excel.

Tại node set variable thứ 2, các bạn cần nhập như sau:

<figure><img src="/files/bkcosOdLOjPa1AsWkrkd" alt=""><figcaption></figcaption></figure>

Node set variable thứ 2 được dùng để nối các giá trị lại với nhau. Tại trường Variable name, bạn chọn một biến mới để khi thực hiện nối dữ liệu thì dữ liệu được nối đó sẽ lưu vào biến (ở đây là biến b). Tại trường Variable or value các bạn nhập như trên hình, dấu | dùng để phân cách các giá trị, các bạn cũng có thể sử dụng kí tự khác để phân cách; và biến ${email} ở đây sẽ lấy các giá trị được lấy ra từ node speadsheet v2.




---

[Next Page](/llms-full.txt/1)

