# BitBrowser - Professional Anti-detect Browser

Multiple launch, security and efficient!

BitBrowser(Official website: <https://www.bitbrowser.net>) is a multi-account anti-association fingerprint browser developed by HongKong Bit-Internet Technology Limited!

Deeply developed based on the global mainstream Chrome and Firefox open-source kernels, creating a completely independent browser environment for each account/store, matching completely independent device information and completely pure new account segment IPs, eliminating account/store associations, and ensuring account/store security.

Each team member can assigne an independent account.

<mark style="color:blue;">**Please refer to the "Guide(Graphic)" and "Guide(Videos)" for usage:**</mark>

{% content-ref url="/pages/-Mi\_oHTaKxERMj2k0GqZ" %}
[Guide(Graphic)](/help1/quick-start)
{% endcontent-ref %}

{% content-ref url="/pages/YV6GH1OWHCdddcvpa41y" %}
[Guide(Videos)](/help2/introduction)
{% endcontent-ref %}

{% embed url="<https://www.bitbrowser.net>" %}


# Quick Start


# OS and Hardware

### **H**ardware requirements

* &#x20;CPU: 2 cores 2G and above
* Memory: 2GB at least
* &#x20;Free Space: 2GB at least

### **OS**

* &#x20;Windows10 and later
* &#x20;macOS 12(Monterey)  and later


# Sign Up, Download and Install

### 1. Sign up

* Go to <https://www.bitbrowser.net>, click "Register Now" to sign up, or to download page(<https://www.bitbrowser.net/download/>) download the app and install, then sign up from client.
* You will need to provide your user name, password, phone number(get sms code) and Wechat/QQ and email, and invite code if you have one.
* Check "User Services Agreement"
* Done!

![](/files/XOD8YJTzz8yppJHTBsK1)

![](/files/0zVNRTVd47vFv7SLD16x)

### 2. Download

Download BitBrowser app from <https://www.bitbrowser.net/download/>.

### 3. Install

Unzip the downloaded file, dbclick to install.

<div><figure><img src="/files/VtqeJVauPJVeVUL5mVTJ" alt=""><figcaption></figcaption></figure> <figure><img src="/files/SNfPFUPJkEyt2sxGhYcU" alt=""><figcaption></figcaption></figure> <figure><img src="/files/z19KfAKxwEbmyf3MlJQs" alt=""><figcaption></figcaption></figure></div>


# Subscribe, Change plan and Renew

* We support free trial. At present, 10 browser profiles can be used permanently for free!
* Enable all functions after subscription.
* Subscrible: Launch->To "Browsers"->Click "Subscribe" button, or to "Cost"-> Click "Subscribe" or "Change Plan".
* If you need more users, you can increase users from "Cost".

![](/files/0qL3FQqYouZVb57RUZZ6)

![](/files/btlcBukVMVRXplKkGyjW)

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

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


# Browser Profiles


# Add a new browser profile

* Launch -> To "Browsers" -> Click "Add"

![](/files/zQvoe9wsngHb9cgdoOGz)

* Fill in the required and optional fields.

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

1. Browser Name: Name the browser profile.
2. Group: Assign a group for the browser profile, you can manage groups from "Groups".
3. Platform: Required field, the platform url will be opened automatically after the browser launched. And the "Username", "Password" below here will be autofilled for platform. You can also select "Others" for customize.
4. Duplicate Validation: If the platform, username, password completely same with exist data, will not add this browser profile if you selected the checkbox.
5. Cookie: Set cookies for this browser profile before launch.
6. Open Urls: Will open these urls automatically after launch.
7. Proxy Type: Provide your Proxy IP.
8. Proxy Method: Use local proxy, please select "Direct Mode"; Support Http, Https, Socks, SSH and other proxy methods. Reference [Proxy Settings](/help1/proxy).

#### Browser Fingerprint Settings

![](/files/v8iaPTT5K6TzDHJoQX7O)

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

<figure><img src="/files/6ZSHRsgiCikVtTu67fNd" alt=""><figcaption></figcaption></figure>

* Fingerprint fields are constantly updated, you can safely use it. Refer to [Browser Fingerprinting](/fingerprint).
* Click "Random Fingerprint" to random all fingerprint field values.


# Batch lmport Profiles

* To "Browsers" -> Click "Batch Import"

![](/files/0gygX48AW1ZdD0ED7Spi)

* Download Template

![](/files/gwhmmVNetJrWfsc5Ybjr)

1. Platform: Required field, when you open the browser, the platform url will be opened automatically. And the "Username", "Password" below here will be autofilled for platform. You can also select "Others" for customize.
2. Open Url: Will open these urls automatically after launch.
3. Duplicate Validation: If the platform, username, password completely same with exist data, will not add this browser if check the checkbox.
4. Import Excel: Download excel template first, fill in the informations.

![点击图片放大](/files/wWQMz91BXOUltobynfTX)

&#x20; 5\. Click "Random Fingerprint" to random all fingerprint item values.

* Fingerprint fields are constantly updated, you can safely use it. Refer to [Browser Fingerprinting](/fingerprint).
* Save and import.


# Batch add

* To "Browsers" -> Click "Batch Add"

![](/files/GQkC9QAcYWk1cTxkT9Rx)

![](/files/r8V2ujWDRb45ohGH1Cw2)

1. Quantity: Batch add numbers.
2. Browser Name Prefix: Name the browser profile, and the names will use the same prefix.
3. Group: Assign a group for the browser profile, you can manage groups from "Groups".
4. Platform: Required field, when you open the browser, the platform url will be opened automatically. And the "Username", "Password" below here will be autofilled for platform. You can also select "Others" for customize.
5. Open Url: Will open these urls automatically after launch, separated by comma.


# Features and functions

### Groups

![](/files/NOEBsg5Hbky94Wt0yvWd)

1. Groups can be used to classify browsers. Also you can assign a gorup to sub users. Refer to [Users](/help1/users).
2. Click "Add" to add new group.
3. Click "Edit" to update group infos. Like name and sort.
4. Click "Delete" to remove a group.

### Advanced Search

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

1. You can quickly filter datas by Name,Group Name, Username, Seq, Min Seq, Max Seq, Remark, Proxy Type, Host and Status.
2. Switch tabs, quickly filter group datas.

### Features

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

* box1: Switch lines, you can switch lines when your local network error, detect IP failed or other issues.
* box2: Package and browser used infos.
* box3: Open times per day.
* box4: Search filters.
* box5: Reset opened browsers window bounds.
* box6: Refresh data.
* box7: Share with others.
* box8: Reset table columns.
* box9: Recycle Bin, refer to [Recycle Bin](/help1/recycle-bin).
* box10: More operatioins, such as Open Selected, Clone Selected, Set As Favorite, Export, Batch Update Browsers etc.
* box11: Selection for batch operation.
* box12: Batch open selected browsers.
* box13: Clone selected browser, you can both clone fingerprint infos or random it.
* box14: Set Favorite.
* box15: Export by selected, seq range and groups.
* box16: Batch update browser's group, proxy, remark and all of other items.
* box17: Close selected browsers.
* box18: Clear selected browser's cache files.
* box19: Share browsers with others.
* box20: Transfer browsers to other BitBrowser users.
* box21: Delete selected browsers, you can completely delete browsers(can not resotre) or move to recycle bin, refer to [Recycle Bin](/help1/recycle-bin).
* box22: Config fingerprint items, same as [add browser](/help1/browser-profiles/add-a-new-browser-profile).
* box23: Open browser.
* box24: Set Favorite.
* box25: Open selected browsers, close selected browsers, move to recycle bin and delete completely.
* box26: Pagination
* box27: If the agent has added a refresh URL, click to refresh to the latest URL


# Export browser profiles

* Export Selected Profiles,Export Profiles By Seq,Export Profiles By Group

![](/files/IiH4II9f0HoOmGXiAQqQ)

* To "Browsers" -> More -> Click "Export"
* Export excel file, same as Import Templete, also could be used for import directly. refer to [Import browsers](/help1/browser-profiles/batch-lmport-profiles).


# Batch update browser profiles

To "Browsers" -> Click "Batch Update"

![](/files/046xtgGurx1xee1e0eCK)

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

1. Export profiless that you need updated first. Refer to [Export browser](/help1/browser-profiles/export-browser-profiles).
2. Update infos and do not delete or edit ID column, it will cause errors which cannot find these datas.
3. Upload updated file and click "Confirm" to save.


# Batch export cookies/Batch update cookies

### **Batch export cookies**

Open the client ->enter the left menu item "Browser window" ->click the "More operations" button ->click the menu item "Batch export cookies". Currently, it supports the export of selected browser window cookies, the export of cookies in the specified sequence number range window, and the export of cookies in the specified grouping window.

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

### **Batch update cookies**

Open the client ->click the "Browser Profiles" on the left menu ->click the "V" icon on the right side of the "Add" button ->click "Batch Update cCookies" to import the folder zip file to be updated, and select the "Confirm" button to update successfully.

<mark style="color:red;">be careful:</mark>

1. <mark style="color:red;">Each browser cookie must use a separate txt file named by the window serial number. For example, if the window serial number is 123, it will be named 123.txt;</mark>
2. <mark style="color:red;">All txt files are placed in the same folder, named Cookies, and then compressed into zip files;</mark>
3. <mark style="color:red;">The size of the cookie. zip file that can update up to 100 txt format (windows) at a time cannot exceed 20MB;</mark>
4. <mark style="color:red;">After uploading successfully, the cookies in the corresponding serial number window will be replaced and updated with the latest cookies you uploaded.</mark>

<figure><img src="/files/24WsKS8FBkCI3i3AJbYG" alt=""><figcaption></figcaption></figure>

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


# Recycle Bin

![](/files/LObp0x5MeSXxKv9G5unH)

* box1: Search filters.
* box2: Tabs for quick filter; "All Browsers" for all data, "My Browsers" for thoose datas that only deleted by me.
* box3: "Restore Selected" will restore selected browsers, "Restore All Browsers" will restore all browsers from recycle bin.

  Note: If your browsers up to package, then the browsers from recycle bin can not be restore.
* box4: Delete Selected and Delete All.\
  Note: Delete browsers from recycle bin will be completely deleted, and can not be restored.


# Users


# Roles and Permissions

* Manage permissions by role, assign different roles to users for different permissions.
* To "Users" -> Click "Add Role"

![](/files/SWTS8hA9zyucJpLilzvn)

* Role Name: Name the role as you need.
* Permission: Check permissions for each role.
* Confirm and save.

![](/files/xLDsMVU6Z7cysz2IZRY3)

<figure><img src="/files/EHFuwGSucuTpWqTAYz7h" alt=""><figcaption><p>Browser permissions</p></figcaption></figure>

![Group permissions](/files/l1xPjSJqy3PLSRGQaWXh)

![Extension permissions](/files/L0LjqOTYfNbaIj87oRrt)

![Recycle bin permissions ](/files/Z5HhUEaPLdg6imGPOq1p)

* Click edit button to update role infos.
* Click delete button to remove roles.

![](/files/b0dWWJKoijp0TtCGvF2r)


# Add Users and Set Permissions

* Add user and assign a role.
* To "Users" -> Click "Add"
* The maximum number of users you can add depends on the package you subscribe. You can upgrade the package and change the package to increase the number of supported users.

![](/files/U0cs3EhbgjlxCuhmeYar)

* Add User

![](/files/U9afWvuCay7td5jL8aXJ)

1. Role: select an exist role, if you dont have a role then add role first.
2. Name: Name of the user.
3. User Name, Password: The login username and password.
4. Phone Number, Email: Your phone number and email.
5. Data Role:&#x20;

   Admin: Manage all users permissions.

   Manager: Manage browsers, users, groups and other permissions of the user assigned.

   Member: Have no management permission, only for browsers and groups.
6. Group: Assign groups to the user.
7. Allocated Quantity: The maximum of browsers the user could add. Add group first for sub user.
8. Confirm and save.

![](/files/iZ4SitmB6gIWqOR5d8T9)

1. Click browser button to show browser datas of the user.&#x20;
2. Click edit button to update user infos.
3. Click delete button to delete user.
4. Click lock button to update user password.
5. Swith status, enable or disable the user.


# Referral

![](/files/u4U969q3IJnOEQe4lgjm)

* For all BitBrowser users!
* Copy your referral link, and promote it in the way you are good at. By registering users and spending through your referral link, you can get a high percentage of the amount spent.
* Details: Show your promotion details.
* Withdraw : Your withdraw records.
* Coupon: Your coupons.


# Proxy


# Http/Https/Sock5/Ssh

### (1) Add browser -- Set http/https/sock5/ssh proxy

![](/files/pRcD4tx1h3hbbgnfr5UL)

![](/files/mie3w7HQdhu0NyHG1wOJ)

1. To "Browsers" -> Add browser
2. Select Custom Proxy Method
3. IP look up service, we provide IP-API, IP123, and Luminati exclusive.
4. Select a proxy type.
5. Fill in the Host, Port, Username and Password.

### (2) Import browsers -- Set http/https/sock5/ssh proxy

![](/files/7R4ftDqK1jMw2ymnFHw9)

1. To "Browsers" -> Click Batch Import
2. Download Template file.
3. Fill in template as you need.
4. Fill in the proxy type with http,https,socks5,ssh
5. Proxy info, format:

   Host:Port:Username:Password

   eg: 11.22.33.44:8888:user:password
6. Save excel file and import.


# Luminati/Oxylabs/Iphtml/Ipidea

### (1) Add browser -- Set luminati/oxylabs/iphtml/ipidea dynamic proxy

![](/files/kB4SM5pnTX0eQtTPYicJ)

![](/files/uVnTcdwk7HLIU8zNbKSn)

1. To "Browsers" -> Add Browser
2. Select Custom Proxy Type.
3. IP look up service, we provide IP-API, IP123, and Luminati exclusive.
4. Select Proxy Type as you need, support luminati, oxylabs, iphtml and ipidea etc.
5. Use Global Section: Based on the proxy infos settled at Settings -> Global -> Proxy.
6. Fill in the Host, Port, Username and Password.
7. IP: Fill in the default IP, then click blank of the page to detect the country, state and city infos.

### (2) Batch Import -- Set luminati/oxylabs/iphtml/ipidea proxy

![](/files/nv9kF1KxQngTVkNO10H7)

1. To "Browsers" -> Click Batch Import
2. Download Template file.
3. Fill in template as you need.
4. Fill in the proxy type with luminati/oxylabs/iphtml/ipidea as ① shows on screenshot.
5. Proxy Info: format as Host:Port:Username:Password, as ② shows on screenshot.
6. "Country/Region", "State/Provice", "CIty" column: Fill in the code to ③④⑤ which can be found on sheet "County Code List". Leave ③④⑤ blank, will random a IP for use, if fill in these infos, then will random a IP from the provided country/state/city.
7. Save file and import.


# Extract proxy IP with api

![](/files/3CuBnvhphuIHexL1SEP5)

1. To Proxy Setting
2. Select Extract By API of proxy method.
3. Select protocol, support http, https and socks5.
4. Extraction Link, which is provide by the proxy IP platform, any questions please contact their platform.
5. Test extraction results. If test failed, usually becase of: (1)wrong link, (2)need add your local ip to platform's whitelist, (3) wrong provider or we do not support your IP Platform yet, if so, please contact us.
6. Method: If you select "Extract a new IP every time you open the browser", then we will extract for you every time. If you select "Extract a new Ip util Ip is invalid", then we will check availability, if invalid, then extract a new IP.


# How to use Rola-IP

Rola-IP official website: <http://www.rola-ip.co/#13390>

1. To "Proxy IP", click "To Rola-IP Admin", it will open the rola website with default browser and auto login.

![](/files/MC3bzRUQ49PKyt77F0IK)

To ROLA-IP, click "Recharge online", then subscribe a package you need.

![](/files/GpwieLnBUiV4H4QoKJEE)

2. Buy a proxy IP and get Host, Port, Username and Password.

2.1 For example, get at least 4 Dynamic Residential IP. Operation: Select "Overseas Residential IP" -> Click "Dynamic Residential IP" -> Select country and region and other item -> Click "Generate proxy informatioin", you will get your proxy infos as below:

![](/files/BkLe5QfZI0UtTHBIjCnx)

2.2 Get at least 4 "Static Resi IP". Operation: Click "Global Residential IP" -> Click "Static RESI IP (Bandwidth)" or "Static RESI IP (Monthly)" -> Select Quantity and Country and other infos -> Click "Buy Now", then you can get your data:

![](/files/58aWPRR7PBFHC1egEdhk)

![](/files/0kfs2dOzO7yE2hgaVLjY)

2.3 Other platforms, reference current

3. Back to BitBrowser Proxy Setting, Select a proxy type such as "socks5":

![](/files/myEmPz7y3SF8rtTBwFmF)

4、 Fill in the Host, Port, Username, Password from ROLA-IP:

![](/files/U03PKyqReiuh44xdbDY5)

5、 Click "Check Proxy", get proxy result like this. Click "Confirm" to save.

![](/files/8rY5Kycn8YA34agplQ6W)


# How to use Dove Proxy

Dove Proxy official website: <http://www.doveip.com//index.php?s=/index/index.html&lang=en%20-us&ap=7697187c3a2a9c01>

### Set socks5 proxy

![](/files/85K2Aek83r4DnzRdPkY2)

1\. Create a channel at dove platform, refer to [Channel Help](https://www.doveip.com/admin.php?s=/channel/instruction.html\&lang=en-us).

2\. Select Proxy Type that created by channel protocol, like socks5.

![](/files/4lgRR64tZz5nbWp3gjY8)

3\. Fill in Host, Port and others, confirm to save.

### Extract By API from dove

1. To API & Integrations -> API Builder, generate extract link.

![](/files/ewcUgSkOGWPYlzCAAPSN)

2\. Select protocol same as dove, like socks5:

![](/files/OoAKodcVUwKbhUsGEYTx)

3\. Select "Dove Proxy" Provider, copy and paste the link that dove API Builder generated. Confirm and save.

4.Open browser.

![](/files/Xp2Br7IzqfdNt99NaB0S)


# How to use IPIDEA

**Extract from IPIDEA**

1. Log in to IPIDEA（<https://www.ipidea.net/?utm-source=bitbrowser&utm-keyword=?bitbrowser>）

![](/files/1TmmDZzlrbUOzoZcGeZT)

2. Authentication Account first and get free traffic.

![](/files/cxqXBF7NPJOmY5e0VeK1)

3. To "IP Whitelist", add local IP to whitelist.

![](/files/KY2s2SMGMmygFpgAzHuT)

4. To "API Fetch", select region and generate a link.

![](/files/o4BJyW90rPJJKD9VibVr)

5. Copy link and paste to BitBrowser's Extraction Link.

&#x20;

**BitBrowser's Proxy Setting**

1. To BitBrowser website and download client.

![](/files/wdpZ05IVdwkhyjIyuQYq)

2. Sign up and log in.

![](/files/NUWCA8VwRsrp2oKGaUSL)

3. Add browser and set proxy.

![](/files/rrPKyq1cg2kuPmt5gODx)

4. Select Extract By API and select IPIDEA provider.

![](/files/4tVBtKoDDjJOetyLj0yo)

5. Fill in the Extraction Link and Test.

![](/files/ARFmEx7JKBzQrusHSrNz)


# How to use Proxy302

Proxy302([https://www.proxy302.com/](https://share.proxy302.com/BEyFyE9h6ArAfmF)) need your internet outof china.

## In China - tutorial <a href="#id-0-toc-title" id="id-0-toc-title"></a>

1. Log in to Proxy302, download and install.

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

2. run proxy302.

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

3. Wait for the loading. After the loading is successful, as shown in the figure below, the auxiliary tool starts successfully. Press Minimize to make the auxiliary tool run in the background.

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

4. Selct proxy type, generate.

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

5. Copy proxy info.

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

6. Launch BitBrowser and set proxy.

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

7. Fill in the proxy items.

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

8. Open the auxiliary tool, copy the LAN address, and fill in the LAN address in the proxy host.

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

9. Click the "Check Proxy" button to check whether the proxy connection is successful.

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

10. save config.

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

11. Open browser.

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

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

***

## Connect to Proxy302 <a href="#id-1-toc-title" id="id-1-toc-title"></a>

1. Log in to Proxy302, generate proxy.

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

2. Copy proxy info(Host:Port:Username:Password).

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

3. Launch BitBrowser add set proxy.

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

4. Copy and Paste the proxy info.

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

5. Click the "Check Proxy" button to check whether the proxy connection is successful.

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

6. Confirm to save.

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

7. Open browser.

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

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


# How to use Pia S5

### How to use PIA S5 Proxy in BitBrowser ?

PIA S5 Proxy discount activities and package applicable scenarios

Buy 1,000 IPs and get an additional 700 IPs for free

Up to 85% discount, as low as $0.045 for a single IP

New data plan, buy 100GB and get an additional 20GB data (limited to 7 days)

Register to join the PIA affiliate program and get 10% of each invitation order.

Registration link: <http://www.piaproxy.com/?co=forum\\&ck=?55>

Purchase proxy service: <http://www.piaproxy.com/?co=forum&ck=?55>

&#x20;

Each package on the official website is carefully designed to meet the specific needs of different users:

SOCKS5 proxy and SOCKS5 proxy (enterprise): billed by IP, unlimited usage of traffic and terminals

Long-term ISP plan: suitable for users who need to use the same IP for a long time, such as stable social media marketing or e-commerce operations.

Static ISP plan: IP validity period is 365 days, supporting Americas, Southeast Asia, Japan, South Korea and other regions

Traffic package plan: billed by GB of traffic, suitable for users with large IP demand, with no limit on the amount of IP used.

&#x20;

For visual learners, watch this video:

<https://www.youtube.com/watch?v=KD\\_6EjrCwJo\\&list=PLKbPejPZhHpzH5VZvqXcubKSB9ArV\\_vQw\\&index=27>

Take Windows desktop client as an example

Download PIA S5 Proxy and BitBrowser client and log in.

### 1. Integration steps

1.1 Configure PIA S5 Proxy

Get proxy credentials (taking Socks5 proxy as an example)

1.1.1 View the proxy list, click to select the residential proxy, click on the package name to switch to different packages to choose from

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

1.1.2 Fill in the "Country", "City", "Postal Code" fields and other information as needed. Click "Search"

【Such as US,alaska,anchorage】

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

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

1.1.3 Select any IP, right-click the IP, select forward port to proxy-select the port \[take 40003 as an example]

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

1.1.4 Click the port forwarding list to view the extracted IP information, click the plus sign to copy

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

1.1.5 The proxy IP credentials are extracted successfully. Next, open the BitBrowser client

### 2. Create a Configuration File

2.1 First, open BitBrowser and log in.

2.1.1. Go to the "Browser Profiles" sidebar tab in the background and click "Add".

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

2.1.2 Select the account platform from the list, and fill in the required information for other information.

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

2.1.3Select Piaproxy for the search channel, and Socks5 for the proxy type

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

2.1.4  Fill in the proxy address and proxy port, and then click the "Check Proxy" button.

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

2.1.5 After completing the above steps, the proxy is successful.

To sum up, the powerful combination of BitBrowser and PIA S5 Proxy unlocks the door to global content for users. It not only provides extremely fast, safe and stable proxy services, but also provides users with rich promotions and diverse package options. Every user can find the Internet solution that best suits them.

Whether you are an individual user pursuing privacy protection, a business person who needs to work efficiently, or a streaming media enthusiast who loves to explore global culture, PIA S5 Proxy is your rare choice. Take action now, start your global network journey with BitBrowser, and enjoy an unprecedented Internet experience!


# How to use 922 S5

1. To 922S5 website: <https://www.922proxy.com/index.html?inviter_code=c4af8a32>, download and install.

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

2. Log in and select councty/state/city, or search by zip code to find IP.

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

3. Select a IP and right click it, select a port.

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

4. To "Todaylist", click "port Forward List", and copy proxy info as you need.

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

5. Launch BitBrowser and set proxy, select socks5 and fill in Host and Port, click "Check Proxy" to test proxy status and save.

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

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

6. Open browser and enjoy.

<figure><img src="/files/6zz8MghTQWfZMvT6RQO1" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/6dp1F2Dkk79rZvbThQu4" alt=""><figcaption></figcaption></figure>


# How to use IP2World Proxy in BitBrowser?

### Step 1.

First register an account on the IP2World Proxy website and select the proxy you want. （Here is an example of a Rotating Residential Proxies）

### Step 2.

Rotating Residential Proxies can be used in two ways: API and User+Pass Auth.

API:

To use API mode, you first need to add a whitelist.

Click Get Proxies – IP Whitelist, add your local ip to whitelist.

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

Click Get Proxies – API

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

User+Pass Auth:

To use User+Pass Auth mode, you first need to add a sub-account, it means accounts and passwords.

Click Get proxies – Auth-User List, add your own sub-account.

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

Click Get Proxies – User+Pass Auth

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

### Step 3.

Input proxy information in BitBrowser to use your proxy.

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

### Step 4.

Open your browser to use your proxy.

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


# How to use IPHTML

1. Log in to IPHTML(<https://www.iphtml.com/?aff_id=11375>), to "Proxy Zone",  click "Add Zone".

![](/files/xNCGselu0rrM1S4dbhBs)

2. Enter the proxy user name, proxy password, select the proxy network, IP whitelist (optional to add), after all is completed, click "Save" to create.

![](/files/qwWDpec3ZzkU6S3oFBtZ)

3. After the addition is complete, the agent created by yourself will be displayed, and then click "Edit" to enter the edit page of the channel.

![](/files/ImDMz37gGVitJAm4p1ea)

4. Copy the proxy account, proxy password, proxy host, proxy port information, and then need to fill in the proxy settings in the BitBrowser window.

![](/files/JXvNFfdWhyvYT5R4nQF6)

5. Launch BitBrowser, click one of the buttons to set proxy.

![](/files/M5hjKhvetBsMs0faDCdW)

![](/files/1yRE7mcJoQ24BmMZcrAX)

6. Close "Use Global Section", enter the proxy host, proxy port, proxy account, proxy password, select the area to be proxy, check the proxy success, and click the "Confirm" button to save.

![](/files/UW3TBhoEoOWj7bz6Qv3B)


# How to use BrightData

1. Sign up and log in to BitBrowser.
2. To Browsers and add a browser.

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

3. Set proxy with HTTP/HTTP/SOCKS5.

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

4. Configure the proxy. Generate proxy information in BrightData, and paste it into the proxy settings of the bit browser, and then perform proxy detection to detect the connectivity of the proxy IP!

BrightData:

Sign up Brightdata account:[ https://brightdata.grsm.io/bitbrowser](< https://brightdata.grsm.io/bitbrowser>)&#x20;

To dashboard

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

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

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

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

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

BitBrowser:

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

5. update other items and save.

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

6. Find your browser and open it.

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


# How to use PYPROXY S5

1. Sign up and log in to BitBrowser. PYPROXY S5 website: <https://www.pyproxy.com/>
2. To "Browsers" and add a browser.

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

3. Set browser items.

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

4. Select Proxy Type. PYPROXY S5 support HTTP/HTTPS/SOCKS5 protocols.

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

5. Generate proxy infos at PYPROXY S5. Copy and Paste to BitBrowser's prpxy settings.

PYPROXY：

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

BitBrowser:

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

6. Check if the current proxy is available.

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

7. Set other items as you need, save config.

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

8. Open and enjoy.

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


# How to Setup NetNut Proxy on BitBrowser Browser

NetNut Website：[https://share.netnut.cn/R3EK80VGNbuMACj ](<https://share.netnut.cn/R3EK80VGNbuMACj >)

Elevate your online privacy and anonymity with the powerful combination of NetNut proxy and Bitbrowser. This guide outlines the steps to configure Netnut proxy with Bitbrowser for a secure and seamless browsing experience. Bitbrowser's main functions, such as multiple browser windows, multiple login accounts, and prevention of association between windows and account blocks, enable each window to simulate independent computer information and different IP addresses.&#x20;

This ensures complete independence and isolation from each other, avoiding account blocks caused by association perfectly. Together, they offer an ideal solution for web scraping, data extraction, and maintaining online anonymity while efficiently extracting data and avoiding IP bans and CAPTCHAs. Start exploring the web with confidence, knowing that your privacy is safeguarded by the synergistic capabilities of NetNut proxy and Bitbrowser.

### Step 1: Register and log in to [Bitbrowser](https://www.bitbrowser.net/).

<br>

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

### Step 2: Click on "Browser Profiles" followed by the "+ Add" button.

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

### Step 3: Choose the desired proxy type. NetNut offers support for HTTP/HTTPS/SOCKS5 protocols.

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

### Step 4: Obtain your proxy data from the NetNut dashboard. Copy and paste this information into the appropriate fields within Bitbrowser's proxy settings. Conduct aproxy detection test to confirm the connectivity of the supplied proxy IP.&#x20;

### NetNut interface:

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

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

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

### Bitbrowser interface:

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

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

### Step 5: Modify additional settings as needed. If you require further adjustments, make the necessary changes and click the "Confirm" button to save your updated profile.

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

### Step 6:Find the newly-configured window in the "Browser Profiles" area and click the "Open" button to start using your personalized browser profile with the NetNut proxy.

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

**Proxy Types: HTTP/HTTPS vs SOCKS5**

HTTP/HTTPS Proxies are designed specifically for web traffic that uses the HTTP and HTTPS protocols. They are ideal for accessing and interacting with websites, making them suitable for tasks such as web scraping, data extraction, and SEO.

### SOCKS5 Proxies are more versatile, as they can handle any type of internet traffic, not just HTTP/HTTPS. They are perfect for tasks that require a higher level of anonymity or involve non-web protocols, such as gaming, streaming, or peer-to-peer file sharing.

#### Proxy Authentication: IP-based vs Username/Password

### IP-based Authentication is when the proxy service allows access based on a user's IP address. To use this authentication method, register your IP address in the NetNut dashboard, and Bitbrowser will automatically be granted access to the proxy.

### Username/Password Authentication requires you to enter a unique username and password in Bitbrowser's proxy settings. These credentials can be found in your NetNut dashboard.

#### Proxy Rotation

### Proxy rotation involves regularly changing your proxy IP address to avoid being detected or blocked by websites. NetNut offers automated proxy rotation, ensuring you always have access to fresh, working IPs. To enable proxy rotation in Bitbrowser, simply use the provided proxy settings from NetNut.

#### Geo-Targeting

### Geo-targeting allows you to access websites from specific countries or regions by using IP addresses from those locations. NetNut provides a wide range of geo-targeting options. Configure your Bitbrowser profile with the desired country or region by selecting the appropriate proxy settings in your NetNut dashboard.

#### Data Scraping and Crawling

### NetNut proxy and Bitbrowser are an excellent combination for web scraping and crawling tasks. By using a secure browser and a reliable proxy service, you can efficiently extract data while avoiding IP bans and CAPTCHAs. Be sure to follow website-specific guidelines and adhere to web scraping best practices.

#### Browser Fingerprinting and Anonymity

### Browser fingerprinting is a technique used by websites to track and identify users based on their unique browser configurations. To maintain anonymity with NetNut proxy and Bitbrowser, consider using custom user agents, managing cookies, and leveraging other privacy features available in Bitbrowser.

#### Performance Optimization

### To optimize the performance of your NetNut proxy and Bitbrowser setup, consider the following tips:

### ● Adjust connection timeout settings to find the right balance between speed and reliability.

### ● Manage concurrent connections to avoid overloading the proxy server or target website.

### ● Fine-tune bandwidth usage by selecting the appropriate proxy protocol and settings for your use case.

### Summary:

This guide presents a comprehensive, step-by-step process for integrating a NetNut proxy with Bitbrowser, enabling you to securely and anonymously browse the internet. By following these instructions, you can establish a custom browser profile that harnesses the capabilities of both NetNut's proxy network and Bitbrowser's security features. Embrace your enhanced privacy as you confidently explore the web!


# How to Set Up Swiftproxy Proxy

### Swiftproxy Official Website: swiftproxy.net/?ref=bitbrowser

1\. Visit the official [Swiftproxy](https://www.swiftproxy.net/?ref=bitbrowser) website and sign up. You can either register with an email or use Google for one-click login.

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

2.After making a purchase on the homepage, go to the user center and select "Get Proxy" from the left-hand menu. Create a sub-account through your personal account control panel.

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

l Ensure that you change the sub-account status from "Paused" to "Enabled" and set a data usage limit (bandwidth limit) to prevent accidental overuse.

l Click "Add" to create a new sub-account. After completing the setup, click "Confirm" to finalize the creation.

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

3\. Access "Get Proxy" and configure the settings:

l Navigate to the "Get Proxy" section and select "Credential Authentication." Configure residential proxies as needed, for example, selecting "North America Random."

· **Sticky Session:** For sticky IPs, choose the desired IP stability duration (e.g., if set to 3 minutes, the IP will change every 3 minutes).

· **Rotating Mode:** The IP will change with each request.

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

4\. After completing the proxy extraction, click "Copy Link" or "Batch Generate" to extract the proxies.

5\. Open BitBrowser, go to the proxy window, and select "Create Window." In the proxy type, choose "Custom Proxy" and select the appropriate mode: socks5/http/https. For the IP protocol, choose IPv4.

6.Fill in the relevant proxy information: IP, port, username, and password. Click "Check Proxy" to verify if the proxy can connect successfully. Once configured, click "Confirm" to complete the setup.<br>

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


# Proxy IP Management

Proxy IP management allows you to add proxy IP to the proxy IP management page, and the next time you create an environment, you can directly select the added proxy IP for use.

### Display location

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

As shown in the above figure, open the client ->click on the left menu "Proxy IP" ->switch to the "Proxy IP Management" tab.

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

Red box 1: Click on the dropdown to select "Add Proxy" or "Batch Add Proxy" to add proxy IP.

Red box 2: "Batch agent detection" can batch detect whether the agent is available. After successful detection, the agent can be used normally.

Red box 3: The search criteria for the proxy IP list can be used to search for proxy IPs based on the above search criteria.

Red box 4: Display the list of proxy IPs that have been added.

### Add Proxy IP

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

The above image shows' adding a single proxy IP '.

Proxy method, select 'Custom Proxy'!

IP query channels can be accessed through IP-API, IP123, Luminati dedicated, and other IP channels.

Proxy type, selected based on the actual type situation, supports HTTP, https, socks5, SSH and other forms of proxy!

Fill in the proxy host, proxy port, proxy account, and proxy password according to the actual situation.

Refresh URL: This feature only supports proxies with the "Refresh URL Function". Clicking the refresh icon will automatically execute the refresh URL and change the IP address of the window. When multiple windows use the same proxy information, refreshing proxy P will simultaneously change the IP addresses of multiple windows.

Check for duplicate items: Compare with all items in the "Proxy P Management" list. When the proxy type and proxy information are completely consistent with a certain item, it is determined that the item is a duplicate item and will not be added!

After adding the information, click on "Proxy Detection" in the upper right corner. Once successful, it can be added to the proxy IP list.

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

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

The above image shows "Batch Add Proxy IP".

Click on "Batch Add Agents" to pop up the Batch Add Agents pop-up window.

Agent information: Fill in the text box without filling in each line. Follow the rules on the right side and carefully read the filling instructions and format. If the filling is incorrect, the addition will not be successful.

Batch proxy detection: After successful detection, click the OK button to successfully add proxy IP in bulk.

### Batch proxy detection

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

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

Select the IP to be tested and click on "Batch Proxy Testing".

The detected proxy IPs will be tested in sequence and can be used normally if there are no issues with the detection.

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

Red box 1: After selecting multiple proxy IPs, you can batch delete proxies.

Red Box 2: Edit Proxy.

Red box 3: Single delete agent.

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

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

Click on the "Bind Window" icon in the proxy list to quickly bind the window. After successful binding, the window opens and the environment can be used normally.


# Extensions

#### Custom Extensions

Add your local extensions to system. The extension will be loaded when you enable it.

Note: The custom extensions will not sync to bit server, and also disabled to other accounts, if you want publish your extension, contact our customer service.

### Way 1: Add from chrome web store

1. To chrome web store(<https://chrome.google.com/webstore>) and find your extensioin with default chrome, get detail url and copy it.

![](/files/U1yz4pQv7HDbVioGmvKK)

2. To "Extensions", click "From Google Store", enter the extension detail url and detect, save after success.

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

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

3. Enable the extension, all your browsers will load this extension after browser opened. And the opening browser need to be relaunched.

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

![](/files/gALd2WjFusB0NzgbDY5O)

4.The button displayed in the red box is the update extension button, which can be clicked to update the extension to the latest version.

<figure><img src="/files/p5BPtmmk60mjP3c1VYiY" alt=""><figcaption><p>Update Extension</p></figcaption></figure>

5.As marked in the red box, click on the "triangle icon" in the extension to synchronize the current extension status (open, closed) to the employee account.

<figure><img src="/files/oslis13F2PgzgDo3yzgQ" alt=""><figcaption><p>Synchronous extension</p></figcaption></figure>

6.Box1 is the extensions you added, box2 is the offical provided.

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

### Way2: Add local extension

To "Extensions", add "From Local",  select the extension root dir and save.

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

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

## Search extensions

To "Extensions", filter by category, status and name.

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

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


# Account Security


# How to change password

![](/files/trROgWPcXeuaQYNPrsPw)

* To "Profile" as the screenshot shows, update password in Reset Password panel.
* Fill in your old pass, new pass and confirm your new pass, click "Save" to update.


# How to retrieve the password

![](/files/pAuzQQqTOKuqVW4QkVdU) ![](/files/H2zmxs9wPVdT1rml6MeP)

* Launch BitBrowser.
* Click "Forget Password" at login page.
* Fill in the form and reset.


# How to retrieve the username

![](/files/utKj224HsXAI8jXEUdzH)

![](/files/cfQvLh7OulLxxCrVJMX6)

1. Click "Forget Username" at login page.
2. Fill in the form and retrieve your username.


# How to turn on two-factor verification

1. Log in to the bit fingerprint browser and select "Personal Center" and click to enter.

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

2. Select to log in to the dual verification interface and turn on the "Enable dual verification" switch.

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

3. Click the "OK" button to turn it on. When logging in to the software, you will need to pass the login double authentication. <mark style="color:red;">Note: Please ensure that your current mobile phone number can receive text messages normally, to prevent the failure of double verification due to the failure to receive text messages!</mark>

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

4. Click the "Bind" button and add "Verifier". Here, we recommend using "Google Verifier" or "Microsoft Verifier". Use the verifier to scan the QR code below or copy the key to add. After scanning or adding the key successfully, click "Next" to fill in the "Mobile Verification Code" and "Verifier Verification Code", and click the "Bind" button to bind the verifier.

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

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

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

5. In this way, we need to enter the "verifier verification code" or "SMS verification code" to double verify the login account when logging into the bit browser.

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

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


# Introduction

This video is about BitBrowser's basic operations. Includes: browser operatioins, groups, recycle bin and referral.

{% embed url="<https://www.youtube.com/watch?v=R4WeoKpsmQk>" %}


# Users

About users management.

{% embed url="<http://www.youtube.com/watch?v=N7qvtTjsWKU>" %}


# Http/Https/Socks5 Proxy

The video is about how to set proxy in BitBrowser, such as http, https, socks5 proxy.

{% embed url="<https://www.youtube.com/watch?v=wV_b9uvA07I>" %}


# Luminati/Oxylabs/Iphtml Proxy

The video is about how to set luminati/oxylabs/iphtml dynamic proxy IP:

{% embed url="<https://www.youtube.com/watch?v=hPff5n7KEiQ>" %}


# Extract IP

The video is about how to set extract IP by API.

{% embed url="<https://www.youtube.com/watch?v=4z2zcRKPDvk>" %}


# IPIDEA Proxy

{% embed url="<https://www.bilibili.com/video/BV1rY4y1u7eh/?share_source=copy_web>" %}

IPIDEA offical website：<http://www.ipidea.net/?utm-source=bitbrowser&utm-keyword=?bitbrowser>&#x20;


# ABCproxy

{% embed url="<https://youtu.be/gTda7QRjlQ8>" %}

ABC S5 Proxy offical website：[https://www.abcproxy.com?code=PKF3SH6V](https://www.abcproxy.com/?code=PKF3SH6V)


# Getting Started


# Introduction

This is a professional anti-detection account management browser, which can provide an independent fingerprint environment and isolation environment for each account.

What we can do?

* Multi-browser window, multi-account management, anti-association.
* Automatically set browser independent fingerprint.
* Open multiple environment-independent browsers.
* Support automation.
* Provide automated script market platform.
* Support Local API
* Multi-user support, good for teamwork​​​​.
* Support proxy setting.


# Support for trial

We support free trials:

* Sign up first.
* Log in to BitBrowser, you will find you have 10 free browsers, enjoy.
* If the free browsers is not enough, you can upgrade the package, refer to [Subscribe, Change plan and Renew](/help1/quick-start/subscribe-change-plan-and-renew).


# How many users can be created?

The number of users is determined by your plan;

At least one, unlimited.

At cost billing details, you will find the max number of users.


# Which platforms are supported?

We supports all platforms and websites.


# What browser management can do?

You can add browsers, import and export browsers, open browsers, update fingerprint settings and set proxy etc. Refer to [Browsers](/help1/browser-profiles).


# What groups can be used for?

Grouping is a classification tool, you can group different browsers into one group according to usage habits or business.

Also you can assign a group to your sub-users, good for teamwork.


# Do we provide proxy IP?

We have collected some excellent proxy platforms and recommend you to use them.

![](/files/W9MfGYbKKlnr9XP7C2Ex)


# How to choose a proxy type?

If you already have proxy IP, set proxy on add/update browsers is ok, refer to [Proxy Settings](/help1/proxy);\
\
If you dont have one, choose "Direct Connection Mode";\
\
In general, you can choose any of the proxy IP, proxy software, and local IP, it all depends on your needs!


# Issues


# Import failed

Support importing up to 1000 pieces of data at one time. You need to download the template first and then fill it out. Details refer to [Import Browsers Profiles](/help1/browser-profiles/batch-lmport-profiles).\
\
The import failure when uploading excel is usually due to the abnormal data content in the table, which causes the server to not correctly read the data in the table.\
\
You can import the data in the table in batches, and gradually troubleshoot abnormal data!


# Display blank

1. Windows7 system can open app in compatibility mode. Right click->Property->Compatibility, check compatibility, select win NT (or Windows Vista(Service Pack 2)).
2. The page may not be fully opened due to network instability, please press Ctrl+R to refresh the page on Windows system, and press Command+R to refresh the page on macOS system!
3. If the problem still exists, please contact customer service for consultation.


# Crashed

App crashes may have the following possibilities:<br>

1. It may be that the version of the operating system is incompatible. It is recommended not to use an operating system that is too old!
2. Check whether the file has been deleted by mistake, you can try to install the latest version.

Still have problems? contact us.


# Browser launch failed

* Proxy connection failed.
* Local internet error.
* Abnormal fingerprint configuration.


# Why is there a discrepancy in IP detection?

There is a certain error between different detection methods and platforms.\
\
As long as the IP is correct, you don't need to pay attention to the country where the IP is resolved.\
\
We provide 3 detection channels for you to choose.


# How to increase or decrease users?

* To "Cost", click "Change Users" and update users as you need.


# How to get promotion rewards?

* To "Referral", find your referral link and referral code. You will need to subscribe first.
* Share your link or code with your friends.
* Your friends and invited users sign up via your link, or fill in your invite code.
* While these users subscribe our package or other paid service, you will be rewarded.


# How to detect the local network environment?

## Windows 10 operating system

Step 1: Press Win+R on your keyboard, type 'cmd', and click 'OK'.

Alternatively, right-click the Start menu, choose "Run," enter 'cmd'

Step 2: In the cmd command-line interface, type 'curl ip-api.com' and press Enter. If the highlighted area displays "China," it indicates that the local network environment is within mainland China.

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

## Windows 7 operating system

Step 1: Download the file named \[Local Network Test for Windows 7.zip], and extract it to your desktop. Click the link below to initiate the download.

{% embed url="<https://downsoft.bitbrowser.cn/Local%20Network%20Test%20for%20Windows%207.zip>" %}

<div align="left"><figure><img src="/files/wCURyKRnl2r86yBQoJDq" alt=""><figcaption></figcaption></figure></div>

Step 2: Open the extracted folder, and double-click on \[BitBrowser.bat] using your mouse.

<div align="left"><figure><img src="/files/VSEDCwoCHX0KjlPiM1X6" alt=""><figcaption></figcaption></figure></div>

Step 3: If the area highlighted in the image displays 'cn,' it indicates that the local network environment is within mainland China.

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

## MacOS operating system (Apple computer)

Step 1: Locate "Terminal" on your desktop and open it.

Step 2: Type 'curl ip-api.com' and press Enter. If the highlighted content in the red box displays "China," it indicates that the local network environment is within mainland China.

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


# Why do programs crash or get stuck when the computer memory is clearly not full?

### **The first thing you need to do is to make sure that.**

Please check your computer's various hardware configurations (mainly RAM) first to make sure that it is not due to too little RAM that is causing the memory to burst, and after you are sure, you can continue to browse the solutions below.

### **A common question that comes up for everyone.**

The computer device still has memory left, but opening a few browser windows causes the memory to explode (at this point, the memory usage in the task manager is in the range of about 60% to 85%).

**This could be caused by the virtual memory, you can try to set the virtual memory to solve the problem.**

### Setting up virtual memory

First, check the physical memory size of your device, right-click on the desktop “this computer” icon, and then you will see the following options.

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

Second, click on the picture in the “Properties”, you can see their computer's physical memory “Installed RAM”, that is, the physical size of your computer equipment, here you need to remember the size of the physical device, the back of the need to use this value to calculate.

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

Third, click on the “Advanced System Settings” in the above figure, the following figure.

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

Fourth, click on the “Settings” in the figure above, the figure below, “Performance Options” pop-up window, here switch to “Advanced”.

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

Fifth, switch to “Advanced”, click “Change” button, the following chart.

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

Six, click “Change”, according to the following picture on the steps.

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

Step 1: First click on “Custom Size”.

Step 2: In the “Initial Size” and “Maximum Size” two input boxes in order to fill in the value, the value of the calculation method:

Initial size = physical size \* 1024

Maximum size = initial size \* 2

Example: For example, if the physical device size of your computer device is 16GB, the initial size = 16 \* 1024, the maximum size = 16 \* 1024 \* 2, here you need to pay attention to the actual physical device size to calculate the value. (Physical size query method to go to the second point above to view)

Step 3: After entering the value, click the “Set” button.

Step 4: After all the settings are completed, finally click the “OK” button.

Note: After the completion of the settings, turn off the program to restart and try again, if not resolved you can contact our official customer service to assist in processing!


# Master Tutorial


# Save proxy traffic with proxy IP balcklist function

1. To "Settings", scroll to Proxy IP Blacklist.

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

2. Add the domain like "\*google.com" and save.

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

3. Opening the websites we added to the proxy IP blacklist will not use the proxy IP network, but the local network, saving the use of proxy traffic!

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

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

Note: The Quick Setting provide some commonly used website,  click to set as you need.


# How to import bookmarks for all browsers?

1. To "Settings", scroll to "Import Chrome Bookmarks" under Global.

![](/files/z49pjjGUIKGF9kRChZx6)

2. Upload html bookmarks file which exported by chrome.

![](/files/j0iQACoi4hVJsnsKGr4f)

3. Check imported bookmarks and save.

![](/files/x79PjTXdTc5geyLOznHk)

4. Turn on "Sync Bookmarks" when you or update browsers, then the bookmarks will be auto added when you open the browser.

![](/files/Ih7kjUrlZs197MtukhOu)

![](/files/0cidvIuXbvb3ysmf9tO0)


# How to autofill passwords for all browsers?

1. To "Settings", scroll to "Autofilled Username And Passwords", click "Add".

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

2. Fill in the form items and save.

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

3. The table list shows your added data, you can also update and delete it.

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

4. To "Browsers", open config dialog and scroll to "Preference".

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

5. Turn on Sync Saved Autofill and save.

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

6. Open browser, go to the set website and the username, password will be autofilled.

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


# How many accounts can each browser manage?

We recommend configuring a separate proxy IP for each browser window to manage a store or account, in order to prevent multiple stores and accounts from logging into the same browser at the same time, it may cause risks such as related account banning and related power reduction!


# How to clone a browser profile?

![](/files/J0Dn9Qb3JC5ofgADE6xc)

1. Choose a browser profile you want to clone. Note: You can only select one browser profile while cloning.&#x20;
2. Click "Clone Selected".
3. Fill out the form and save, fingerprint configuration can be cloned or random as you need.


# How to clear cache files and change cache directory of browser profile?

![](/files/YLfsBDj6mawtIbgWsVnY)

![](/files/vz6IlTTlsEFN4ZNDSR3d)

1. To "Settings"
2. Click "Clear Cache" if you want to clear all your browser profile's cache files.
3. Click "Change Dir" if you want to change the root cache dir. Note: We will not move your cache files to new dir, you need move these files by your selef if you still want them.

![](/files/eH2h7dbPImgpjIWo38S8)

You can also clear the cache files of the selected browser profiles.


# How to use Auto Paste?

![](/files/r1uHyNOq9n0BR0oIQYT0)

* To "Settings" -> Basic
* Set "Auto Paste Delay", the greater the value, the greater the delay.
* Launch browser, focus on text input and use the Ctrl+Shift+E shortcut to auto type with delay.


# How to import cookies to a browser profile?

Add or Update browser profile, fill in the Cookie textarea and save. The browser will auto set the cookies when you launch.

Note: If your cookie format is abnormal, contact us.

![](/files/4EWnD5rswOBzcImkRRgQ)


# How to fix the browser proxy failure?

* If the proxy check fails, click the fingerprint icon corresponding to open the update dialog, and click "Proxy Detection". If the prompt fails, it is an proxy problem, and you need to contact the proxy supplier to solve it;
* The proxy check is successful, but the webpage cannot be opened. Please analyze according to the local network environment:

  (1) If your network environment is in China, please try a proxy in a foreign network environment;\
  (2) If your network environment is out of China, please contact us.


# How to identify different browsers on the taskbar?

Different browser icons in the taskbar will display the corresponding profile seq, id or name.

![](/files/7B35djRvkDAtif7vbVE6)

You can set the "Custom Badge" in "Settings -> Basic" to set the display mode according to the profile serial number, profile name, profile remarks, and browser profile ID.

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


# How to update user permission?

1. To "Users".
2. Click role edit button.
3. Fill out the form and save.

Note: All users under the same role have the same function and authority. Create new role assignments if you need to assign different permissions to users.


# Local Service Guide (Demo Download)

## Do you want to join the group chat?

If you would like to join the \[API Developers] group (for developers only; non-developers will be removed), or the \[Custom Script Development] group, [please click here to contact customer service](https://www.bitbrowser.net/contact), and we will arrange for you to join the group!

Kind reminder: Please select the appropriate group according to your needs to ensure the relevance and quality of the communication.

## Introduction

Call the local API to operate the app to open, configure the proxy, etc., to help users realize the automatic script function.

### JavaScript demo

Note: The request data is only for demo, for details, please refer to the API document.

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

### Python demo

Note: The request data is only for demo, for details, please refer to the API document.

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

### Postman debug demo, import to use

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

### Service Introduction

Support the use of browser functions via Local API to help users run their own automation scripts.

### How to use

1. Install and log in to BitBrowser.
2. To Settings, find Local API url and port.
3. Download and run demo.

### Interface instructions

* Request method is post, and the parameter passing method is responseBody.
* The interface returns a json object, success is true and the operation is successful. If there is any returned data, it will be appended to the data object
* When the interface returns success as false, it means that the business failed, which may be due to program reasons or parameter verification, etc., and the failure information will be appended to msg

```
// success example
{
  success: true,
  data: {
    id: '2c9c29a28sdd33dds8026f78e380142',
    groupName: 'name'
  }
}

// failed example
{ success: false, msg: 'Id is required' }
```

### API Quick Start

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


# API Issues

Local Api common problems and precautions.

### Please standardize the use of api parameters.

Please note that when using Local Api to create or modify browsers or other operations, the interface parameters must conform to the specification, and do not pass values or types with unknown meanings.

### The format of the passed parameter is incorrect.

The request params type is ResponseBody, donot take url params, formdata or string types. It is recommended to use the postman debugging interface like this:

![](/files/uJL2isK4ATN0yEQFMFEv)


# Browser Profiles

add, update, delete browser and other operations.

### Create a browser profile, the fingerprint object is mandatory. &#x20;

{% hint style="info" %}
When creating a profile with a random fingerprint object, simply pass an empty object {} and leave the fingerprint values empty to generate them randomly.
{% endhint %}

<mark style="color:green;">`POST`</mark> `/browser/update`

Note: Windows 7/8/Win Server 2012 no longer support kernel versions 109 and above. Therefore, for the aforementioned systems, please specify coreVersion as kernel version 104 to prevent issues where the profile cannot be opened when specifying kernel version 112.

#### Request Body

| Name                                                 | Type    | Description                                                                                                 |
| ---------------------------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------- |
| groupId                                              | String  | when add browsers by a sub user, groupId is required.                                                       |
| platform<mark style="color:red;">\*</mark>           | String  | a url, eg: <https://www.facebook.com>                                                                       |
| platformIcon<mark style="color:red;">\*</mark>       | String  | default is hostname of platform url.                                                                        |
| url<mark style="color:red;">\*</mark>                | String  | open urls when launch, multiple separated by commas                                                         |
| name<mark style="color:red;">\*</mark>               | String  | browser name                                                                                                |
| remark<mark style="color:red;">\*</mark>             | String  | remarks                                                                                                     |
| userName<mark style="color:red;">\*</mark>           | String  | platform user name                                                                                          |
| password<mark style="color:red;">\*</mark>           | String  | platform user password                                                                                      |
| cookie                                               | String  | json string cookies                                                                                         |
| proxyMethod<mark style="color:red;">\*</mark>        | Int     | proxy method, default is 2, 3 is extract ip                                                                 |
| proxyType<mark style="color:red;">\*</mark>          | String  | proxy type, one of \['noproxy', 'http', 'https', 'socks5', 'ssh']                                           |
| host                                                 | String  | Host                                                                                                        |
| port                                                 | Int     | Port                                                                                                        |
| proxyUserName                                        | String  | proxy user name                                                                                             |
| proxyPassword                                        | String  | proxy user password                                                                                         |
| ip                                                   | String  | ip                                                                                                          |
| country                                              | String  | country code                                                                                                |
| province                                             | String  | state/provice code                                                                                          |
| city                                                 | String  | city code                                                                                                   |
| browserFingerPrint<mark style="color:red;">\*</mark> | Obect   | browser fingerprint object, [refer to](#browserfingerprint-zhi-wen-dui-xiang)                               |
| abortImage                                           | Boolean | not loading img, default is false.                                                                          |
| stopWhileNetError                                    | Boolean | stop opening while net error, default is false                                                              |
| dynamicIpUrl                                         |         | while proxyMethod is 3, provide a extract url                                                               |
| dynamicIpChannel                                     | String  | rola \| 922 \| doveip \| cloudam \| luna \| ipidea \| pias5 \| common                                       |
| isDynamicIpChangeIp                                  | Boolean | default is false                                                                                            |
| syncTabs                                             | Boolean | Sync browser tabs, default is true                                                                          |
| syncCookies                                          | Boolean | Sync cookies, default is true.                                                                              |
| syncIndexedDb                                        | Boolean | Sync IndexedDb, default is false.                                                                           |
| syncBookmarks                                        | Boolean | default is false                                                                                            |
| syncAuthorization                                    | Boolean | Sync saved passwords, default is false                                                                      |
| syncHistory                                          | Boolean | default is false                                                                                            |
| ipCheckService                                       | String  | ip lookup service, default is ip-api.  options: ip-api \| ip123in \| luminati，luminati is just for luminati |
| allowedSignin                                        | Boolean | Allow sign in to browser, default is true.                                                                  |
| clearCacheFilesBeforeLaunch                          | Boolean | Default is false                                                                                            |
| clearCookiesBeforeLaunch                             | Boolean | Default is false                                                                                            |
| clearHistoriesBeforeLaunch                           | Boolean | Default is false                                                                                            |
| randomFingerprint                                    | Boolean | Random browser fingerprint before launch each time.                                                         |
| disableGpu                                           | Boolean | Default is false                                                                                            |
| muteAudio                                            | Boolean | Default is false                                                                                            |
| abortMedia                                           | Boolean | not autoplay and payload videos, default is false                                                           |
| workbench                                            | String  | localserver or disable，default is localserver                                                               |
| isIpv6                                               | Boolean | IPv6 or not, default is false.                                                                              |
| isGlobalProxyInfo                                    | Boolean | use global settings of these proxy. iphtml，oxylabs，lumauto，ipidea                                           |
| syncExtensions                                       | Boolean | default is false                                                                                            |
| syncUserExtensions                                   | Boolean | Sync extensions data accross browsers.                                                                      |
| credentialsEnableService                             | Boolean | not pop up autofill anymore, default is false                                                               |
| syncLocalStorage                                     | Boolean | default is false                                                                                            |
| refreshProxyUrl                                      | String  | proxy rotate url                                                                                            |
| isValidUsername                                      | Boolean | According to the platform, username, password, check for duplicates, it's valid at the time of creation.    |
| disableTranslatePopup                                | Boolean | Disable browser pop-up for Google Translate, default is false.                                              |
| abortImageMaxSize                                    | Int     | While abortImage is true, set to prohibit loading images larger than a specified size.                      |
| stopWhileIpChange                                    | Boolean | Stop opening while ip changed, default to false.                                                            |
| stopWhileCountryChange                               | Boolean | Stop opening while the ip country changed, default to false.                                                |
| disableNotifications                                 | Boolean | Disable notifications popup, default to false.                                                              |
| disableClipboard                                     | Boolean | Prevents websites from accessing clipboard content for enhanced security.                                   |

```
// Some code
```

### Modify profile and fingerprint specified field values, supporting bulk modifications.

<mark style="color:green;">`POST`</mark> `/browser/update/partial`

Only pass the fields that need to be updated. For example, if you want to update the 'name' field, only provide the 'name' value.

#### Request Body

| Name                                  | Type   | Description                                                                                                                                                    |
| ------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ids<mark style="color:red;">\*</mark> | Array  | Collection of profile IDs to be updated. When updating a single profile, provide a single ID, for example: \["abd8fd953d3641a0915865a09b8d99ba"].              |
| browserFingerPrint                    | Object | Fingerprint object - pass the corresponding fingerprint fields to be updated. If no adjustments are needed, simply use an empty object {}.                     |
| name                                  | String | This is an example field. For the fields you want to update, provide the necessary values; there's no need to pass values for fields you don't want to update. |

### Open a browser by id, returns ws and http debug address, and coreVersion and chromedriver path

<mark style="color:green;">`POST`</mark> `/browser/open`

#### Request Body

| Name                                 | Type    | Description                                         |
| ------------------------------------ | ------- | --------------------------------------------------- |
| id<mark style="color:red;">\*</mark> | String  |                                                     |
| args                                 | Array   | launch args, eg: \["--headless"]                    |
| queue                                | Boolean | Open the profile in a queue to prevent concurrency. |

{% tabs %}
{% tab title="200: OK return ws and http address, coreVersion and driver path" %}

```javascript
{
    "success": true,
    "data": {
        "ws": "ws://127.0.0.1:53325/devtools/browser/857b2d0d-aae6-4852-ab3c-0784f0b2c1fb",
        "http": "127.0.0.1:53325",
        "coreVersion": "112",
        "driver": "/Users/ddd/Library/Application Support/Electron/chromedriver/112/chromedriver",
        "seq": 3474,
        "name": "",
        "remark": "",
        "groupId": "2c9c29a28161edd0018161f3790d0002",
        "pid": 31295
    }
}
```

{% endtab %}
{% endtabs %}

## Close a browser

<mark style="color:green;">`POST`</mark> `/browser/close`

#### Request Body

| Name                                 | Type   | Description |
| ------------------------------------ | ------ | ----------- |
| id<mark style="color:red;">\*</mark> | String |             |

## Reset browser closed state

<mark style="color:green;">`POST`</mark> `/users`

This interface is used only after an abnormal window closure. If the window is not opening due to a status of "opening" or "closing" when reopened, you can use this interface to reset the window state to "closed." Ensure that the window is actually closed before using this interface.

**Body**

| Name | Type   | Description                    |
| ---- | ------ | ------------------------------ |
| `id` | string | Required, browser profile's ID |

## Delete a browser

<mark style="color:green;">`POST`</mark> `/browser/delete`

#### Request Body

| Name                                 | Type   | Description |
| ------------------------------------ | ------ | ----------- |
| id<mark style="color:red;">\*</mark> | String |             |

## Get browser profile's detail

<mark style="color:green;">`POST`</mark> `/browser/detail`

#### Request Body

| Name | Type   | Description |
| ---- | ------ | ----------- |
| id   | String |             |

{% tabs %}
{% tab title="200: OK eg" %}

```javascript
{
  success: true,
  data: {
    id: '2c9c2dsdsd323xceeeds24a30065',
    seq: 41,
    code: 'd3sdsddddd',
    platform: 'https://www.instagram.com/',
    platformIcon: 'instagram',
    url: 'https%3A%2F%2Fwww.facebook.com%2F,https%3A%2F%2Fwww.amazon.com%2FBest-Sellers%2Fzgbs%2Fref%3Dzg_bs_unv_hpc_0_2314207011_4_sbg_1,https%3A%2F%2Fwww.baidu.com%2F',
    name: 'ins',
    userName: '',
    password: '',
    cookie: '[{"domain":".instagram.com","expirationDate":1680060024.48996,"hostOnly":false,"httpOnly":false,"name":"ig_nrcb","path":"/","secure":true,"session":false,"storeId":null,"value":"1"}]',
    proxyMethod: 2,
    proxyType: 'noproxy',
    agentId: '',
    host: '',
    proxyUserName: '',
    proxyPassword: '',
    lastIp: '221.222.180.190',
    lastCountry: '中国',
    country: '',
    province: '',
    city: '',
    remark: '备注',
    status: 1,
    operUserId: 'sdd3ds',
    operUserName: '3ds3sdee',
    operTime: '2022-04-14 16:11:05',
    isDelete: 0,
    delReason: null,
    isMostCommon: 1,
    tempStr: null,
    createdBy: 'sdfd3ddddd',
    userId: 'sdfd33dddddd',
    createdTime: '2022-03-31 13:44:40',
    updateBy: 'sdfsdf322222',
    updateTime: '2022-04-14 16:11:05',
    mainUserId: 'dfsddded323fdddd',
    browserFingerPrint: {
      id: '2c9c29a27fda71dd017fde8124a90066',
      seq: 41,
      browserId: '2c9c29a27fda71dd017fde8124a30065',
      ostype: 'PC',
      os: 'Win64',
      version: '',
      userAgent: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.3887.132 Safari/537.36',
      isIpCreateTimeZone: true,
      timeZone: '',
      webRTC: '0',
      position: '1',
      isIpCreatePosition: true,
      isIpCreateLanguage: true,
      resolutionType: '0',
      resolution: '',
      fontType: '0',
      canvas: '0',
      webGL: '0',
      webGLMeta: '0',
      webGLManufacturer: 'Intel Inc.',
      webGLRender: 'ANGLE (NVIDIA GeForce GTX 960M Direct3D11 vs_5_0 ps_5_0)',
      audioContext: '0',
      mediaDevice: '0',
      clientRects: '0',
      hardwareConcurrency: '4',
      deviceMemory: '8',
      deviceNameType: '1',
      deviceName: 'DESKTOP-FZEVSE',
      doNotTrack: '1',
      flash: '',
      portScanProtect: '',
      portWhiteList: '',
      isDelete: 0,
      colorDepth: 32,
      devicePixelRatio: 1.2,
      createdBy: 'sdfsdf333',
      createdTime: '2022-03-31 13:44:40',
      updateBy: 'sdfdsfdsf33333',
      updateTime: '2022-03-31 13:45:19'
    },
    createdName: null,
    belongUserName: null,
    updateName: null,
    agentIpCount: 1,
    belongToMe: false,
    ip: ''
  }
}
```

{% endtab %}
{% endtabs %}

### Get browser profiles list

<mark style="color:green;">`POST`</mark> `/browser/list`

Note: page start from 0

#### Request Body

| Name                                       | Type   | Description                                            |
| ------------------------------------------ | ------ | ------------------------------------------------------ |
| page<mark style="color:red;">\*</mark>     | Int    | page, start from 0                                     |
| pageSize<mark style="color:red;">\*</mark> | Int    | max is 100                                             |
| groupId                                    | String |                                                        |
| name                                       | String |                                                        |
| remark                                     | String |                                                        |
| seq                                        | Int    | browser profile's seq                                  |
| minSeq                                     | Int    | min seq, do not use with seq                           |
| maxSeq                                     | Int    | max seq, do not use with seq                           |
| sort                                       | String | Sorting filed, default is "desc", options: desc \| asc |

### Reset browser window bounds

<mark style="color:green;">`POST`</mark> `/windowbounds`

Note that, except for the 'type' parameter, all other parameters must be of integer numeric type. Please refer to the 'windowbounds' object below as an example.

#### Request Body

| Name                                      | Type   | Description                                                                                                                                                    |
| ----------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| type<mark style="color:red;">\*</mark>    | String | box \| diagonal                                                                                                                                                |
| startX<mark style="color:red;">\*</mark>  | Int    | default is 0                                                                                                                                                   |
| startY<mark style="color:red;">\*</mark>  | Int    | default is 0                                                                                                                                                   |
| width<mark style="color:red;">\*</mark>   | Int    | min is 500                                                                                                                                                     |
| height<mark style="color:red;">\*</mark>  | Int    | min is 200                                                                                                                                                     |
| col<mark style="color:red;">\*</mark>     | Int    |                                                                                                                                                                |
| spaceX<mark style="color:red;">\*</mark>  | Int    | Horizontal spacing, default is 0                                                                                                                               |
| spaceY                                    | Int    | Vertical spacing, default is 0                                                                                                                                 |
| offsetX<mark style="color:red;">\*</mark> | Int    | Horizontal offset, default is 0                                                                                                                                |
| offsetY<mark style="color:red;">\*</mark> | Int    | Vertical offset, default is 0                                                                                                                                  |
| seqlist                                   | Array  | Array of profiles indices to be arranged. If not provided, all windows will be arranged.                                                                       |
| screenId                                  | Int    | Display screen ID needs to be arranged on which monitor, just pass the monitor ID. The specific monitor ID can be obtained through the /alldisplays interface. |

### Adaptive window arrangement

<mark style="color:green;">`POST`</mark> `/windowbounds/flexable`

Note that except for 'type', all other parameters must be of integer type. Refer to the following 'windowbounds' object.

**Request Body**

| Name    | Type  | Description                                                         |
| ------- | ----- | ------------------------------------------------------------------- |
| seqlist | Array | Array of window indices to be arranged. If not passed, arrange all. |

## batch update browser profile's group

<mark style="color:green;">`POST`</mark> `/browser/group/update`

#### Request Body

| Name                                         | Type   | Description |
| -------------------------------------------- | ------ | ----------- |
| groupId<mark style="color:red;">\*</mark>    | String |             |
| browserIds<mark style="color:red;">\*</mark> | Array  | profile ids |

## Batch update browser's proxy

<mark style="color:green;">`POST`</mark> `/browser/proxy/update`

#### Request Body

| Name                                             | Type    | Description                                                  |
| ------------------------------------------------ | ------- | ------------------------------------------------------------ |
| ids<mark style="color:red;">\*</mark>            | Array   | browser ids                                                  |
| ipCheckService<mark style="color:red;">\*</mark> | String  | options: ip-api \| ip123in \| luminati, default is ip-api    |
| proxyMethod<mark style="color:red;">\*</mark>    | int     | options: 2 \| 3, default is 2, 3 is extract proxy ip         |
| proxyType                                        | String  | noproxy\|http\|https\|socks5\|ssh, default is noproxy        |
| host                                             | String  |                                                              |
| proxyUserName                                    | String  |                                                              |
| proxyPassword                                    | String  |                                                              |
| dynamicIpUrl                                     | String  | extraction link                                              |
| dynamicIpChannel                                 | String  | extraction provider, options: rola\|ipidea\|deoveip\|cloudam |
| isDynamicIpChangeIp                              | Boolean | default is true                                              |
| isGlobalProxyInfo                                | Boolean | default is false                                             |
| port                                             | Int     |                                                              |
| isIpv6                                           | Boolean | default is false                                             |

## Batch update remarks of  browser profiles

<mark style="color:green;">`POST`</mark> `/browser/remark/update`

#### Request Body

| Name                                         | Type   | Description |
| -------------------------------------------- | ------ | ----------- |
| browserIds<mark style="color:red;">\*</mark> | Array  |             |
| remark<mark style="color:red;">\*</mark>     | String |             |

## Close browsers by seq

<mark style="color:green;">`POST`</mark> `/browser/close/byseqs`

#### Request Body

| Name                                   | Type  | Description                                     |
| -------------------------------------- | ----- | ----------------------------------------------- |
| seqs<mark style="color:red;">\*</mark> | Array | browser seqs you want to close：\[101, 103, 105] |

## Close all opened profiles

<mark style="color:green;">`POST`</mark> `/browser/close/all`

close all opened profiles, no params.

## Get opened browser's pids

<mark style="color:green;">`POST`</mark> `/browser/pids`

#### Request Body

| Name                                  | Type  | Description         |
| ------------------------------------- | ----- | ------------------- |
| ids<mark style="color:red;">\*</mark> | Array | browser profile ids |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "success": true,
    "data": {
        "02d39dd4f9c54e40bc1ef51929d27235": 69902,
        "39dd4f4e40bc1ef51929d27232sdf3ds": 84773
    }
}
```

{% endtab %}
{% endtabs %}

## Get all alived browser's pids

<mark style="color:green;">`POST`</mark> `/browser/pids/all`

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "81ec99fc222148dbae513597dfaa4333": 12212,
    "10702539009b4d90a862c78aed2c98c9": 32342
}
```

{% endtab %}
{% endtabs %}

## Delete browser profiles by ids, up to 100, delete completely includes cache files.

<mark style="color:green;">`POST`</mark> `/browser/delete/ids`

#### Request Body

| Name                                  | Type  | Description |
| ------------------------------------- | ----- | ----------- |
| ids<mark style="color:red;">\*</mark> | Array | profile ids |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Clear browser cache files

<mark style="color:green;">`POST`</mark> `/cache/clear`

Note: will clear local cache files and cloud files.

#### Request Body

| Name | Type  | Description                                                        |
| ---- | ----- | ------------------------------------------------------------------ |
| ids  | Array | profile ids collection, like \['sdsdflk32dsdkl232l3ldsldk3kdksdk'] |

## Get all opened profile's remote-debugging-port

<mark style="color:green;">`POST`</mark> `/browser/ports`

{% tabs %}
{% tab title="200: OK " %}

```
{
    "success": true,
    "data": {
        "8caf925feebb4d2fb0bfd79ed9591e11": "64170",
        "c6925679d4e848a59e7ec49e44184013": "64217"
    }
}
```

{% endtab %}
{% endtabs %}

## Proxy detection API can be used to query proxy information and check the availability of proxies.&#x20;

<mark style="color:green;">`POST`</mark> `/checkagent`

Note that if the IP needs to be used under a global proxy, global proxy settings must be enabled.

#### Request Body

| Name                                        | Type   | Description                                  |
| ------------------------------------------- | ------ | -------------------------------------------- |
| host<mark style="color:red;">\*</mark>      | String | proxy host                                   |
| port<mark style="color:red;">\*</mark>      | String | proxy port                                   |
| proxyType<mark style="color:red;">\*</mark> | String | Choose one among noproxy, socks5, ssh, http. |
| proxyUserName                               | String |                                              |
| proxyPassword                               | String |                                              |
| checkExists                                 | Int    | Check if the ip used in system, 1 or 0       |

{% tabs %}
{% tab title="200: OK " %}

```
{
    "success": true,
    "data": {
        "success": true,
        "data": {
            "ip": "94.154.157.98",
            "countryName": "英国(GB)",
            "stateProv": "England(ENG)",
            "countryCode": "GB",
            "region": "ENG",
            "city": "London",
            "languages": "en-GB",
            "timeZone": "Europe/London",
            "offset": "1",
            "longitude": "-0.0991",
            "latitude": "51.5269",
            "zip": "EC1V",
            "status": 1,
            "used": false,
            "usedTime": null
        }
    }
}
```

{% endtab %}
{% endtabs %}

## Random fingerprint value - provide the profile ID, generate a random fingerprint once, and return the fingerprint object.&#x20;

<mark style="color:green;">`POST`</mark> `/browser/fingerprint/random`

Note that it doesn't return the browser object, only the fingerprint object.

#### Request Body

| Name                                        | Type   | Description        |
| ------------------------------------------- | ------ | ------------------ |
| browserId<mark style="color:red;">\*</mark> | String | browser profile id |

## Clear cache without extensions and extension's data

<mark style="color:green;">`POST`</mark> `/cache/clear/exceptExtensions`

#### Request Body

| Name | Type  | Description |
| ---- | ----- | ----------- |
| ids  | Array | profile ids |

## Get all displays

<mark style="color:green;">`POST`</mark> `/alldisplays`

Get all screen displays, no request data.

## Run RPA task

<mark style="color:green;">`POST`</mark> `/rpa/run`

**Body**

<table><thead><tr><th width="131">Name</th><th width="125">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>id</code></td><td>string</td><td>RPA task ID. Copy it from the RPA management interface, specifically from the edit RPA task section.</td></tr></tbody></table>

## Stop RPA task

<mark style="color:green;">`POST`</mark> `/rpa/stop`

**Body**

<table><thead><tr><th width="112">Name</th><th width="121">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>id</code></td><td>string</td><td>RPA task ID. Copy it from the RPA management interface, specifically from the edit RPA task section.</td></tr></tbody></table>

## Autopaste

<mark style="color:green;">`POST`</mark> `/autopaste`

It will automatically delay inputting the text from the clipboard into the focused input field on the page. Note: There must be a focused input field on the page, otherwise, input will not be possible.

**Body**

| Name        | Type   | Description          |
| ----------- | ------ | -------------------- |
| `browserId` | string | Browser profile's ID |
| `url`       | string | The browser tab url  |

## Read local excel file

<mark style="color:green;">`POST`</mark> `/utils/readexcel`

**Body**

<table><thead><tr><th width="169">Name</th><th width="123">Type</th><th>Description</th></tr></thead><tbody><tr><td>filepath</td><td>string</td><td>Required, the excel file's path, eg: C:\Users\User\Downloads\abc.xlsx</td></tr></tbody></table>

## Read the content of text-based files, such as JSON, TXT, and other text files.

<mark style="color:green;">`POST`</mark> `/utils/readfile`

**Body**

<table><thead><tr><th width="129">Name</th><th width="118">Type</th><th>Description</th></tr></thead><tbody><tr><td>filepath</td><td>string</td><td>Required, eg: C:\Users\User\Downloads\abc.json</td></tr></tbody></table>

## Set real-time cookies for the opened profile

<mark style="color:green;">`POST`</mark> `/`browser/cookies/set

**Body**

<table><thead><tr><th width="145">Name</th><th width="115">Type</th><th>Description</th></tr></thead><tbody><tr><td>browserId</td><td>string</td><td>Required, browser profile's ID</td></tr><tr><td>cookies</td><td>array</td><td>The array of cookies to be set must follow the standard cookies format. Please refer to the appendix for details.</td></tr></tbody></table>

## Retrieve real-time cookies for the opened profile

<mark style="color:green;">`POST`</mark> `/`browser/cookies/get

Note that real-time cookies may change continuously, so the values retrieved in two separate instances might differ.

**Body**

| Name      | Type   | Description                    |
| --------- | ------ | ------------------------------ |
| browserId | string | Required, browser profile's ID |

## Clear cookies. Supported in client versions 7.0.2 and above

<mark style="color:green;">`POST`</mark> `/`browser/cookies/clear

This interface can clear cookies from local cache regardless of whether the window is open. Cookies synchronized to the server are controlled by the `saveSynced` field, with the default being to clear both local and server-side cookies.

**Body**

<table><thead><tr><th width="179">Name</th><th width="135">Type</th><th>Description</th></tr></thead><tbody><tr><td>browserId</td><td>string</td><td>Required, browser profile's ID</td></tr><tr><td>saveSynced</td><td>boolean</td><td>Whether to retain cookies synchronized to the server from the window. The default is <code>true</code></td></tr></tbody></table>

## Format the given cookie

<mark style="color:green;">`POST`</mark> `/`browser/cookies/format

**Body**

<table><thead><tr><th width="143">Name</th><th width="134">Type</th><th>Description</th></tr></thead><tbody><tr><td>cookie</td><td>string | array</td><td>The given cookie data may be in the form of an array, string, etc.</td></tr><tr><td>hostname</td><td>number</td><td>The <code>domain</code> value of a cookie. For some cookies that do not include a <code>domain</code> value, you need to manually specify the <code>hostname</code>, for example, <code>.abc.com</code>. Most cookies do not require a specific <code>domain</code> to be set.</td></tr></tbody></table>

#### Windowbounds object

```
{
  "type": "box", // box | diagonal
  "startX": 0,
  "startY": 0,
  "width": 500,
  "height": 300,
  "col": 4,
  "spaceX": 0,
  "spaceY": 0,
  "offsetX": 50,
  "offsetY": 50
}
```

#### browserFingerPrint Object

```
{
  coreProduct: 'chrome', // chrome | firefox
  coreVersion: '126', // chromium version. options: 126 | 124 | 122 | 118 | 112 | 104
  ostype: 'PC', // PC|Android|IOS
  os: 'Win32', //  For navigator.platform values like Win32, Linux x86_64, or MacIntel, set os to iPhone when ostype is set to iOS, and set os to Linux armv81 when ostype is set to Android.
  osVersion: '', // Operating system version, when left blank, will be randomized based on the OS. If filled, it will be randomized within the provided value range. Windows options: 11|10|8|7, Android options: 13|12|11|10|9, iOS options: 17.0|16.6|16.5|16.4|16.3|16.2|16.1|16.0|15.7|15.6|15.5
  version: '', // ua version, recommended 96 or later
  userAgent: '', // leave blank to automatically gernerate
  isIpCreateTimeZone: true, // Generate time zone based on IP
  timeZone: '', // set when isIpCreateTimeZone is false
  timeZoneOffset: 0, // set when isIpCreateTimeZone is false
  webRTC: '0', //webrtc 0(replace)|1(allow)|2(disable)
  ignoreHttpsErrors: false, // true|false
  position: '1', //geoLocation 0(ask)|1(allow)|2(forbidden)
  isIpCreatePosition: true, // generate geoLocation based on IP
  lat: '', // set when isIpCreatePosition is false
  lng: '', // set when isIpCreatePosition is false
  precisionData: '', // set when isIpCreatePosition is false, meters
  isIpCreateLanguage: true, // generate language based on IP
  languages: '', // set when isIpCreateLanguage is false
  isIpCreateDisplayLanguage: false, // generate display language based on IP
  displayLanguages: '', // set when isIpCreateDisplayLanguage is false, default to blank, follow system's setting.
  openWidth: 1280, // browser window width
  openHeight: 720, // browser window height
  resolutionType: '0', // resolution type options: 0(follow system) | 1(custom)
  resolution: '1920 x 1080', // custom value
  windowSizeLimit: true, // when resolutionType is "1" and ostype is "PC", set true to limit the maximum window size to the resolution.
  devicePixelRatio: 1, // 1｜1.5|2|2.5|3
  fontType: '2', // generate font type 0(follow system)|1(custom)|2(random by service)
  font: '', // when fontType is "1" or "2", set this value
  canvas: '0', // 0(noise)｜1(disable)
  canvasValue: null, // canvas is '0', set 10000 - 1000000
  webGL: '0', // 0(noise)｜1(disable)
  webGLValue: null, // when webGL is "0", set 10000 - 1000000
  webGLMeta: '0', // 0(noise)｜1(disable)
  webGLManufacturer: '', // when webGLMeta is '0', if left blank, it will be automatically generated, refer to Appendix
  webGLRender: '', // when webGLMeta is '0', if left blank, it will be automatically generated, refer to Appendix
  audioContext: '0', // 0(noise)｜1(disable)
  audioContextValue: null, // when audioContext is '0', set 1 - 100
  mediaDevice: '0', // 0(noise)｜1(disable)
  mediaDeviceValue: null, // when mediaDevice is '0', leave blank to automatically generate
  speechVoices: '0', // 0(noise)｜1(disable)
  speechVoicesValue: null, // when speechVoices is '0', leave blank to automatically generate
  hardwareConcurrency: '4',
  deviceMemory: '8', // 2|4|8 do not greater than 8
  doNotTrack: '1', // 0(enable)｜1(disable)
  clientRectNoiseEnabled: true, // true(replace) | false(follow system)
  clientRectNoiseValue: 0, // when clientRectNoiseEnabled is true, set 1 - 999999
  portScanProtect: '0', // 0(enable)｜1(disable)
  portWhiteList: '', // portscan whitelist, separate by comma
  deviceInfoEnabled: true, // default is true
  computerName: '', // set when deviceInfoEnabled is true
  macAddr: '', // set when deviceInfoEnabled is true
  disableSslCipherSuitesFlag: false, // default is false. Note that some websites may not be accessible when customizing settings after opening
  disableSslCipherSuites: null, // ssl features, refer to Appendix
  enablePlugins: false, // default is false
  plugins: '' // set when enablePlugins is true, refer to Appendix
}
```


# Groups

add, update and delete group infos.

## goup list

<mark style="color:green;">`POST`</mark> `/group/list`

#### Request Body

| Name                                       | Type | Description |
| ------------------------------------------ | ---- | ----------- |
| page<mark style="color:red;">\*</mark>     | Int  | from 0      |
| pageSize<mark style="color:red;">\*</mark> | Int  | eg: 10      |

## add a new group

<mark style="color:green;">`POST`</mark> `/group/add`

Add group

#### Request Body

| Name                                        | Type   | Description |
| ------------------------------------------- | ------ | ----------- |
| groupName<mark style="color:red;">\*</mark> | String |             |
| sortNum                                     | Int    | sort by asc |

## update group info

<mark style="color:green;">`POST`</mark> `/group/edit`

#### Request Body

| Name                                        | Type   | Description         |
| ------------------------------------------- | ------ | ------------------- |
| id<mark style="color:red;">\*</mark>        | String | group ID            |
| groupName<mark style="color:red;">\*</mark> | String |                     |
| sortNum                                     | Int    | sort by new sortNum |

## delete a exist group by id

<mark style="color:green;">`POST`</mark> `/group/delete`

#### Request Body

| Name                                 | Type   | Description |
| ------------------------------------ | ------ | ----------- |
| id<mark style="color:red;">\*</mark> | String |             |

## get group detail

<mark style="color:green;">`POST`</mark> `/group/detail`

#### Request Body

| Name                                 | Type   | Description |
| ------------------------------------ | ------ | ----------- |
| id<mark style="color:red;">\*</mark> | String |             |


# Example of interface request parameters

The following interface parameters are all example parameters, showing only partial fields. For detailed fields, please refer to the specific corresponding interface document.

### Create a Windows profile

```json
// /browser/update
{
    "name": "windows browser",
    "browserFingerPrint": {
        "coreVersion": "122",
        "ostype": "PC",
        "os": "Win32",
        "osVersion": "11,10"
    },
    "proxyMethod": 2,
    "proxyType": "noproxy"
}
```

### Create a Mac profile

```json
// /browser/update
{
    "name": "mac browser",
    "browserFingerPrint": {
        "coreVersion": "118",
        "ostype": "PC",
        "os": "MacIntel",
        "hardwareConcurrency": "10"
    },
    "proxyMethod": 2,
    "proxyType": "noproxy"
}
```

### Create a iPhone profile

```json
// /browser/update
{
    "name": "iphone browser",
    "browserFingerPrint": {
        "coreVersion": "118",
        "ostype": "IOS",
        "os": "iPhone",
        "openWidth": 500,
        "openHeight": 900,
        "resolutionType": "1",
        "resolution": "360x780",
        "devicePixelRatio": 3
    },
    "proxyMethod": 2,
    "proxyType": "noproxy"
}
```

### Create a Android profile

```json
// /browser/update
{
    "name": "android browser",
    "browserFingerPrint": {
        "coreVersion": "118",
        "ostype": "Android",
        "os": "Linux armv81",
        "openWidth": 500,
        "openHeight": 900,
        "resolutionType": "1",
        "resolution": "360x780",
        "devicePixelRatio": 2
    },
    "proxyMethod": 2,
    "proxyType": "noproxy"
}
```

### Update profile, without fingerprint

```json
// /browser/update/partial
// To modify profile's information as needed, you would need to pass the corresponding fields. For instance, if you want to change the profile's name, you would pass the 'name' field. If you need to modify the remarks, you would pass the 'remark' field. Fields that do not need to be changed should not be passed. The specific fields are the same as those in the '/browser/update' interface."
{
    "ids": [
        "d2fc7636d01b4943a3c3bd2187ca2272"
    ],
    "name": "I am new name",
    "browserFingerPrint": {} // 不修改指纹，则无需传入指纹配置
}
```

### Update profile's fingerprint info

```json
// /browser/update/partial
// To modify profile's fingerprint information as needed, ensure that when changing the device type, for example, from PC to Android, all relevant fields are updated accordingly. Please refer to the following example.
{
    "ids": [
        "d1982fc6322545d4a372275238b65c2f"
    ],
    "browserFingerPrint": {
        "coreVersion": "118",
        "ostype": "Android",
        "os": "Linux armv81",
        "version": "",
        "osVersion": "",
        "platformVersion": "9.0.0",
        "batchRandom": true,
        "batchUpdateFingerPrint": true
    }
}
```

### Create a profile, and set a socks5 proxy

```json
{
    "name": "windows browser",
    "browserFingerPrint": {
        "coreVersion": "122",
        "ostype": "PC",
        "os": "Win32",
        "osVersion": "11,10"
    },
    "proxyMethod": 2,
    "proxyType": "socks5",
    "host": "1.2.3.4",
    "port": 1020,
    "proxyUserName": "abc",
    "proxyPassword": "def"
}
```

### Create a profile, and set a extract ip proxy infomation

```json
{
    "name": "windows browser",
    "browserFingerPrint": {
        "coreVersion": "118",
        "ostype": "PC",
        "os": "Win32",
        "osVersion": "11,10"
    },
    "ipCheckService": "ip123in",
    "proxyMethod": 3,
    "proxyType": "socks5",
    "dynamicIpUrl": "http://example.tiquip.com/extractip",
    "dynamicIpChannel": "common",
    "isDynamicIpChangeIp": true
}
```


# Local Library Data Interface

> **Note:** The local library data interface is independent of the client and operates completely separately. It is a standalone logging system. The recorded data can be viewed on the “Operation Log > Local Library Data” page and can also be queried using the API. This feature helps script authors and users in logging custom data, or can serve as a simple local database.

### Paginated Query of Log List

**POST**: `/extralog/list`

```json
// Example of request body
{
  "page": 0,
  "page_size": 10,
  "search_key": "",
  "search_value": "",
  "order_by": "desc"
}
```

* Parameter Details

| Parameter     | Type   | Required | Description                                                           |
| ------------- | ------ | -------- | --------------------------------------------------------------------- |
| page          | int    | Yes      | Page number, starting from 0                                          |
| page\_size    | int    | Yes      | Number of records per page, default is 10                             |
| search\_key   | string | Yes      | Search field, specific fields refer to the add interface              |
| search\_value | string | Yes      | Search value for the field, performs fuzzy search based on this value |
| order\_by     | string | No       | Sorting parameter, default is by id, options: desc or asc ｜ asc       |

### Add Log

**POST**: `/extralog/add`

```json
// Example of request body
{
  "log_key": "666",
  "log_name": "i am name",
  "log_value": "de333f",
  "log_type": "Browser",
  "log_desc": "i am a desc",
  "log_remark": "remark",
  "log_extra_info": "Custom info content, can store serialized structured data like stringified JSON"
}
```

* Parameter Details

| Parameter        | Type   | Required | Description                                                                                   |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------- |
| log\_name        | string | Yes      | Custom name name                                                                              |
| log\_key         | string | Yes      | Custom key, allows the user to generate a unique key for each record, making it easier to use |
| log\_type        | string | Yes      | Custom type, logs can be categorized for easier searching                                     |
| log\_value       | string | Yes      | Custom value, can be used for storing values or other data                                    |
| log\_desc        | string | No       | Custom description desc                                                                       |
| log\_remark      | string | No       | Custom remark remark                                                                          |
| log\_extra\_info | string | No       | Custom info content, can store serialized structured data like stringified JSON               |

### Update Log

The update interface fields are the same as the add interface. You must include the id field, and only the fields that need to be modified should be provided. There is no need to pass all fields.

```json
// Example of request body
{
  "id": 122,
  "log_name": "I'm log name"
}
```

* Parameter Details

| Parameter | Type   | Required | Description                                         |
| --------- | ------ | -------- | --------------------------------------------------- |
| id        | int    | Yes      | Record ID                                           |
| ...       | string | No       | Other fields are the same as in the Add Log section |

### Delete Log

**POST**: `/extralog/delete`

```json
// Example of request body
{
  "id": 12
}
```

### Get Log Details

**POST**: `/extralog/detail`

````json
// Example of request body
{
  "id": 12,
  "name": "dsds"
}

```
// 返回详情数据示例
{
  "success": true,
  "data": {
    "id": 8,
    "log_username": "username",
    "log_userid": "3dsd3dsdd3dsdsdssds3dsssddsdsd",
    "created_time": "2024-07-03 10:11:32",
    "log_name": "i am name",
    "log_key": "33",
    "log_type": "Browser",
    "log_value": "Log value",
    "log_desc": "i am a desc",
    "log_remark": "remark",
    "log_extra_info": "0.0"
}
}
````

### Clear All Log Records (No Parameters)

> **Warning:** This interface will clear all local log data. This action cannot be undone, so use it with caution.

**POST**: `/extralog/clear`


# Appendix

Provide options for relevant parameters during interface call

### Country code

````
```javascript
[
  {
    cid: 'AD',
    cname: '安道尔共和国',
    areaCode: '376',
    enName: 'Andorra'
  },
  {
    cid: 'AE',
    cname: '阿拉伯联合酋长国',
    areaCode: '971',
    enName: 'United Arab Emirates'
  },
  {
    cid: 'AF',
    cname: '阿富汗',
    areaCode: '93',
    enName: 'Afghanistan'
  },
  {
    cid: 'AG',
    cname: '安提瓜和巴布达',
    areaCode: '1268',
    enName: 'Antigua & Barbuda'
  },
  {
    cid: 'AI',
    cname: '安圭拉岛',
    areaCode: '1264',
    enName: 'Anguilla'
  },
  {
    cid: 'AL',
    cname: '阿尔巴尼亚',
    areaCode: '355',
    enName: 'Albania'
  },
  {
    cid: 'AM',
    cname: '亚美尼亚',
    areaCode: '374',
    enName: 'Armenia'
  },
  {
    cid: 'AO',
    cname: '安哥拉',
    areaCode: '244',
    enName: 'Angola'
  },
  {
    cid: 'AR',
    cname: '阿根廷',
    areaCode: '54',
    enName: 'Argentina'
  },
  {
    cid: 'AT',
    cname: '奥地利',
    areaCode: '43',
    enName: 'Austria'
  },
  {
    cid: 'AU',
    cname: '澳大利亚',
    areaCode: '61',
    enName: 'Australia'
  },
  {
    cid: 'AZ',
    cname: '阿塞拜疆',
    areaCode: '994',
    enName: 'Azerbaijan'
  },
  {
    cid: 'BB',
    cname: '巴巴多斯',
    areaCode: '1246',
    enName: 'Barbados'
  },
  {
    cid: 'BD',
    cname: '孟加拉国',
    areaCode: '880',
    enName: 'Bangladesh'
  },
  {
    cid: 'BE',
    cname: '比利时',
    areaCode: '32',
    enName: 'Belgium'
  },
  {
    cid: 'BF',
    cname: '布基纳法索',
    areaCode: '226',
    enName: 'Burkina'
  },
  {
    cid: 'BG',
    cname: '保加利亚',
    areaCode: '359',
    enName: 'Bulgaria'
  },
  {
    cid: 'BH',
    cname: '巴林',
    areaCode: '973',
    enName: 'Bahrain'
  },
  {
    cid: 'BI',
    cname: '布隆迪',
    areaCode: '257',
    enName: 'Burundi'
  },
  {
    cid: 'BJ',
    cname: '贝宁',
    areaCode: '229',
    enName: 'Benin'
  },
  {
    cid: 'BL',
    cname: '巴勒斯坦',
    areaCode: '970',
    enName: 'Saint Barthélemy'
  },
  {
    cid: 'BM',
    cname: '百慕大群岛',
    areaCode: '1441',
    enName: 'Bermuda'
  },
  {
    cid: 'BN',
    cname: '文莱',
    areaCode: '673',
    enName: 'Brunei'
  },
  {
    cid: 'BO',
    cname: '玻利维亚',
    areaCode: '591',
    enName: 'Bolivia'
  },
  {
    cid: 'BR',
    cname: '巴西',
    areaCode: '55',
    enName: 'Brazil'
  },
  {
    cid: 'BS',
    cname: '巴哈马',
    areaCode: '1242',
    enName: 'The Bahamas'
  },
  {
    cid: 'BW',
    cname: '博茨瓦纳',
    areaCode: '267',
    enName: 'Botswana'
  },
  {
    cid: 'BY',
    cname: '白俄罗斯',
    areaCode: '375',
    enName: 'Belarus'
  },
  {
    cid: 'BZ',
    cname: '伯利兹',
    areaCode: '501',
    enName: 'Belize'
  },
  {
    cid: 'CA',
    cname: '加拿大',
    areaCode: '1',
    enName: 'Canada'
  },
  {
    cid: 'CF',
    cname: '中非共和国',
    areaCode: '236',
    enName: 'Central African Republic'
  },
  {
    cid: 'CG',
    cname: '刚果',
    areaCode: '242',
    enName: 'Republic of the Congo'
  },
  {
    cid: 'CH',
    cname: '瑞士',
    areaCode: '41',
    enName: 'Switzerland'
  },
  {
    cid: 'CK',
    cname: '库克群岛',
    areaCode: '682',
    enName: 'Cook Islands'
  },
  {
    cid: 'CL',
    cname: '智利',
    areaCode: '56',
    enName: 'Chile'
  },
  {
    cid: 'CM',
    cname: '喀麦隆',
    areaCode: '237',
    enName: 'Cameroon'
  },
  {
    cid: 'CN',
    cname: '中国',
    areaCode: '86',
    enName: 'China'
  },
  {
    cid: 'CO',
    cname: '哥伦比亚',
    areaCode: '57',
    enName: 'Colombia'
  },
  {
    cid: 'CR',
    cname: '哥斯达黎加',
    areaCode: '506',
    enName: 'Costa Rica'
  },
  {
    cid: 'CS',
    cname: '捷克',
    areaCode: '420',
    enName: 'Czech Republic'
  },
  {
    cid: 'CU',
    cname: '古巴',
    areaCode: '53',
    enName: 'Cuba'
  },
  {
    cid: 'CY',
    cname: '塞浦路斯',
    areaCode: '357',
    enName: 'Cyprus'
  },
  {
    cid: 'CZ',
    cname: '捷克',
    areaCode: '420',
    enName: 'Czech Republic'
  },
  {
    cid: 'DE',
    cname: '德国',
    areaCode: '49',
    enName: 'Germany'
  },
  {
    cid: 'DJ',
    cname: '吉布提',
    areaCode: '253',
    enName: 'Djibouti'
  },
  {
    cid: 'DK',
    cname: '丹麦',
    areaCode: '45',
    enName: 'Denmark'
  },
  {
    cid: 'DO',
    cname: '多米尼加共和国',
    areaCode: '1890',
    enName: 'Dominican Republic'
  },
  {
    cid: 'DZ',
    cname: '阿尔及利亚',
    areaCode: '213',
    enName: 'Algeria'
  },
  {
    cid: 'EC',
    cname: '厄瓜多尔',
    areaCode: '593',
    enName: 'Ecuador'
  },
  {
    cid: 'EE',
    cname: '爱沙尼亚',
    areaCode: '372',
    enName: 'Estonia'
  },
  {
    cid: 'EG',
    cname: '埃及',
    areaCode: '20',
    enName: 'Egypt'
  },
  {
    cid: 'ES',
    cname: '西班牙',
    areaCode: '34',
    enName: 'Spain'
  },
  {
    cid: 'ET',
    cname: '埃塞俄比亚',
    areaCode: '251',
    enName: 'Ethiopia'
  },
  {
    cid: 'FI',
    cname: '芬兰',
    areaCode: '358',
    enName: 'Finland'
  },
  {
    cid: 'FJ',
    cname: '斐济',
    areaCode: '679',
    enName: 'Fiji'
  },
  {
    cid: 'FR',
    cname: '法国',
    areaCode: '33',
    enName: 'France'
  },
  {
    cid: 'GA',
    cname: '加蓬',
    areaCode: '241',
    enName: 'Gabon'
  },
  {
    cid: 'GB',
    cname: '英国',
    areaCode: '44',
    enName: 'Great Britain'
  },
  {
    cid: 'GD',
    cname: '格林纳达',
    areaCode: '1809',
    enName: 'Grenada'
  },
  {
    cid: 'GE',
    cname: '格鲁吉亚',
    areaCode: '995',
    enName: 'Georgia'
  },
  {
    cid: 'GF',
    cname: '法属圭亚那',
    areaCode: '594',
    enName: 'French Guiana'
  },
  {
    cid: 'GH',
    cname: '加纳',
    areaCode: '233',
    enName: 'Ghana'
  },
  {
    cid: 'GI',
    cname: '直布罗陀',
    areaCode: '350',
    enName: 'Gibraltar'
  },
  {
    cid: 'GM',
    cname: '冈比亚',
    areaCode: '220',
    enName: 'Gambia'
  },
  {
    cid: 'GN',
    cname: '几内亚',
    areaCode: '224',
    enName: 'Guinea'
  },
  {
    cid: 'GR',
    cname: '希腊',
    areaCode: '30',
    enName: 'Greece'
  },
  {
    cid: 'GT',
    cname: '危地马拉',
    areaCode: '502',
    enName: 'Guatemala'
  },
  {
    cid: 'GU',
    cname: '关岛',
    areaCode: '1671',
    enName: 'Guam'
  },
  {
    cid: 'GY',
    cname: '圭亚那',
    areaCode: '592',
    enName: 'Guyana'
  },
  {
    cid: 'HK',
    cname: '中国香港特别行政区',
    areaCode: '852',
    enName: 'China Hong Kong'
  },
  {
    cid: 'HN',
    cname: '洪都拉斯',
    areaCode: '504',
    enName: 'Honduras'
  },
  {
    cid: 'HT',
    cname: '海地',
    areaCode: '509',
    enName: 'Haiti'
  },
  {
    cid: 'HU',
    cname: '匈牙利',
    areaCode: '36',
    enName: 'Hungary'
  },
  {
    cid: 'ID',
    cname: '印度尼西亚',
    areaCode: '62',
    enName: 'Indonesia'
  },
  {
    cid: 'IE',
    cname: '爱尔兰',
    areaCode: '353',
    enName: 'Ireland'
  },
  {
    cid: 'IL',
    cname: '以色列',
    areaCode: '972',
    enName: 'Israel'
  },
  {
    cid: 'IN',
    cname: '印度',
    areaCode: '91',
    enName: 'India'
  },
  {
    cid: 'IQ',
    cname: '伊拉克',
    areaCode: '964',
    enName: 'Iraq'
  },
  {
    cid: 'IR',
    cname: '伊朗',
    areaCode: '98',
    enName: 'Iran'
  },
  {
    cid: 'IS',
    cname: '冰岛',
    areaCode: '354',
    enName: 'Iceland'
  },
  {
    cid: 'IT',
    cname: '意大利',
    areaCode: '39',
    enName: 'Italy'
  },
  {
    cid: 'JM',
    cname: '牙买加',
    areaCode: '1876',
    enName: 'Jamaica'
  },
  {
    cid: 'JO',
    cname: '约旦',
    areaCode: '962',
    enName: 'Jordan'
  },
  {
    cid: 'JP',
    cname: '日本',
    areaCode: '81',
    enName: 'Japan'
  },
  {
    cid: 'KE',
    cname: '肯尼亚',
    areaCode: '254',
    enName: 'Kenya'
  },
  {
    cid: 'KG',
    cname: '吉尔吉斯坦',
    areaCode: '331',
    enName: 'Kyrgyzstan'
  },
  {
    cid: 'KH',
    cname: '柬埔寨',
    areaCode: '855',
    enName: 'Cambodia'
  },
  {
    cid: 'KP',
    cname: '朝鲜',
    areaCode: '850',
    enName: 'North Korea'
  },
  {
    cid: 'KR',
    cname: '韩国',
    areaCode: '82',
    enName: 'South Korea'
  },
  {
    cid: 'KT',
    cname: '科特迪瓦共和国',
    areaCode: '225',
    enName: "The Republic of Côte d'Ivoire"
  },
  {
    cid: 'KW',
    cname: '科威特',
    areaCode: '965',
    enName: 'Kuwait'
  },
  {
    cid: 'LA',
    cname: '老挝',
    areaCode: '856',
    enName: 'Laos'
  },
  {
    cid: 'LB',
    cname: '黎巴嫩',
    areaCode: '961',
    enName: 'Lebanon'
  },
  {
    cid: 'LC',
    cname: '圣卢西亚',
    areaCode: '1758',
    enName: 'St. Lucia'
  },
  {
    cid: 'LI',
    cname: '列支敦士登',
    areaCode: '423',
    enName: 'Liechtenstein'
  },
  {
    cid: 'LK',
    cname: '斯里兰卡',
    areaCode: '94',
    enName: 'Sri Lanka'
  },
  {
    cid: 'LR',
    cname: '利比里亚',
    areaCode: '231',
    enName: 'Liberia'
  },
  {
    cid: 'LS',
    cname: '莱索托',
    areaCode: '266',
    enName: 'Lesotho'
  },
  {
    cid: 'LT',
    cname: '立陶宛',
    areaCode: '370',
    enName: 'Lithuania'
  },
  {
    cid: 'LU',
    cname: '卢森堡',
    areaCode: '352',
    enName: 'Luxembourg'
  },
  {
    cid: 'LV',
    cname: '拉脱维亚',
    areaCode: '371',
    enName: 'Latvia'
  },
  {
    cid: 'LY',
    cname: '利比亚',
    areaCode: '218',
    enName: 'Libya'
  },
  {
    cid: 'MA',
    cname: '摩洛哥',
    areaCode: '212',
    enName: 'Morocco'
  },
  {
    cid: 'MC',
    cname: '摩纳哥',
    areaCode: '377',
    enName: 'Monaco'
  },
  {
    cid: 'MD',
    cname: '摩尔多瓦',
    areaCode: '373',
    enName: 'Moldova'
  },
  {
    cid: 'MG',
    cname: '马达加斯加',
    areaCode: '261',
    enName: 'Madagascar'
  },
  {
    cid: 'ML',
    cname: '马里',
    areaCode: '223',
    enName: 'Mali'
  },
  {
    cid: 'MM',
    cname: '缅甸',
    areaCode: '95',
    enName: 'Myanmar (Burma)'
  },
  {
    cid: 'MN',
    cname: '蒙古',
    areaCode: '976',
    enName: 'Mongolia'
  },
  {
    cid: 'MO',
    cname: '中国澳门特别行政区',
    areaCode: '853',
    enName: 'China Macao'
  },
  {
    cid: 'MS',
    cname: '蒙特塞拉特岛',
    areaCode: '1664',
    enName: 'Montserrat'
  },
  {
    cid: 'MT',
    cname: '马耳他',
    areaCode: '356',
    enName: 'Malta'
  },
  {
    cid: 'MU',
    cname: '毛里求斯',
    areaCode: '230',
    enName: 'Mauritius'
  },
  {
    cid: 'MV',
    cname: '马尔代夫',
    areaCode: '960',
    enName: 'Maldives'
  },
  {
    cid: 'MW',
    cname: '马拉维',
    areaCode: '265',
    enName: 'Malawi'
  },
  {
    cid: 'MX',
    cname: '墨西哥',
    areaCode: '52',
    enName: 'Mexico'
  },
  {
    cid: 'MY',
    cname: '马来西亚',
    areaCode: '60',
    enName: 'Malaysia'
  },
  {
    cid: 'MZ',
    cname: '莫桑比克',
    areaCode: '258',
    enName: 'Mozambique'
  },
  {
    cid: 'NA',
    cname: '纳米比亚',
    areaCode: '264',
    enName: 'Namibia'
  },
  {
    cid: 'NE',
    cname: '尼日尔',
    areaCode: '977',
    enName: 'Niger'
  },
  {
    cid: 'NG',
    cname: '尼日利亚',
    areaCode: '234',
    enName: 'Nigeria'
  },
  {
    cid: 'NI',
    cname: '尼加拉瓜',
    areaCode: '505',
    enName: 'Nicaragua'
  },
  {
    cid: 'NL',
    cname: '荷兰',
    areaCode: '31',
    enName: 'Netherlands'
  },
  {
    cid: 'NO',
    cname: '挪威',
    areaCode: '47',
    enName: 'Norway'
  },
  {
    cid: 'NP',
    cname: '尼泊尔',
    areaCode: '977',
    enName: 'Nepal'
  },
  {
    cid: 'NR',
    cname: '瑙鲁',
    areaCode: '674',
    enName: 'Nauru'
  },
  {
    cid: 'NZ',
    cname: '新西兰',
    areaCode: '64',
    enName: 'New Zealand'
  },
  {
    cid: 'OM',
    cname: '阿曼',
    areaCode: '968',
    enName: 'Oman'
  },
  {
    cid: 'PA',
    cname: '巴拿马',
    areaCode: '507',
    enName: 'Panama'
  },
  {
    cid: 'PE',
    cname: '秘鲁',
    areaCode: '51',
    enName: 'Peru'
  },
  {
    cid: 'PF',
    cname: '法属玻利尼西亚',
    areaCode: '689',
    enName: 'French polynesia'
  },
  {
    cid: 'PG',
    cname: '巴布亚新几内亚',
    areaCode: '675',
    enName: 'Papua New Guinea'
  },
  {
    cid: 'PH',
    cname: '菲律宾',
    areaCode: '63',
    enName: 'The Philippines'
  },
  {
    cid: 'PK',
    cname: '巴基斯坦',
    areaCode: '92',
    enName: 'Pakistan'
  },
  {
    cid: 'PL',
    cname: '波兰',
    areaCode: '48',
    enName: 'Poland'
  },
  {
    cid: 'PR',
    cname: '波多黎各',
    areaCode: '1787',
    enName: 'Puerto Rico'
  },
  {
    cid: 'PT',
    cname: '葡萄牙',
    areaCode: '351',
    enName: 'Portugal'
  },
  {
    cid: 'PY',
    cname: '巴拉圭',
    areaCode: '595',
    enName: 'Paraguay'
  },
  {
    cid: 'QA',
    cname: '卡塔尔',
    areaCode: '974',
    enName: 'Qatar'
  },
  {
    cid: 'RO',
    cname: '罗马尼亚',
    areaCode: '40',
    enName: 'Romania'
  },
  {
    cid: 'RU',
    cname: '俄罗斯',
    areaCode: '7',
    enName: 'Russian Federation'
  },
  {
    cid: 'SA',
    cname: '沙特阿拉伯',
    areaCode: '966',
    enName: 'Saudi Arabia'
  },
  {
    cid: 'SB',
    cname: '所罗门群岛',
    areaCode: '677',
    enName: 'Solomon Islands'
  },
  {
    cid: 'SC',
    cname: '塞舌尔',
    areaCode: '248',
    enName: 'Seychelles'
  },
  {
    cid: 'SD',
    cname: '苏丹',
    areaCode: '249',
    enName: 'Sudan'
  },
  {
    cid: 'SE',
    cname: '瑞典',
    areaCode: '46',
    enName: 'Sweden'
  },
  {
    cid: 'SG',
    cname: '新加坡',
    areaCode: '65',
    enName: 'Singapore'
  },
  {
    cid: 'SI',
    cname: '斯洛文尼亚',
    areaCode: '386',
    enName: 'Slovenia'
  },
  {
    cid: 'SK',
    cname: '斯洛伐克',
    areaCode: '421',
    enName: 'Slovakia'
  },
  {
    cid: 'SL',
    cname: '塞拉利昂',
    areaCode: '232',
    enName: 'Sierra Leone'
  },
  {
    cid: 'SM',
    cname: '圣马力诺',
    areaCode: '378',
    enName: 'San Marino'
  },
  {
    cid: 'SN',
    cname: '塞内加尔',
    areaCode: '221',
    enName: 'Senegal'
  },
  {
    cid: 'SO',
    cname: '索马里',
    areaCode: '252',
    enName: 'Somalia'
  },
  {
    cid: 'SR',
    cname: '苏里南',
    areaCode: '597',
    enName: 'Suriname'
  },
  {
    cid: 'ST',
    cname: '圣多美和普林西比',
    areaCode: '239',
    enName: 'Sao Tome & Principe'
  },
  {
    cid: 'SV',
    cname: '萨尔瓦多',
    areaCode: '503',
    enName: 'El Salvador'
  },
  {
    cid: 'SY',
    cname: '叙利亚',
    areaCode: '963',
    enName: 'Syria'
  },
  {
    cid: 'SZ',
    cname: '斯威士兰',
    areaCode: '268',
    enName: 'Swaziland'
  },
  {
    cid: 'TD',
    cname: '乍得',
    areaCode: '235',
    enName: 'Chad'
  },
  {
    cid: 'TG',
    cname: '多哥',
    areaCode: '228',
    enName: 'Togo'
  },
  {
    cid: 'TH',
    cname: '泰国',
    areaCode: '66',
    enName: 'Thailand'
  },
  {
    cid: 'TJ',
    cname: '塔吉克斯坦',
    areaCode: '992',
    enName: 'Tajikistan'
  },
  {
    cid: 'TM',
    cname: '土库曼斯坦',
    areaCode: '993',
    enName: 'Turkmenistan'
  },
  {
    cid: 'TN',
    cname: '突尼斯',
    areaCode: '216',
    enName: 'Tunisia'
  },
  {
    cid: 'TO',
    cname: '汤加',
    areaCode: '676',
    enName: 'Tonga'
  },
  {
    cid: 'TR',
    cname: '土耳其',
    areaCode: '90',
    enName: 'Turkey'
  },
  {
    cid: 'TT',
    cname: '特立尼达和多巴哥',
    areaCode: '1809',
    enName: 'Trinidad & Tobago'
  },
  {
    cid: 'TW',
    cname: '中国台湾省',
    areaCode: '886',
    enName: 'China Taiwan'
  },
  {
    cid: 'TZ',
    cname: '坦桑尼亚',
    areaCode: '255',
    enName: 'Tanzania'
  },
  {
    cid: 'UA',
    cname: '乌克兰',
    areaCode: '380',
    enName: 'Ukraine'
  },
  {
    cid: 'UG',
    cname: '乌干达',
    areaCode: '256',
    enName: 'Uganda'
  },
  {
    cid: 'US',
    cname: '美国',
    areaCode: '1',
    enName: 'United States of America (USA)'
  },
  {
    cid: 'UY',
    cname: '乌拉圭',
    areaCode: '598',
    enName: 'Uruguay'
  },
  {
    cid: 'UZ',
    cname: '乌兹别克斯坦',
    areaCode: '233',
    enName: 'Uzbekistan'
  },
  {
    cid: 'VC',
    cname: '圣文森特岛',
    areaCode: '1784',
    enName: 'St. Vincent & the Grenadines'
  },
  {
    cid: 'VE',
    cname: '委内瑞拉',
    areaCode: '58',
    enName: 'Venezuela'
  },
  {
    cid: 'VN',
    cname: '越南',
    areaCode: '84',
    enName: 'Vietnam'
  },
  {
    cid: 'YE',
    cname: '也门',
    areaCode: '967',
    enName: 'Yemen'
  },
  {
    cid: 'YU',
    cname: '南斯拉夫',
    areaCode: '381',
    enName: 'Yugoslavia'
  },
  {
    cid: 'ZA',
    cname: '南非',
    areaCode: '27',
    enName: 'South Africa'
  },
  {
    cid: 'ZM',
    cname: '赞比亚',
    areaCode: '260',
    enName: 'Zambia'
  },
  {
    cid: 'ZR',
    cname: '扎伊尔',
    areaCode: '243',
    enName: 'Republic of Zaire'
  }
]
```
````

### Time Zone

```
[
  { tz: 'GMT-09:00', gmt: 'America/Metlakatla' },
  { tz: 'GMT-12:00', gmt: 'Etc/GMT+12' },
  { tz: 'GMT-11:00', gmt: 'Etc/GMT+11' },
  { tz: 'GMT-11:00', gmt: 'Pacific/Midway' },
  { tz: 'GMT-11:00', gmt: 'Pacific/Niue' },
  { tz: 'GMT-11:00', gmt: 'Pacific/Pago Pago' },
  { tz: 'GMT-10:00', gmt: 'America/Adak' },
  { tz: 'GMT-10:00', gmt: 'Etc/GMT+10' },
  { tz: 'GMT-10:00', gmt: 'HST' },
  { tz: 'GMT-10:00', gmt: 'Pacific/Honolulu' },
  { tz: 'GMT-10:00', gmt: 'Pacific/Rarotonga' },
  { tz: 'GMT-10:00', gmt: 'Pacific/Tahiti' },
  { tz: 'GMT-09:30', gmt: 'Pacific/Marquesas' },
  { tz: 'GMT-09:00', gmt: 'America/Anchorage' },
  { tz: 'GMT-09:00', gmt: 'America/Juneau' },
  { tz: 'GMT-09:00', gmt: 'America/Nome' },
  { tz: 'GMT-09:00', gmt: 'America/Sitka' },
  { tz: 'GMT-09:00', gmt: 'America/Yakutat' },
  { tz: 'GMT-09:00', gmt: 'Etc/GMT+9' },
  { tz: 'GMT-09:00', gmt: 'Pacific/Gambier' },
  { tz: 'GMT-08:00', gmt: 'America/Los Angeles' },
  { tz: 'GMT-08:00', gmt: 'America/Tijuana' },
  { tz: 'GMT-08:00', gmt: 'America/Vancouver' },
  { tz: 'GMT-08:00', gmt: 'Etc/GMT+8' },
  { tz: 'GMT-08:00', gmt: 'PST8PDT' },
  { tz: 'GMT-08:00', gmt: 'Pacific/Pitcairn' },
  { tz: 'GMT-07:00', gmt: 'America/Boise' },
  { tz: 'GMT-07:00', gmt: 'America/Cambridge Bay' },
  { tz: 'GMT-07:00', gmt: 'America/Chihuahua' },
  { tz: 'GMT-07:00', gmt: 'America/Creston' },
  { tz: 'GMT-07:00', gmt: 'America/Dawson' },
  { tz: 'GMT-07:00', gmt: 'America/Dawson Creek' },
  { tz: 'GMT-07:00', gmt: 'America/Denver' },
  { tz: 'GMT-07:00', gmt: 'America/Edmonton' },
  { tz: 'GMT-07:00', gmt: 'America/Fort Nelson' },
  { tz: 'GMT-07:00', gmt: 'America/Hermosillo' },
  { tz: 'GMT-07:00', gmt: 'America/Inuvik' },
  { tz: 'GMT-07:00', gmt: 'America/Mazatlan' },
  { tz: 'GMT-07:00', gmt: 'America/Ojinaga' },
  { tz: 'GMT-07:00', gmt: 'America/Phoenix' },
  { tz: 'GMT-07:00', gmt: 'America/Whitehorse' },
  { tz: 'GMT-07:00', gmt: 'America/Yellowknife' },
  { tz: 'GMT-07:00', gmt: 'Etc/GMT+7' },
  { tz: 'GMT-07:00', gmt: 'MST' },
  { tz: 'GMT-07:00', gmt: 'MST7MDT' },
  { tz: 'GMT-06:00', gmt: 'America/Bahia Banderas' },
  { tz: 'GMT-06:00', gmt: 'America/Belize' },
  { tz: 'GMT-06:00', gmt: 'America/Chicago' },
  { tz: 'GMT-06:00', gmt: 'America/Costa Rica' },
  { tz: 'GMT-06:00', gmt: 'America/El Salvador' },
  { tz: 'GMT-06:00', gmt: 'America/Guatemala' },
  { tz: 'GMT-06:00', gmt: 'America/Indiana/Knox' },
  { tz: 'GMT-06:00', gmt: 'America/Indiana/Tell City' },
  { tz: 'GMT-06:00', gmt: 'America/Managua' },
  { tz: 'GMT-06:00', gmt: 'America/Matamoros' },
  { tz: 'GMT-06:00', gmt: 'America/Menominee' },
  { tz: 'GMT-06:00', gmt: 'America/Merida' },
  { tz: 'GMT-06:00', gmt: 'America/Mexico City' },
  { tz: 'GMT-06:00', gmt: 'America/Monterrey' },
  { tz: 'GMT-06:00', gmt: 'America/North Dakota/Beulah' },
  { tz: 'GMT-06:00', gmt: 'America/North Dakota/Center' },
  { tz: 'GMT-06:00', gmt: 'America/North Dakota/New_Salem' },
  { tz: 'GMT-06:00', gmt: 'America/Rainy River' },
  { tz: 'GMT-06:00', gmt: 'America/Rankin Inlet' },
  { tz: 'GMT-06:00', gmt: 'America/Regina' },
  { tz: 'GMT-06:00', gmt: 'America/Resolute' },
  { tz: 'GMT-06:00', gmt: 'America/Swift Current' },
  { tz: 'GMT-06:00', gmt: 'America/Tegucigalpa' },
  { tz: 'GMT-06:00', gmt: 'America/Winnipeg' },
  { tz: 'GMT-06:00', gmt: 'CST6CDT' },
  { tz: 'GMT-06:00', gmt: 'Etc/GMT+6' },
  { tz: 'GMT-06:00', gmt: 'Pacific/Galapagos' },
  { tz: 'GMT-05:00', gmt: 'America/Atikokan' },
  { tz: 'GMT-05:00', gmt: 'America/Bogota' },
  { tz: 'GMT-05:00', gmt: 'America/Cancun' },
  { tz: 'GMT-05:00', gmt: 'America/Cayman' },
  { tz: 'GMT-05:00', gmt: 'America/Detroit' },
  { tz: 'GMT-05:00', gmt: 'America/Eirunepe' },
  { tz: 'GMT-05:00', gmt: 'America/Grand Turk' },
  { tz: 'GMT-05:00', gmt: 'America/Guayaquil' },
  { tz: 'GMT-05:00', gmt: 'America/Havana' },
  { tz: 'GMT-05:00', gmt: 'America/Indiana/Indianapolis' },
  { tz: 'GMT-05:00', gmt: 'America/Indiana/Marengo' },
  { tz: 'GMT-05:00', gmt: 'America/Indiana/Petersburg' },
  { tz: 'GMT-05:00', gmt: 'America/Indiana/Vevay' },
  { tz: 'GMT-05:00', gmt: 'America/Indiana/Vincennes' },
  { tz: 'GMT-05:00', gmt: 'America/Indiana/Winamac' },
  { tz: 'GMT-05:00', gmt: 'America/Indianapolis' },
  { tz: 'GMT-05:00', gmt: 'America/Iqaluit' },
  { tz: 'GMT-05:00', gmt: 'America/Jamaica' },
  { tz: 'GMT-05:00', gmt: 'America/Kentucky/Louisville' },
  { tz: 'GMT-05:00', gmt: 'America/Kentucky/Monticello' },
  { tz: 'GMT-05:00', gmt: 'America/Lima' },
  { tz: 'GMT-05:00', gmt: 'America/Montreal' },
  { tz: 'GMT-05:00', gmt: 'America/Nassau' },
  { tz: 'GMT-05:00', gmt: 'America/New York' },
  { tz: 'GMT-05:00', gmt: 'America/Nipigon' },
  { tz: 'GMT-05:00', gmt: 'America/Panama' },
  { tz: 'GMT-05:00', gmt: 'America/Pangnirtung' },
  { tz: 'GMT-05:00', gmt: 'America/Port-au-Prince' },
  { tz: 'GMT-05:00', gmt: 'America/Rio Branco' },
  { tz: 'GMT-05:00', gmt: 'America/Thunder Bay' },
  { tz: 'GMT-05:00', gmt: 'America/Toronto' },
  { tz: 'GMT-05:00', gmt: 'EST' },
  { tz: 'GMT-05:00', gmt: 'EST5EDT' },
  { tz: 'GMT-05:00', gmt: 'Etc/GMT+5' },
  { tz: 'GMT-05:00', gmt: 'Pacific/Easter' },
  { tz: 'GMT-04:00', gmt: 'America/Anguilla' },
  { tz: 'GMT-04:00', gmt: 'America/Antigua' },
  { tz: 'GMT-04:00', gmt: 'America/Aruba' },
  { tz: 'GMT-04:00', gmt: 'America/Barbados' },
  { tz: 'GMT-04:00', gmt: 'America/Blanc-Sablon' },
  { tz: 'GMT-04:00', gmt: 'America/Boa Vista' },
  { tz: 'GMT-04:00', gmt: 'America/Campo Grande' },
  { tz: 'GMT-04:00', gmt: 'America/Caracas' },
  { tz: 'GMT-04:00', gmt: 'America/Cuiaba' },
  { tz: 'GMT-04:00', gmt: 'America/Curacao' },
  { tz: 'GMT-04:00', gmt: 'America/Dominica' },
  { tz: 'GMT-04:00', gmt: 'America/Glace Bay' },
  { tz: 'GMT-04:00', gmt: 'America/Goose Bay' },
  { tz: 'GMT-04:00', gmt: 'America/Grenada' },
  { tz: 'GMT-04:00', gmt: 'America/Guadeloupe' },
  { tz: 'GMT-04:00', gmt: 'America/Guyana' },
  { tz: 'GMT-04:00', gmt: 'America/Halifax' },
  { tz: 'GMT-04:00', gmt: 'America/Kralendijk' },
  { tz: 'GMT-04:00', gmt: 'America/La Paz' },
  { tz: 'GMT-04:00', gmt: 'America/Lower Princes' },
  { tz: 'GMT-04:00', gmt: 'America/Manaus' },
  { tz: 'GMT-04:00', gmt: 'America/Marigot' },
  { tz: 'GMT-04:00', gmt: 'America/Martinique' },
  { tz: 'GMT-04:00', gmt: 'America/Moncton' },
  { tz: 'GMT-04:00', gmt: 'America/Montserrat' },
  { tz: 'GMT-04:00', gmt: 'America/Port of_Spain' },
  { tz: 'GMT-04:00', gmt: 'America/Porto Velho' },
  { tz: 'GMT-04:00', gmt: 'America/Puerto Rico' },
  { tz: 'GMT-04:00', gmt: 'America/Santo Domingo' },
  { tz: 'GMT-04:00', gmt: 'America/St Barthelemy' },
  { tz: 'GMT-04:00', gmt: 'America/St Kitts' },
  { tz: 'GMT-04:00', gmt: 'America/St Lucia' },
  { tz: 'GMT-04:00', gmt: 'America/St Thomas' },
  { tz: 'GMT-04:00', gmt: 'America/St Vincent' },
  { tz: 'GMT-04:00', gmt: 'America/Thule' },
  { tz: 'GMT-04:00', gmt: 'America/Tortola' },
  { tz: 'GMT-04:00', gmt: 'Atlantic/Bermuda' },
  { tz: 'GMT-04:00', gmt: 'Etc/GMT+4' },
  { tz: 'GMT-03:30', gmt: 'America/St Johns' },
  { tz: 'GMT-03:00', gmt: 'America/Araguaina' },
  { tz: 'GMT-03:00', gmt: 'America/Argentina/Buenos Aires' },
  { tz: 'GMT-03:00', gmt: 'America/Argentina/Catamarca' },
  { tz: 'GMT-03:00', gmt: 'America/Argentina/Cordoba' },
  { tz: 'GMT-03:00', gmt: 'America/Argentina/Jujuy' },
  { tz: 'GMT-03:00', gmt: 'America/Argentina/La Rioja' },
  { tz: 'GMT-03:00', gmt: 'America/Argentina/Mendoza' },
  { tz: 'GMT-03:00', gmt: 'America/Argentina/Rio Gallegos' },
  { tz: 'GMT-03:00', gmt: 'America/Argentina/Salta' },
  { tz: 'GMT-03:00', gmt: 'America/Argentina/San Juan' },
  { tz: 'GMT-03:00', gmt: 'America/Argentina/San Luis' },
  { tz: 'GMT-03:00', gmt: 'America/Argentina/Tucuman' },
  { tz: 'GMT-03:00', gmt: 'America/Argentina/Ushuaia' },
  { tz: 'GMT-03:00', gmt: 'America/Asuncion' },
  { tz: 'GMT-03:00', gmt: 'America/Bahia' },
  { tz: 'GMT-03:00', gmt: 'America/Belem' },
  { tz: 'GMT-03:00', gmt: 'America/Cayenne' },
  { tz: 'GMT-03:00', gmt: 'America/Fortaleza' },
  { tz: 'GMT-03:00', gmt: 'America/Godthab' },
  { tz: 'GMT-03:00', gmt: 'America/Maceio' },
  { tz: 'GMT-03:00', gmt: 'America/Miquelon' },
  { tz: 'GMT-03:00', gmt: 'America/Montevideo' },
  { tz: 'GMT-03:00', gmt: 'America/Nuuk' },
  { tz: 'GMT-03:00', gmt: 'America/Paramaribo' },
  { tz: 'GMT-03:00', gmt: 'America/Punta Arenas' },
  { tz: 'GMT-03:00', gmt: 'America/Recife' },
  { tz: 'GMT-03:00', gmt: 'America/Santarem' },
  { tz: 'GMT-03:00', gmt: 'America/Santiago' },
  { tz: 'GMT-03:00', gmt: 'America/Sao Paulo' },
  { tz: 'GMT-03:00', gmt: 'Antarctica/Palmer' },
  { tz: 'GMT-03:00', gmt: 'Antarctica/Rothera' },
  { tz: 'GMT-03:00', gmt: 'Atlantic/Stanley' },
  { tz: 'GMT-03:00', gmt: 'Etc/GMT+3' },
  { tz: 'GMT-02:00', gmt: 'America/Noronha' },
  { tz: 'GMT-02:00', gmt: 'Atlantic/South Georgia' },
  { tz: 'GMT-02:00', gmt: 'Etc/GMT+2' },
  { tz: 'GMT-01:00', gmt: 'America/Scoresbysund' },
  { tz: 'GMT-01:00', gmt: 'Atlantic/Azores' },
  { tz: 'GMT-01:00', gmt: 'Atlantic/Cape Verde' },
  { tz: 'GMT-01:00', gmt: 'Etc/GMT+1' },
  { tz: 'GMT+00:00', gmt: 'Africa/Abidjan' },
  { tz: 'GMT+00:00', gmt: 'Africa/Accra' },
  { tz: 'GMT+00:00', gmt: 'Africa/Bamako' },
  { tz: 'GMT+00:00', gmt: 'Africa/Banjul' },
  { tz: 'GMT+00:00', gmt: 'Africa/Bissau' },
  { tz: 'GMT+00:00', gmt: 'Africa/Conakry' },
  { tz: 'GMT+00:00', gmt: 'Africa/Dakar' },
  { tz: 'GMT+00:00', gmt: 'Africa/Freetown' },
  { tz: 'GMT+00:00', gmt: 'Africa/Lome' },
  { tz: 'GMT+00:00', gmt: 'Africa/Monrovia' },
  { tz: 'GMT+00:00', gmt: 'Africa/Nouakchott' },
  { tz: 'GMT+00:00', gmt: 'Africa/Ouagadougou' },
  { tz: 'GMT+00:00', gmt: 'Africa/Sao Tome' },
  { tz: 'GMT+00:00', gmt: 'America/Danmarkshavn' },
  { tz: 'GMT+00:00', gmt: 'Antarctica/Troll' },
  { tz: 'GMT+00:00', gmt: 'Atlantic/Canary' },
  { tz: 'GMT+00:00', gmt: 'Atlantic/Faroe' },
  { tz: 'GMT+00:00', gmt: 'Atlantic/Madeira' },
  { tz: 'GMT+00:00', gmt: 'Atlantic/Reykjavik' },
  { tz: 'GMT+00:00', gmt: 'Atlantic/St Helena' },
  { tz: 'GMT+00:00', gmt: 'Etc/GMT' },
  { tz: 'GMT+00:00', gmt: 'Etc/GMT+0' },
  { tz: 'GMT+00:00', gmt: 'Etc/GMT-0' },
  { tz: 'GMT+00:00', gmt: 'Etc/GMT0' },
  { tz: 'GMT+00:00', gmt: 'Etc/Greenwich' },
  { tz: 'GMT+00:00', gmt: 'Etc/Universal' },
  { tz: 'GMT+00:00', gmt: 'Etc/Zulu' },
  { tz: 'GMT+00:00', gmt: 'Europe/Dublin' },
  { tz: 'GMT+00:00', gmt: 'Europe/Guernsey' },
  { tz: 'GMT+00:00', gmt: 'Europe/Isle of_Man' },
  { tz: 'GMT+00:00', gmt: 'Europe/Jersey' },
  { tz: 'GMT+00:00', gmt: 'Europe/Lisbon' },
  { tz: 'GMT+00:00', gmt: 'Europe/London' },
  { tz: 'GMT+00:00', gmt: 'GMT' },
  { tz: 'GMT+00:00', gmt: 'UTC' },
  { tz: 'GMT+00:00', gmt: 'WET' },
  { tz: 'GMT+01:00', gmt: 'Africa/Algiers' },
  { tz: 'GMT+01:00', gmt: 'Africa/Bangui' },
  { tz: 'GMT+01:00', gmt: 'Africa/Brazzaville' },
  { tz: 'GMT+01:00', gmt: 'Africa/Casablanca' },
  { tz: 'GMT+01:00', gmt: 'Africa/Ceuta' },
  { tz: 'GMT+01:00', gmt: 'Africa/Douala' },
  { tz: 'GMT+01:00', gmt: 'Africa/El Aaiun' },
  { tz: 'GMT+01:00', gmt: 'Africa/Kinshasa' },
  { tz: 'GMT+01:00', gmt: 'Africa/Lagos' },
  { tz: 'GMT+01:00', gmt: 'Africa/Libreville' },
  { tz: 'GMT+01:00', gmt: 'Africa/Luanda' },
  { tz: 'GMT+01:00', gmt: 'Africa/Malabo' },
  { tz: 'GMT+01:00', gmt: 'Africa/Ndjamena' },
  { tz: 'GMT+01:00', gmt: 'Africa/Niamey' },
  { tz: 'GMT+01:00', gmt: 'Africa/Porto-Novo' },
  { tz: 'GMT+01:00', gmt: 'Africa/Tunis' },
  { tz: 'GMT+01:00', gmt: 'Arctic/Longyearbyen' },
  { tz: 'GMT+01:00', gmt: 'CET' },
  { tz: 'GMT+01:00', gmt: 'Etc/GMT-1' },
  { tz: 'GMT+01:00', gmt: 'Europe/Amsterdam' },
  { tz: 'GMT+01:00', gmt: 'Europe/Andorra' },
  { tz: 'GMT+01:00', gmt: 'Europe/Belgrade' },
  { tz: 'GMT+01:00', gmt: 'Europe/Berlin' },
  { tz: 'GMT+01:00', gmt: 'Europe/Bratislava' },
  { tz: 'GMT+01:00', gmt: 'Europe/Brussels' },
  { tz: 'GMT+01:00', gmt: 'Europe/Budapest' },
  { tz: 'GMT+01:00', gmt: 'Europe/Busingen' },
  { tz: 'GMT+01:00', gmt: 'Europe/Copenhagen' },
  { tz: 'GMT+01:00', gmt: 'Europe/Gibraltar' },
  { tz: 'GMT+01:00', gmt: 'Europe/Ljubljana' },
  { tz: 'GMT+01:00', gmt: 'Europe/Luxembourg' },
  { tz: 'GMT+01:00', gmt: 'Europe/Madrid' },
  { tz: 'GMT+01:00', gmt: 'Europe/Malta' },
  { tz: 'GMT+01:00', gmt: 'Europe/Monaco' },
  { tz: 'GMT+01:00', gmt: 'Europe/Oslo' },
  { tz: 'GMT+01:00', gmt: 'Europe/Paris' },
  { tz: 'GMT+01:00', gmt: 'Europe/Podgorica' },
  { tz: 'GMT+01:00', gmt: 'Europe/Prague' },
  { tz: 'GMT+01:00', gmt: 'Europe/Rome' },
  { tz: 'GMT+01:00', gmt: 'Europe/San Marino' },
  { tz: 'GMT+01:00', gmt: 'Europe/Sarajevo' },
  { tz: 'GMT+01:00', gmt: 'Europe/Skopje' },
  { tz: 'GMT+01:00', gmt: 'Europe/Stockholm' },
  { tz: 'GMT+01:00', gmt: 'Europe/Tirane' },
  { tz: 'GMT+01:00', gmt: 'Europe/Vaduz' },
  { tz: 'GMT+01:00', gmt: 'Europe/Vatican' },
  { tz: 'GMT+01:00', gmt: 'Europe/Vienna' },
  { tz: 'GMT+01:00', gmt: 'Europe/Warsaw' },
  { tz: 'GMT+01:00', gmt: 'Europe/Zagreb' },
  { tz: 'GMT+01:00', gmt: 'Europe/Zurich' },
  { tz: 'GMT+01:00', gmt: 'MET' },
  { tz: 'GMT+02:00', gmt: 'Africa/Blantyre' },
  { tz: 'GMT+02:00', gmt: 'Africa/Bujumbura' },
  { tz: 'GMT+02:00', gmt: 'Africa/Cairo' },
  { tz: 'GMT+02:00', gmt: 'Africa/Gaborone' },
  { tz: 'GMT+02:00', gmt: 'Africa/Harare' },
  { tz: 'GMT+02:00', gmt: 'Africa/Johannesburg' },
  { tz: 'GMT+02:00', gmt: 'Africa/Khartoum' },
  { tz: 'GMT+02:00', gmt: 'Africa/Kigali' },
  { tz: 'GMT+02:00', gmt: 'Africa/Lubumbashi' },
  { tz: 'GMT+02:00', gmt: 'Africa/Lusaka' },
  { tz: 'GMT+02:00', gmt: 'Africa/Maputo' },
  { tz: 'GMT+02:00', gmt: 'Africa/Maseru' },
  { tz: 'GMT+02:00', gmt: 'Africa/Mbabane' },
  { tz: 'GMT+02:00', gmt: 'Africa/Tripoli' },
  { tz: 'GMT+02:00', gmt: 'Africa/Windhoek' },
  { tz: 'GMT+02:00', gmt: 'Asia/Amman' },
  { tz: 'GMT+02:00', gmt: 'Asia/Beirut' },
  { tz: 'GMT+02:00', gmt: 'Asia/Damascus' },
  { tz: 'GMT+02:00', gmt: 'Asia/Famagusta' },
  { tz: 'GMT+02:00', gmt: 'Asia/Gaza' },
  { tz: 'GMT+02:00', gmt: 'Asia/Hebron' },
  { tz: 'GMT+02:00', gmt: 'Asia/Jerusalem' },
  { tz: 'GMT+02:00', gmt: 'Asia/Nicosia' },
  { tz: 'GMT+02:00', gmt: 'EET' },
  { tz: 'GMT+02:00', gmt: 'Etc/GMT-2' },
  { tz: 'GMT+02:00', gmt: 'Europe/Athens' },
  { tz: 'GMT+02:00', gmt: 'Europe/Bucharest' },
  { tz: 'GMT+02:00', gmt: 'Europe/Chisinau' },
  { tz: 'GMT+02:00', gmt: 'Europe/Helsinki' },
  { tz: 'GMT+02:00', gmt: 'Europe/Kaliningrad' },
  { tz: 'GMT+02:00', gmt: 'Europe/Kiev' },
  { tz: 'GMT+02:00', gmt: 'Europe/Mariehamn' },
  { tz: 'GMT+02:00', gmt: 'Europe/Nicosia' },
  { tz: 'GMT+02:00', gmt: 'Europe/Riga' },
  { tz: 'GMT+02:00', gmt: 'Europe/Sofia' },
  { tz: 'GMT+02:00', gmt: 'Europe/Tallinn' },
  { tz: 'GMT+02:00', gmt: 'Europe/Uzhgorod' },
  { tz: 'GMT+02:00', gmt: 'Europe/Vilnius' },
  { tz: 'GMT+02:00', gmt: 'Europe/Zaporozhye' },
  { tz: 'GMT+03:00', gmt: 'Africa/Addis Ababa' },
  { tz: 'GMT+03:00', gmt: 'Africa/Asmara' },
  { tz: 'GMT+03:00', gmt: 'Africa/Dar es_Salaam' },
  { tz: 'GMT+03:00', gmt: 'Africa/Djibouti' },
  { tz: 'GMT+03:00', gmt: 'Africa/Juba' },
  { tz: 'GMT+03:00', gmt: 'Africa/Kampala' },
  { tz: 'GMT+03:00', gmt: 'Africa/Mogadishu' },
  { tz: 'GMT+03:00', gmt: 'Africa/Nairobi' },
  { tz: 'GMT+03:00', gmt: 'Antarctica/Syowa' },
  { tz: 'GMT+03:00', gmt: 'Asia/Aden' },
  { tz: 'GMT+03:00', gmt: 'Asia/Baghdad' },
  { tz: 'GMT+03:00', gmt: 'Asia/Bahrain' },
  { tz: 'GMT+03:00', gmt: 'Asia/Istanbul' },
  { tz: 'GMT+03:00', gmt: 'Asia/Kuwait' },
  { tz: 'GMT+03:00', gmt: 'Asia/Qatar' },
  { tz: 'GMT+03:00', gmt: 'Asia/Riyadh' },
  { tz: 'GMT+03:00', gmt: 'Etc/GMT-3' },
  { tz: 'GMT+03:00', gmt: 'Europe/Istanbul' },
  { tz: 'GMT+03:00', gmt: 'Europe/Kirov' },
  { tz: 'GMT+03:00', gmt: 'Europe/Minsk' },
  { tz: 'GMT+03:00', gmt: 'Europe/Moscow' },
  { tz: 'GMT+03:00', gmt: 'Europe/Simferopol' },
  { tz: 'GMT+03:00', gmt: 'Indian/Antananarivo' },
  { tz: 'GMT+03:00', gmt: 'Indian/Comoro' },
  { tz: 'GMT+03:00', gmt: 'Indian/Mayotte' },
  { tz: 'GMT+03:30', gmt: 'Asia/Tehran' },
  { tz: 'GMT+04:00', gmt: 'Asia/Baku' },
  { tz: 'GMT+04:00', gmt: 'Asia/Dubai' },
  { tz: 'GMT+04:00', gmt: 'Asia/Muscat' },
  { tz: 'GMT+04:00', gmt: 'Asia/Tbilisi' },
  { tz: 'GMT+04:00', gmt: 'Asia/Yerevan' },
  { tz: 'GMT+04:00', gmt: 'Etc/GMT-4' },
  { tz: 'GMT+04:00', gmt: 'Europe/Astrakhan' },
  { tz: 'GMT+04:00', gmt: 'Europe/Samara' },
  { tz: 'GMT+04:00', gmt: 'Europe/Saratov' },
  { tz: 'GMT+04:00', gmt: 'Europe/Ulyanovsk' },
  { tz: 'GMT+04:00', gmt: 'Europe/Volgograd' },
  { tz: 'GMT+04:00', gmt: 'Indian/Mahe' },
  { tz: 'GMT+04:00', gmt: 'Indian/Mauritius' },
  { tz: 'GMT+04:00', gmt: 'Indian/Reunion' },
  { tz: 'GMT+04:30', gmt: 'Asia/Kabul' },
  { tz: 'GMT+05:00', gmt: 'Antarctica/Mawson' },
  { tz: 'GMT+05:00', gmt: 'Asia/Aqtau' },
  { tz: 'GMT+05:00', gmt: 'Asia/Aqtobe' },
  { tz: 'GMT+05:00', gmt: 'Asia/Ashgabat' },
  { tz: 'GMT+05:00', gmt: 'Asia/Atyrau' },
  { tz: 'GMT+05:00', gmt: 'Asia/Dushanbe' },
  { tz: 'GMT+05:00', gmt: 'Asia/Karachi' },
  { tz: 'GMT+05:00', gmt: 'Asia/Oral' },
  { tz: 'GMT+05:00', gmt: 'Asia/Qyzylorda' },
  { tz: 'GMT+05:00', gmt: 'Asia/Samarkand' },
  { tz: 'GMT+05:00', gmt: 'Asia/Tashkent' },
  { tz: 'GMT+05:00', gmt: 'Asia/Yekaterinburg' },
  { tz: 'GMT+05:00', gmt: 'Etc/GMT-5' },
  { tz: 'GMT+05:00', gmt: 'Indian/Kerguelen' },
  { tz: 'GMT+05:00', gmt: 'Indian/Maldives' },
  { tz: 'GMT+05:30', gmt: 'Asia/Calcutta' },
  { tz: 'GMT+05:30', gmt: 'Asia/Colombo' },
  { tz: 'GMT+05:30', gmt: 'Asia/Kolkata' },
  { tz: 'GMT+05:45', gmt: 'Asia/Kathmandu' },
  { tz: 'GMT+05:45', gmt: 'Asia/Katmandu' },
  { tz: 'GMT+06:00', gmt: 'Antarctica/Vostok' },
  { tz: 'GMT+06:00', gmt: 'Asia/Almaty' },
  { tz: 'GMT+06:00', gmt: 'Asia/Bishkek' },
  { tz: 'GMT+06:00', gmt: 'Asia/Dhaka' },
  { tz: 'GMT+06:00', gmt: 'Asia/Omsk' },
  { tz: 'GMT+06:00', gmt: 'Asia/Qostanay' },
  { tz: 'GMT+06:00', gmt: 'Asia/Thimphu' },
  { tz: 'GMT+06:00', gmt: 'Asia/Urumqi' },
  { tz: 'GMT+06:00', gmt: 'Etc/GMT-6' },
  { tz: 'GMT+06:00', gmt: 'Indian/Chagos' },
  { tz: 'GMT+06:30', gmt: 'Asia/Yangon' },
  { tz: 'GMT+06:30', gmt: 'Indian/Cocos' },
  { tz: 'GMT+07:00', gmt: 'Antarctica/Davis' },
  { tz: 'GMT+07:00', gmt: 'Asia/Bangkok' },
  { tz: 'GMT+07:00', gmt: 'Asia/Barnaul' },
  { tz: 'GMT+07:00', gmt: 'Asia/Ho Chi_Minh' },
  { tz: 'GMT+07:00', gmt: 'Asia/Hovd' },
  { tz: 'GMT+07:00', gmt: 'Asia/Jakarta' },
  { tz: 'GMT+07:00', gmt: 'Asia/Krasnoyarsk' },
  { tz: 'GMT+07:00', gmt: 'Asia/Novokuznetsk' },
  { tz: 'GMT+07:00', gmt: 'Asia/Novosibirsk' },
  { tz: 'GMT+07:00', gmt: 'Asia/Phnom Penh' },
  { tz: 'GMT+07:00', gmt: 'Asia/Pontianak' },
  { tz: 'GMT+07:00', gmt: 'Asia/Tomsk' },
  { tz: 'GMT+07:00', gmt: 'Asia/Vientiane' },
  { tz: 'GMT+07:00', gmt: 'Etc/GMT-7' },
  { tz: 'GMT+07:00', gmt: 'Indian/Christmas' },
  { tz: 'GMT+08:00', gmt: 'Asia/Brunei' },
  { tz: 'GMT+08:00', gmt: 'Asia/Choibalsan' },
  { tz: 'GMT+08:00', gmt: 'Asia/Hong Kong' },
  { tz: 'GMT+08:00', gmt: 'Asia/Irkutsk' },
  { tz: 'GMT+08:00', gmt: 'Asia/Kuala Lumpur' },
  { tz: 'GMT+08:00', gmt: 'Asia/Kuching' },
  { tz: 'GMT+08:00', gmt: 'Asia/Macau' },
  { tz: 'GMT+08:00', gmt: 'Asia/Makassar' },
  { tz: 'GMT+08:00', gmt: 'Asia/Manila' },
  { tz: 'GMT+08:00', gmt: 'Asia/Shanghai' },
  { tz: 'GMT+08:00', gmt: 'Asia/Singapore' },
  { tz: 'GMT+08:00', gmt: 'Asia/Taipei' },
  { tz: 'GMT+08:00', gmt: 'Asia/Ulaanbaatar' },
  { tz: 'GMT+08:00', gmt: 'Australia/Perth' },
  { tz: 'GMT+08:00', gmt: 'Etc/GMT-8' },
  { tz: 'GMT+08:45', gmt: 'Australia/Eucla' },
  { tz: 'GMT+09:00', gmt: 'Asia/Chita' },
  { tz: 'GMT+09:00', gmt: 'Asia/Dili' },
  { tz: 'GMT+09:00', gmt: 'Asia/Jayapura' },
  { tz: 'GMT+09:00', gmt: 'Asia/Khandyga' },
  { tz: 'GMT+09:00', gmt: 'Asia/Pyongyang' },
  { tz: 'GMT+09:00', gmt: 'Asia/Seoul' },
  { tz: 'GMT+09:00', gmt: 'Asia/Tokyo' },
  { tz: 'GMT+09:00', gmt: 'Asia/Yakutsk' },
  { tz: 'GMT+09:00', gmt: 'Etc/GMT-9' },
  { tz: 'GMT+09:00', gmt: 'Pacific/Palau' },
  { tz: 'GMT+09:30', gmt: 'Australia/Darwin' },
  { tz: 'GMT+10:00', gmt: 'Antarctica/DumontDUrville' },
  { tz: 'GMT+10:00', gmt: 'Asia/Ust-Nera' },
  { tz: 'GMT+10:00', gmt: 'Asia/Vladivostok' },
  { tz: 'GMT+10:00', gmt: 'Australia/Brisbane' },
  { tz: 'GMT+10:00', gmt: 'Australia/Lindeman' },
  { tz: 'GMT+10:00', gmt: 'Etc/GMT-10' },
  { tz: 'GMT+10:00', gmt: 'Pacific/Chuuk' },
  { tz: 'GMT+10:00', gmt: 'Pacific/Guam' },
  { tz: 'GMT+10:00', gmt: 'Pacific/Port Moresby' },
  { tz: 'GMT+10:00', gmt: 'Pacific/Saipan' },
  { tz: 'GMT+10:30', gmt: 'Australia/Adelaide' },
  { tz: 'GMT+10:30', gmt: 'Australia/Broken Hill' },
  { tz: 'GMT+11:00', gmt: 'Antarctica/Casey' },
  { tz: 'GMT+11:00', gmt: 'Antarctica/Macquarie' },
  { tz: 'GMT+11:00', gmt: 'Asia/Magadan' },
  { tz: 'GMT+11:00', gmt: 'Asia/Sakhalin' },
  { tz: 'GMT+11:00', gmt: 'Asia/Srednekolymsk' },
  { tz: 'GMT+11:00', gmt: 'Australia/Currie' },
  { tz: 'GMT+11:00', gmt: 'Australia/Hobart' },
  { tz: 'GMT+11:00', gmt: 'Australia/Lord Howe' },
  { tz: 'GMT+11:00', gmt: 'Australia/Melbourne' },
  { tz: 'GMT+11:00', gmt: 'Australia/Sydney' },
  { tz: 'GMT+11:00', gmt: 'Etc/GMT-11' },
  { tz: 'GMT+11:00', gmt: 'Pacific/Bougainville' },
  { tz: 'GMT+11:00', gmt: 'Pacific/Efate' },
  { tz: 'GMT+11:00', gmt: 'Pacific/Guadalcanal' },
  { tz: 'GMT+11:00', gmt: 'Pacific/Kosrae' },
  { tz: 'GMT+11:00', gmt: 'Pacific/Noumea' },
  { tz: 'GMT+11:00', gmt: 'Pacific/Pohnpei' },
  { tz: 'GMT+12:00', gmt: 'Asia/Anadyr' },
  { tz: 'GMT+12:00', gmt: 'Asia/Kamchatka' },
  { tz: 'GMT+12:00', gmt: 'Etc/GMT-12' },
  { tz: 'GMT+12:00', gmt: 'Pacific/Fiji' },
  { tz: 'GMT+12:00', gmt: 'Pacific/Funafuti' },
  { tz: 'GMT+12:00', gmt: 'Pacific/Kwajalein' },
  { tz: 'GMT+12:00', gmt: 'Pacific/Majuro' },
  { tz: 'GMT+12:00', gmt: 'Pacific/Nauru' },
  { tz: 'GMT+12:00', gmt: 'Pacific/Norfolk' },
  { tz: 'GMT+12:00', gmt: 'Pacific/Tarawa' },
  { tz: 'GMT+12:00', gmt: 'Pacific/Wake' },
  { tz: 'GMT+12:00', gmt: 'Pacific/Wallis' },
  { tz: 'GMT+13:00', gmt: 'Antarctica/McMurdo' },
  { tz: 'GMT+13:00', gmt: 'Etc/GMT-13' },
  { tz: 'GMT+13:00', gmt: 'Pacific/Auckland' },
  { tz: 'GMT+13:00', gmt: 'Pacific/Enderbury' },
  { tz: 'GMT+13:00', gmt: 'Pacific/Fakaofo' },
  { tz: 'GMT+13:00', gmt: 'Pacific/Tongatapu' },
  { tz: 'GMT+13:45', gmt: 'Pacific/Chatham' },
  { tz: 'GMT+14:00', gmt: 'Etc/GMT-14' },
  { tz: 'GMT+14:00', gmt: 'Pacific/Apia' },
  { tz: 'GMT+14:00', gmt: 'Pacific/Kiritimati' }
]
```

### Language

````
```javascript
[
  {
    code: 'ca-ES',
    en: 'Catalan',
    lang: '加泰罗尼亚语'
  },
  {
    code: 'prs-AF',
    en: 'Dari',
    lang: '达里语'
  },
  {
    code: 'ps-AF',
    en: 'Pashto',
    lang: '普什图语'
  },
  {
    code: 'sq-AL',
    en: 'Albanian',
    lang: '阿尔巴尼亚语'
  },
  {
    code: 'hy-AM',
    en: 'Armenian',
    lang: '亚美尼亚语'
  },
  {
    code: 'pt-PT',
    en: 'Portuguese',
    lang: '葡萄牙语'
  },
  {
    code: 'en-US',
    en: 'English',
    lang: '英语'
  },
  {
    code: 'es-AR',
    en: 'Spanish',
    lang: '西班牙语'
  },
  {
    code: 'de-AT',
    en: 'German',
    lang: '德语'
  },
  {
    code: 'ar-AE',
    en: 'Arabic',
    lang: '阿拉伯语'
  },
  {
    code: 'sv-SE',
    en: 'Swedish',
    lang: '瑞典语'
  },
  {
    code: 'fi-FI',
    en: 'Finnish',
    lang: '芬兰语'
  },
  {
    code: 'az-Latn-AZ',
    en: 'Azerbaijani',
    lang: '阿塞拜疆语'
  },
  {
    code: 'az-Cyrl-AZ',
    en: 'Azerbaijani',
    lang: '阿塞拜疆语'
  },
  {
    code: 'bs-BA',
    en: 'Bosnian',
    lang: '波斯尼亚语'
  },
  {
    code: 'hr-BA',
    en: 'Croatian',
    lang: '克罗地亚语'
  },
  {
    code: 'sr-BA',
    en: 'Serbian',
    lang: '塞尔维亚语'
  },
  {
    code: 'nl-NL',
    en: 'Dutch',
    lang: '荷兰语'
  },
  {
    code: 'bn-BD',
    en: 'Bengali',
    lang: '孟加拉语'
  },
  {
    code: 'en-AU',
    en: 'English',
    lang: '英语'
  },
  {
    code: 'fr-FR',
    en: 'French',
    lang: '法语'
  },
  {
    code: 'bg-BG',
    en: 'Bulgarian',
    lang: '保加利亚语'
  },
  {
    code: 'ar-BH',
    en: 'Arabic',
    lang: '阿拉伯语'
  },
  {
    code: 'quz-BO',
    en: 'Quechua',
    lang: '克丘亚语'
  },
  {
    code: 'fr-BE',
    en: 'French',
    lang: '法语'
  },
  {
    code: 'pt-BR',
    en: 'Portuguese',
    lang: '葡萄牙语'
  },
  {
    code: 'tn-ZA',
    en: 'Tswana',
    lang: '茨瓦纳语'
  },
  {
    code: 'be-BY',
    en: 'Belarus',
    lang: '白俄罗斯语'
  },
  {
    code: 'en-BZ',
    en: 'English',
    lang: '英语'
  },
  {
    code: 'fr-CA',
    en: 'French',
    lang: '法语'
  },
  {
    code: 'ms-BN',
    en: 'Malay',
    lang: '马来语'
  },
  {
    code: 'arn-CL',
    en: 'Mapdangan',
    lang: '马普丹冈语'
  },
  {
    code: 'es-CO',
    en: 'Spanish',
    lang: '西班牙语'
  },
  {
    code: 'es-CR',
    en: 'Spanish',
    lang: '西班牙语'
  },
  {
    code: 'es-ES',
    en: 'Spanish',
    lang: '西班牙语'
  },
  {
    code: 'el-GR',
    en: 'Greek',
    lang: '希腊语'
  },
  {
    code: 'tr-TR',
    en: 'Turkish',
    lang: '土耳其语'
  },
  {
    code: 'cs-CZ',
    en: 'Czech',
    lang: '捷克语'
  },
  {
    code: 'de-DE',
    en: 'German',
    lang: '德语'
  },
  {
    code: 'ar-SA',
    en: 'Arabic',
    lang: '阿拉伯语'
  },
  {
    code: 'da-DK',
    en: 'Danish',
    lang: '丹麦语'
  },
  {
    code: 'es-DO',
    en: 'Spanish',
    lang: '西班牙语'
  },
  {
    code: 'ar-DZ',
    en: 'Arabic',
    lang: '阿拉伯语'
  },
  {
    code: 'quz-EC',
    en: 'Quechua',
    lang: '克丘亚语'
  },
  {
    code: 'et-EE',
    en: 'Estonian',
    lang: '爱沙尼亚语'
  },
  {
    code: 'ar-EG',
    en: 'Arabic',
    lang: '阿拉伯语'
  },
  {
    code: 'se-FI',
    en: 'Northern',
    lang: '北萨米语'
  },
  {
    code: 'de-CH',
    en: 'German',
    lang: '德语'
  },
  {
    code: 'fo-FO',
    en: 'Faroese',
    lang: '法罗语'
  },
  {
    code: 'ka-GE',
    en: 'Georgian',
    lang: '格鲁吉亚语'
  },
  {
    code: 'kl-GL',
    en: 'Greenland',
    lang: '格陵兰语'
  },
  {
    code: 'qut-GT',
    en: 'Keeche',
    lang: '基切语'
  },
  {
    code: 'zh-HK',
    en: 'Chinese',
    lang: '中文'
  },
  {
    code: 'es-HN',
    en: 'Spanish',
    lang: '西班牙语'
  },
  {
    code: 'hr-HR',
    en: 'Croatian',
    lang: '克罗地亚语'
  },
  {
    code: 'hu-HU',
    en: 'Hungarian',
    lang: '匈牙利语'
  },
  {
    code: 'he-IL',
    en: 'Hebrew',
    lang: '希伯来语'
  },
  {
    code: 'ga-IE',
    en: 'Irish',
    lang: '爱尔兰语'
  },
  {
    code: 'id-ID',
    en: 'Indonesian',
    lang: '印度尼西亚语'
  },
  {
    code: 'en-GB',
    en: 'English',
    lang: '英语'
  },
  {
    code: 'hi-IN',
    en: 'Hindi',
    lang: '印地语'
  },
  {
    code: 'is-IS',
    en: 'Island',
    lang: '冰岛语'
  },
  {
    code: 'fa-IR',
    en: 'Persian',
    lang: '波斯语'
  },
  {
    code: 'ar-IQ',
    en: 'Arabic',
    lang: '阿拉伯语'
  },
  {
    code: 'it-IT',
    en: 'Italian',
    lang: '意大利语'
  },
  {
    code: 'en-JM',
    en: 'English',
    lang: '英语'
  },
  {
    code: 'ar-JO',
    en: 'Arabic',
    lang: '阿拉伯语'
  },
  {
    code: 'ja-JP',
    en: 'Japanese',
    lang: '日语'
  },
  {
    code: 'km-KH',
    en: 'Khmer',
    lang: '高棉语'
  },
  {
    code: 'ar-KW',
    en: 'Arabic',
    lang: '阿拉伯语'
  },
  {
    code: 'de-LI',
    en: 'German',
    lang: '德语'
  },
  {
    code: 'si-LK',
    en: 'Sinhala',
    lang: '僧伽罗语'
  },
  {
    code: 'ar-LB',
    en: 'Arabic',
    lang: '阿拉伯语'
  },
  {
    code: 'lt-LT',
    en: 'Lithuanian',
    lang: '立陶宛语'
  },
  {
    code: 'de-LU',
    en: 'German',
    lang: '德语'
  },
  {
    code: 'lv-LV',
    en: 'Latvian',
    lang: '拉脱维亚语'
  },
  {
    code: 'ar-LY',
    en: 'Arabic',
    lang: '阿拉伯语'
  },
  {
    code: 'ar-MA',
    en: 'Arabic',
    lang: '阿拉伯语'
  },
  {
    code: 'fr-MC',
    en: 'French',
    lang: '法语'
  },
  {
    code: 'ro-RO',
    en: 'Romanian',
    lang: '罗马尼亚语'
  },
  {
    code: 'sr-Latn-ME',
    en: 'Serbian',
    lang: '塞尔维亚语'
  },
  {
    code: 'mk-MK',
    en: 'Macedonian',
    lang: '马其顿语'
  },
  {
    code: 'mt-MT',
    en: 'Maltese',
    lang: '马耳他语'
  },
  {
    code: 'dv-MV',
    en: 'Dhivehi',
    lang: '迪维希语'
  },
  {
    code: 'es-MX',
    en: 'Spanish',
    lang: '西班牙语'
  },
  {
    code: 'ms-MY',
    en: 'Malay',
    lang: '马来语'
  },
  {
    code: 'ha-Latn-NG',
    en: 'Hausa',
    lang: '豪撒语'
  },
  {
    code: 'es-NI',
    en: 'Spain',
    lang: '西班牙语'
  },
  {
    code: 'fy-NL',
    en: 'Frisian',
    lang: '弗里西亚语'
  },
  {
    code: 'se-NO',
    en: 'Northern',
    lang: '北萨米语'
  },
  {
    code: 'ne-NP',
    en: 'Nepal',
    lang: '尼泊尔语'
  },
  {
    code: 'ar-OM',
    en: 'Arabic',
    lang: '阿拉伯语'
  },
  {
    code: 'es-PA',
    en: 'Spanish',
    lang: '西班牙语'
  },
  {
    code: 'quz-PE',
    en: 'Quechua',
    lang: '克丘亚语'
  },
  {
    code: 'zh-MO',
    en: 'Chinese',
    lang: '中文'
  },
  {
    code: 'fil-PH',
    en: 'Philippine',
    lang: '菲律宾语'
  },
  {
    code: 'pl-PL',
    en: 'Polish',
    lang: '波兰语'
  },
  {
    code: 'ur-PK',
    en: 'Urdu',
    lang: '乌尔都语'
  },
  {
    code: 'es-PR',
    en: 'Spain',
    lang: '西班牙语'
  },
  {
    code: 'ar-QA',
    en: 'Arabic',
    lang: '阿拉伯语'
  },
  {
    code: 'sr-Latn-RS',
    en: 'Serbian',
    lang: '塞尔维亚语'
  },
  {
    code: 'es-PY',
    en: 'Spanish',
    lang: '西班牙语'
  },
  {
    code: 'ru-RU',
    en: 'Russian',
    lang: '俄语'
  },
  {
    code: 'se-SE',
    en: 'Northern',
    lang: '北萨米语'
  },
  {
    code: 'en-SG',
    en: 'English',
    lang: '英语'
  },
  {
    code: 'sl-SI',
    en: 'Slovenian',
    lang: '斯洛文尼亚语'
  },
  {
    code: 'nn-no',
    en: 'Norwegian',
    lang: '挪威语'
  },
  {
    code: 'sk-SK',
    en: 'Slovak',
    lang: '斯洛伐克语'
  },
  {
    code: 'wo-SN',
    en: 'Wolof',
    lang: '沃洛夫语'
  },
  {
    code: 'es-SV',
    en: 'Spanish',
    lang: '西班牙语'
  },
  {
    code: 'ar-SY',
    en: 'Arabic',
    lang: '阿拉伯语'
  },
  {
    code: 'th-TH',
    en: 'Thai',
    lang: '泰语'
  },
  {
    code: 'ar-TN',
    en: 'Arabic',
    lang: '阿拉伯语'
  },
  {
    code: 'sw-KE',
    en: 'Swah',
    lang: '斯瓦希里语'
  },
  {
    code: 'uk-UA',
    en: 'Ukrainian',
    lang: '乌克兰语'
  },
  {
    code: 'es-UY',
    en: 'Spanish',
    lang: '西班牙语'
  },
  {
    code: 'es-VE',
    en: 'Spanish',
    lang: '西班牙语'
  },
  {
    code: 'vi-VN',
    en: 'Vietnamese',
    lang: '越南语'
  },
  {
    code: 'ar-YE',
    en: 'Arabic',
    lang: '阿拉伯语'
  },
  {
    code: 'en-ZW',
    en: 'English',
    lang: '英语'
  },
  {
    code: 'nso-ZA',
    en: 'Basotho',
    lang: '巴索托语'
  },
  {
    code: 'zh-CN',
    en: 'Chinese',
    lang: '中文'
  },
  {
    code: 'am-ET',
    en: 'Amharic',
    lang: '阿姆哈拉语'
  },
  {
    code: 'en-TT',
    en: 'English',
    lang: '英语'
  },
  {
    code: 'zh-TW',
    en: 'Chinese',
    lang: '中文(繁体)'
  },
  {
    code: 'en-NZ',
    en: 'English',
    lang: '英语'
  },
  {
    code: 'mi-NZ',
    en: 'Maori',
    lang: '毛利语'
  },
  {
    code: 'ko-KR',
    en: 'North',
    lang: '朝鲜语'
  },
  {
    code: 'lo-LA',
    en: 'Lao',
    lang: '老挝语'
  },
  {
    code: 'ky-KG',
    en: 'Kyrgyz',
    lang: '吉尔吉斯语'
  },
  {
    code: 'kk-KZ',
    en: 'Kazakh',
    lang: '哈萨克语'
  },
  {
    code: 'tg-Cyrl-TJ',
    en: 'Tajik',
    lang: '塔吉克语'
  },
  {
    code: 'tk-TM',
    en: 'Turkmen',
    lang: '土库曼语'
  },
  {
    code: 'uz-Latn-UZ',
    en: 'Uzbek',
    lang: '乌兹别克语'
  },
  {
    code: 'mn-Mong',
    en: 'Mongolian',
    lang: '蒙古语'
  },
  {
    code: 'rw-RW',
    en: 'Rwanda',
    lang: '卢旺达语'
  }
]
```
````

### Fonts

```
[
  'Comic Sans MS Bold',
  'Comic Sans',
  'Caurier Regular',
  'Fixedsys Regular',
  'Gabriola Regular',
  'HoloLens MDL2 Assets Regular',
  'Impact Regular',
  'Javanese Text Regular',
  'Leelawadee UI',
  'Lucida Console Regular',
  'Lucida Sans Unicode Regular',
  'Microsoft Himalaya Regular',
  'Microsoft PhangsPa',
  'Microsoft Sans Serif Regular',
  'Microsoft YaHei UI',
  'Microsoft Yi Baiti Regular',
  'MingLiu_HKSCS-ExtB Regular',
  'MingLiu-ExtB Regular',
  'Modern Regular',
  'Mongolia Baiti Regular',
  'MS Gothic Regular',
  'MS PGothic Regular',
  'MS Sans Serif Regular',
  'MS Serif Regular',
  'MS UI Gothic Regular',
  'MV Boli Regular',
  'Nimarla UI',
  'Myanmar Tet',
  'Nirmala UI',
  'NSimSun Regular',
  'PMingLiU-ExtB Regular',
  'Roman Regular',
  'Script Regular',
  'Segoe MDL2 Assets Regular',
  'Segoe UI Emoji Regular',
  'Segoe UI Historic Regular',
  'Segoe UI Symbol Regular',
  'SimSun Regular',
  'SimSun-ExtB Regular',
  'Sitka Banner',
  'Sitka Display',
  'Sitka Heading',
  'Sitka Subheading',
  'Sitka Text',
  'Small Fonts Regular',
  'Sylfaen Regular',
  'Symbol Regular',
  'System Bold',
  'Tahoma',
  'Terminal',
  'Webdings Regular',
  'Wingdings Regular',
  'Yu Gothic UI',
  'Arial Black',
  'Calibri Light',
  'Courier',
  'Fixedsys',
  'Franklin Gothic Medium',
  'HoloLens MDL2 Assets',
  'Leelawadee UI Semilight',
  'MS Sans Serif',
  'MS Serif',
  'Malgun Gothic Semilight',
  'Microsoft JhengHei Light',
  'Microsoft JhengHei UI Light',
  'Microsoft YaHei Light',
  'Microsoft YaHei UI Light',
  'Modern',
  'NSimsun',
  'Nirmala UI Semilight',
  'Roman',
  'Script',
  'Segoe MDL2 Assets',
  'Segoe UI Black',
  'Segoe UI Historic',
  'Segoe UI Light',
  'Segoe UI Semibold',
  'Segoe UI Semilight',
  'Small Fonts',
  'System',
  'Wingdings',
  'Yu Gothic Light',
  'Yu Gothic Medium',
  'Yu Gothic UI Light',
  'Yu Gothic UI Semibold',
  'Yu Gothic UI Semilight',
  'Al Bayan',
  'Al Nile',
  'Al Tarikh',
  'American Typewriter',
  'Andale Mono',
  'Apple Braille',
  'Apple Chancery',
  'Apple Color Emoji',
  'Apple SD Gothic Neo',
  'Apple Symbols',
  'AppleGothic',
  'AppleMyungjo',
  'Arial Hebrew',
  'Arial Narrow',
  'Arial Rounded MT Bold',
  'Arial Unicode MS',
  'Avenir Next Condensed',
  'Avenir Next',
  'Avenir',
  'Ayuthaya',
  'Baghdad',
  'Bangla MN',
  'Bangla Sangam MN',
  'Baskerville',
  'Beirut',
  'Big Caslon',
  'Bodoni Ornaments',
  'Bradley Hand',
  'Brush Script MT',
  'Chalkboard SE',
  'Chalkboard',
  'Chalkduster',
  'Cochin',
  'Copperplate',
  'Corsiva Hebrew',
  'Damascus',
  'DecoType Naskh',
  'Devanagari MT',
  'Devanagari Sangam MN',
  'Didot',
  'Diwan Kufi',
  'Diwan Thuluth',
  'Euphemia UCAS',
  'Farah',
  'Farisi',
  'Futura',
  'GB18030 Bitmap',
  'Geeza Pro',
  'Geneva',
  'Gill Sans',
  'Gujarati MT',
  'Gujarati Sangam MN',
  'Gurmukhi MN',
  'Gurmukhi MT',
  'Gurmukhi Sangam MN',
  'Heiti Sc',
  'Helvetica Neue',
  'Helvetica',
  'Herculanum',
  'Hiragino Sans GB',
  'Hiragino Sans',
  'Hoefler Text',
  'ITF Devanagari',
  'InaiMathi',
  'Kannada MN',
  'Kefa',
  'Khmer MN',
  'Khmer Sangam MN',
  'Kohinoor Bangla',
  'Kohinoor Telugu',
  'Kokonor',
  'Krungthep',
  'KufiStandardGK',
  'Lao MN',
  'Lao Sangam MN',
  'Lucida Grande',
  'Luminari',
  'Marker Felt',
  'Menlo',
  'Mishafi Gold',
  'Monaco',
  'Mshtakan',
  'Muna',
  'Nadeem',
  'New Peninim MT',
  'Noteworthy',
  'Optima',
  'Oriya Sangam MN',
  'PT Mono',
  'PT Sans Caption',
  'PT Sans Narrow',
  'PT Sans',
  'PT Serif Caption',
  'PT Serif',
  'Palatino',
  'Papyrus',
  'Phosphate',
  'PingFang HK',
  'Plantagenet Cherokee',
  'Raanana',
  'STIXGeneral',
  'STIXIntegralsD',
  'STIXIntegralsSm',
  'STIXIntegralsUp',
  'STIXIntegralsUpD',
  'STIXIntegralsUpSm',
  'STIXSizeFiveSym',
  'STIXSizeFourSym',
  'STIXSizeOneSym',
  'STIXSizeThreeSym',
  'STIXSizeTwoSym',
  'STIXVariants',
  'STSong',
  'Sana',
  'Sathu',
  'Savoye LET',
  'SignPainter',
  'Silom',
  'sinhala Sangam MN',
  'Skia',
  'Snell Roundhand',
  'Songti SC',
  'Sukhumvit Set',
  'Tamil Sangam MN',
  'Telugu Sangam MN',
  'Thonburi',
  'Trattatello',
  'Waseem',
  'Zapfino',
  'Charter',
  'DIN Alternate',
  'DIN Condensed',
  'Noto Nastaliq Urdu',
  'Rockwell',
  'Zapf Dingbats',
  'BlinkMacSystemFont',
  'Mishafi',
  'Myanmar MN',
  'Myanmar Sangam MN',
  'Oriya MN',
  'Songti TC',
  'Tamil MN',
  'Telugu MN'
]
```

### OS

```
['Win32', 'Linux i686', 'Linux armv7l', 'MacIntel']
```

### Cookie format

```
[{
    "domain": ".instagram.com", // string
    "expirationDate": 1680060024.48996, // must be a number
    "httpOnly": false,
    "name": "ig_nrcb",
    "path": "/",
    "secure": true,
    "session": false,
    "storeId": null, 
    "value": "1", // string
    "sameSite": "Strict"
}, {...}]
```

### Plugins

```
// Select several settings randomly from the list below. For example：
{
  ...,
  enablePlugins: false, // Boolean value
  plugins: '[{"name":"PDF Viewer","description":"Portable Document Format","filename":"internal-pdf-viewer","mimeType":"application/pdf|text/pdf","mimeDescription":"Portable Document Format|Portable Document Format","suffixes":"pdf|pdf"},{"name":"Chrome PDF Viewer","description":"Portable Document Format","filename":"internal-pdf-viewer","mimeType":"application/pdf|text/pdf","mimeDescription":"Portable Document Format|Portable Document Format","suffixes":"pdf|pdf"}]'
}

// List
[
  {
    name: 'PDF Viewer',
    description: 'Portable Document Format',
    filename: 'internal-pdf-viewer',
    mimeType: 'application/pdf|text/pdf',
    mimeDescription: 'Portable Document Format|Portable Document Format',
    suffixes: 'pdf|pdf'
  },
  {
    name: 'Chrome PDF Viewer',
    description: 'Portable Document Format',
    filename: 'internal-pdf-viewer',
    mimeType: 'application/pdf|text/pdf',
    mimeDescription: 'Portable Document Format|Portable Document Format',
    suffixes: 'pdf|pdf'
  },
  {
    name: 'Chromium PDF Viewer',
    description: 'Portable Document Format',
    filename: 'internal-pdf-viewer',
    mimeType: 'application/pdf|text/pdf',
    mimeDescription: 'Portable Document Format|Portable Document Format',
    suffixes: 'pdf|pdf'
  },
  {
    name: 'Microsoft Edge PDF Viewer',
    description: 'Portable Document Format',
    filename: 'internal-pdf-viewer',
    mimeType: 'application/pdf|text/pdf',
    mimeDescription: 'Portable Document Format|Portable Document Format',
    suffixes: 'pdf|pdf'
  },
  {
    name: 'WebKit built-in PDF',
    description: 'Portable Document Format',
    filename: 'internal-pdf-viewer',
    mimeType: 'application/pdf|text/pdf',
    mimeDescription: 'Portable Document Format|Portable Document Format',
    suffixes: 'pdf|pdf'
  }
]
```

### SSL Features

```
// Select several settings randomly from the list below. For example：
{
  ...,
  disableSslCipherSuitesFlag: false, // ssl是否禁用特性，默认不禁用，注意开启后自定义设置时，有可能会导致某些网站无法访问
  disableSslCipherSuites: '[{"label":"TLS_AES_128_CCM_8_SHA256","value":"0x1305"},{"label":"TLS_AES_128_CCM_SHA256","value":"0x1304"}]', // ssl 禁用特性，序列化的ssl特性值，参考附录
}

// List
[
  {
    label: 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',
    value: '0xC02C'
  },
  {
    label: 'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384',
    value: '0xC030'
  },
  {
    label: 'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256',
    value: '0xC02B'
  },
  {
    label: 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256',
    value: '0xC02F'
  },
  {
    label: 'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256',
    value: '0xCCA9'
  },
  {
    label: 'TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256',
    value: '0xCCA8'
  },
  {
    label: 'TLS_DHE_RSA_WITH_AES_256_GCM_SHA384',
    value: '0x009F'
  },
  {
    label: 'TLS_DHE_RSA_WITH_AES_128_GCM_SHA256',
    value: '0x009E'
  },
  {
    label: 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384',
    value: '0xC024'
  },
  {
    label: 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384',
    value: '0xC028'
  },
  {
    label: 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA',
    value: '0xC00A'
  },
  {
    label: 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA',
    value: '0xC014'
  },
  {
    label: 'TLS_DHE_RSA_WITH_AES_256_CBC_SHA256',
    value: '0x006B'
  },
  {
    label: 'TLS_DHE_RSA_WITH_AES_256_CBC_SHA',
    value: '0x0039'
  },
  {
    label: 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256',
    value: '0xC023'
  },
  {
    label: 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256',
    value: '0xC027'
  },
  {
    label: 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA',
    value: '0xC009'
  },
  {
    label: 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA',
    value: '0xC013'
  },
  {
    label: 'TLS_DHE_RSA_WITH_AES_128_CBC_SHA256',
    value: '0x0067'
  },
  {
    label: 'TLS_DHE_RSA_WITH_AES_128_CBC_SHA',
    value: '0x0033'
  },
  {
    label: 'TLS_RSA_WITH_AES_256_GCM_SHA384',
    value: '0x009D'
  },
  {
    label: 'TLS_RSA_WITH_AES_128_GCM_SHA256',
    value: '0x009C'
  },
  {
    label: 'TLS_RSA_WITH_AES_256_CBC_SHA256',
    value: '0x003D'
  },
  {
    label: 'TLS_RSA_WITH_AES_128_CBC_SHA256',
    value: '0x003C'
  },
  {
    label: 'TLS_RSA_WITH_AES_256_CBC_SHA',
    value: '0x0035'
  },
  {
    label: 'TLS_RSA_WITH_AES_128_CBC_SHA',
    value: '0x002F'
  },
  {
    label: 'TLS_AES_128_GCM_SHA256',
    value: '0x1301'
  },
  {
    label: 'TLS_AES_256_GCM_SHA384',
    value: '0x1302'
  },
  {
    label: 'TLS_AES_128_CCM_8_SHA256',
    value: '0x1305'
  },
  {
    label: 'TLS_AES_128_CCM_SHA256',
    value: '0x1304'
  }
]
```


# Cloud Phone Profiles

### API Documentation

1. The concurrency limit for cloud phone APIs is different from browser windows. The limit for cloud phone API requests is: 1 request per second.
2. Many cloud phone APIs involve billing, especially for actions like powering on, suspending, and shutting down. Please make sure to understand the details thoroughly before performing these operations.
3. Operations related to cloud phone management, such as powering on, shutting down, performing a one-click fresh start, installing, and uninstalling apps, are asynchronous APIs. They do not immediately return the cloud phone’s status. After calling these APIs, you need to call the check power-on status API to verify if the cloud phone has powered on.
4. When using temporary computing power, billing starts immediately after the cloud phone is powered on and stops when the cloud phone is powered off. Please be sure to understand this.

### Create Cloud Phone Profile

**POST** `/phone/profile/add`

```json
// Example of request body
{
  "computeType": 0,
  "name": "",
  "remark": "",
  "port": 45001,
  "proxyUserName": "xge66fa14336ca14",
  "proxyPassword": "dMpfTa0tbr512cmi4P",
  "host": "1.2.3.4",
  "regionId": "d69bcf13db844d1cb81e779f64161223",
  "cloudPhonesFingerPrint": {},
  "ipCheckService": "ip123in",
  "udp": 1
}
```

* Parameter Details

| Parameter              | Type   | Required | 默认值     | Description                                                                                                                                                 |
| ---------------------- | ------ | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| regionId               | string | Yes      | -       | Compute type ID, click the "ADD" button in the client interface, select the type, then click the copy button on the right to copy the ID.                   |
| computeType            | int    | Yes      | 0       | Compute type, options: 0, 1, 2; (0: Smart Allocation, 1: Temporary Compute Power, 2: Monthly Compute Power)                                                 |
| name                   | string | No       | -       | Profile name, maximum 30 characters                                                                                                                         |
| remark                 | string | No       | -       | Profile remark, maximum 500 characters 符                                                                                                                    |
| host                   | string | Yes      | -       | Proxy host, e.g., 1.2.3.44                                                                                                                                  |
| port                   | int    | Yes      | -       | Proxy port, e.g., 123                                                                                                                                       |
| proxyUserName          | string | Yes      | -       | Proxy username, maximum 200 characters                                                                                                                      |
| proxyPassword          | string | Yes      | -       | Proxy password, maximum 200 characters                                                                                                                      |
| ipCheckService         | string | Yes      | ip123in | Proxy IP check service, options: ip123in, ip-api                                                                                                            |
| udp                    | int    | Yes      | 1       | Proxy UDP protocol, options: 1, 0; If unable to connect to the network, you may try turning off UDP (not recommended to turn off)                           |
| cloudPhonesFingerPrint | object | Yes      | `{}`    | Fingerprint configuration object, defaults to no configuration unless there is a special requirement. If control is needed, refer to the JSON object below. |

* cloudPhonesFingerPrint object

```json
// Example of request body
{
  "isIpCreatePosition": true, // Generate geographic location based on IP; if not enabled, can be customized.
  "isIpCreateLanguage": true, // Generate corresponding system language based on IP country.
  "isIpCreateTimeZone": true, // Generate corresponding time zone based on IP.
  "timeZone": "", // Custom time zone when isIpCreateTimeZone is false.
  "timeZoneOffset": 0, // Custom time zone offset when isIpCreateTimeZone is false.
  "localeLanguage": "", // Custom language when isIpCreateLanguage is false.
  "longitude": "", // Custom longitude when isIpCreatePosition is false.
  "latitude": "" // Custom latitude when isIpCreatePosition is false.
}
```

### Modify Cloud Phone Profile, RegionId (Compute Type) Cannot Be Modified

**POST** `/phone/profile/update`

```json
// Example of request body
{
  "id": "2c9cce4493a98fa90193aa7d71e70043",
  "name": "Modified Name"
}
```

* Parameter Details

Except for the ID, only the fields that need to be modified should be passed. For example, if the name needs to be modified, only the ID and name fields need to be passed. The full request parameters are the same as those of the `/phone/profile/add` endpoint.

### Open Cloud Phone

Opening a cloud phone is an asynchronous API. If the cloud phone is in a powered-off state, it typically takes around 1 minute to power on. If the cloud phone is being resumed from a suspended state, it can take as little as 5 seconds to open. During this time, you can call the /phone/running API to check if the cloud phone has powered on.

**POST** `/phone/openphone`

```json
// Example of request body
{
  "id": "2c9cce44930a5b0e01930a7c95b0000a"
}
```

* Parameter Details

| Parameter | Type   | Required | Description            |
| --------- | ------ | -------- | ---------------------- |
| id        | string | Yes      | Cloud phone profile ID |

### Get Cloud Phone Profile List

POST `/phone/list`

```json
// Example of request body
{
  "page": 0,
  "pageSize": 2
}
// In the returned list, if adb is enabled in the environment, the adb connection information will be returned in the list, as follows:：
// "{\"code\":\"SAjp7zSIJfHGAZi9Ot\",\"port\":21136,\"ip\":\"124.236.71.153\"}"
// Please format it yourself, code is the adb connection password
```

* Parameter Details

| Parameter | Type    | Required | Description                                                                                                    |
| --------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- |
| page      | number  | Yes      | Page number, starting from 0                                                                                   |
| pageSize  | number  | Yes      | Number of items per page, maximum 100. If a number greater than 100 is passed, only 100 items will be returned |
| groupId   | string  | No       | Group ID ID                                                                                                    |
| name      | string  | No       | Profile name, fuzzy matching                                                                                   |
| seq       | number  | No       | Sequence number, exact match                                                                                   |
| minSeq    | number  | No       | Minimum sequence, query data greater than this sequence number                                                 |
| maxSeq    | integer | No       | Maximum sequence, query data less than this sequence number                                                    |
| host      | string  | No       | Proxy Host, exact match                                                                                        |

### Suspend Cloud Phone

**POST** `/phone/suspend`

Closes the phone window and suspends the phone. The phone will continue running on the cloud and continue to be billed.

```json
// Example of request body
{
  "id": "2c9cce4493a98fa90193aa7d71e70043"
}
```

* Parameter Details

| Parameter | Type   | Required | Description            |
| --------- | ------ | -------- | ---------------------- |
| id        | string | Yes      | Cloud phone profile ID |

### Shutdown Cloud Phone

**POST** `/phone/shutdown`

Closes the cloud phone window and shuts down the phone. The phone will no longer run on the cloud and billing will stop.

```json
// Example of request body
{
  "id": "2c9cce4493a98fa90193aa7d71e70043"
}
```

* Parameter Details

| Parameter | Type   | Required | Description            |
| --------- | ------ | -------- | ---------------------- |
| id        | string | Yes      | Cloud phone profile ID |

### Get the cloud phone’s boot status

**POST:** `/phone/running`

Check if the cloud phone is powered on.

```json
// Example of request body
{
  "id": "2c9cce4493a98fa90193aa7d71e70043"
}
```

* Parameter Details

| Parameter | Type   | Required | Description            |
| --------- | ------ | -------- | ---------------------- |
| id        | string | Yes      | Cloud phone profile ID |

```json
// Example of response body
{
  "success": true,
  "data": true // true: Enable root access, false: Disable root access
}
```

### Enable/Disable Cloud Phone Root Access

**POST** `/phone/root/switch`

Switching root access is an asynchronous operation, and it is not possible to directly check if root has been successfully enabled or disabled. Users must use third-party tools to monitor the status. Root access can only be toggled when the cloud phone is in a powered-on state.

```json
// Example of response body
{
  "id": "2c9cce4493a98fa90193aa7d71e70043",
  "enable": true
}
```

* Parameter Details

| Parameter | Type    | Required | Description                                          |
| --------- | ------- | -------- | ---------------------------------------------------- |
| id        | string  | Yes      | Cloud phone profile ID                               |
| enable    | boolean | Yes      | true: Enable root access, false: Disable root access |

### Upload File

**POST** `/phone/uploadFile`

When uploading files, if multiple profiles are uploading the same file, it is best to pass the list of profile IDs that need the file upload in one request. The server will upload the local file once and then distribute it to the specified profiles.

The file upload must wait for the previous upload to finish before continuing.

```json
// Example of request body
{
  "path": "C:\\Users\\admin\\AppData\\Roaming\\logs\\aaa.log",
  "ids": ["2c9cce4493a98fa90193aa7d71e70043"]
}
```

* Parameter Details

| Parameter | Type   | Required | Description                                           |
| --------- | ------ | -------- | ----------------------------------------------------- |
| path      | string | Yes      | Absolute file path, e.g., "C:\Users\admin\xxx\aa.txt" |
| ids       | array  | Yes      | Cloud phone profile ID array                          |

### Clear App Data

**POST** `/phone/clearAppData`

Clears the app’s cache data. The user login status will be cleared. Use with caution.

```json
// Example of request body
{
  "id": "2c9cce4493a98fa90193aa7d71e70043",
  "packageName": "com.google.android.googlequicksearchbox"
}
```

* Parameter Details

| Parameter   | Type   | Required | Description      |
| ----------- | ------ | -------- | ---------------- |
| id          | string | Yes      | profile ID       |
| packageName | string | Yes      | App package name |

### Recover Phone Profile

**POST** `/phone/profile/recover`

Resets the cloud phone profile parameters. Each profile can perform a maximum of 60 fresh starts per month. Once used up, the quota resets the next month. Use with caution.

```json
// Example of request body
{
  "id": "2c9cce44930a5b0e01930a7c95b0000a"
}
```

* Parameter Details

| Parameter | Type   | Required | Description            |
| --------- | ------ | -------- | ---------------------- |
| id        | string | Yes      | Cloud phone profile ID |

### Install App

**POST** `/phone/installApp`

Installs an app from the app store. Copy the corresponding version app ID from the app store and call this API to install the app.

```json
// Example of request body
{
  "id": "2c9cce44930a5b0e01930a7c95b0000a",
  "appId": "1855178384240701441"
}
```

* Parameter Details

| Parameter | Type   | Required | Description               |
| --------- | ------ | -------- | ------------------------- |
| id        | string | Yes      | Cloud phone profile ID    |
| appId     | string | Yes      | App ID from the app store |

### Uninstall App

**POST** `/phone/unInstallApp`

Uninstalls the specified app from the cloud phone.

```json
// Example of request body
{
  "id": "2c9cce44930a5b0e01930a7c95b0000a",
  "packageName": "com.example.app"
}
```

* Parameter Details

| Parameter   | Type   | Required | Description            |
| ----------- | ------ | -------- | ---------------------- |
| id          | string | Yes      | Cloud phone profile ID |
| packageName | string | Yes      | App package name       |

### Launch App

**POST** `/phone/launchApp`

Launch the specified app by package name.

```json
// Example of request body
{
  "id": "2c9cce44930a5b0e01930a7c95b0000a",
  "packageName": "com.xxx.xxx"
}
```

* Parameter Details

| Parameter   | Type   | Required | Description            |
| ----------- | ------ | -------- | ---------------------- |
| id          | string | Yes      | Cloud phone profile ID |
| packageName | string | Yes      | App package name       |

### Close App

**POST** `/phone/closeApp`

Closes the app, but the app will continue running in the background.

```json
// Example of request body
{
  "packageName": "com.xxx.xxx",
  "id": "2c9cce44930a5b0e01930a7c95b0000a"
}
```

* Parameter Details

| Parameter   | Type   | Required | Description            |
| ----------- | ------ | -------- | ---------------------- |
| packageName | string | Yes      | App package name       |
| id          | string | Yes      | Cloud phone profile ID |

### Restart Cloud Phone

**POST** `/phone/restart`

Restarts the cloud phone. During the restart, no cloud phone features can be used.

```json
// Example of request body
{
  "id": "2c9cce44930a5b0e01930a7c95b0000a"
}
```

* Parameter Details

| Parameter | Type   | Required | Description            |
| --------- | ------ | -------- | ---------------------- |
| id        | string | Yes      | Cloud phone profile ID |

### Get List of Installed Apps on Cloud Phone

**POST** `/phone/getInstalledAppList`

Gets the list of installed apps on the cloud phone. Only user-installed apps can be retrieved; system apps cannot be accessed.

```json
// Example of request body
{
  "id": "string"
}
```

* Parameter Details

| Parameter | Type   | Required | Description            |
| --------- | ------ | -------- | ---------------------- |
| id        | string | Yes      | Cloud phone profile ID |

### Get Cloud Phone Group List

**POST** `/phone/group/list`

```json
// Example of request body
{
  "page": 0,
  "pageSize": 4,
  "all": true
}
```

* Parameter Details

| Parameter | Type    | Required | Description                                                                                                        |
| --------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------ |
| page      | number  | Yes      | Pagination, starting from 0                                                                                        |
| pageSize  | number  | Yes      | Number of items per page, max 100, default is 10                                                                   |
| all       | boolean | No       | By default, only retrieves the current user’s groups. To retrieve groups within the user’s permissions, pass true. |

### Add Group

**POST** `/phone/group/add`

```json
// Example of request body
{
  "groupName": "111",
  "sortNum": 3
}
```

* Parameter Details

| Parameter | Type   | Required | Description   |
| --------- | ------ | -------- | ------------- |
| groupName | string | Yes      | Group name    |
| sortNum   | number | Yes      | Sorting order |

### Edit Group

**POST** `/phone/group/edit`

```json
// Example of request body
{
  "id": "2c9cce4492b877120192b87811650009",
  "groupName": "11",
  "sortNum": 3
}
```

* Parameter Details

| Parameter | Type   | Required | Description      |
| --------- | ------ | -------- | ---------------- |
| id        | string | Yes      | Group ID         |
| groupName | string | Yes      | Group name       |
| sortNum   | number | Yes      | Group sort order |

### Delete Group

**POST** `/phone/group/delete`

```json
// Example of request body
{
  "id": "2c9cce44932f0e8401932f388bdd0015"
}
```

* Parameter Details

| Parameter | Type   | Required | Description |
| --------- | ------ | -------- | ----------- |
| id        | string | Yes      | Group ID    |

### Batch Update Remarks

**POST** `/phone/batchUpdate/remark`

Batch update remarks. Supports replacement or append mode. By default, the mode is replacement. In append mode, the provided data will be appended to the existing remarks.

```json
// Example of request body
{
  "phoneIds": ["2c9cce44931abdda01931e5354ba0168", "2c9cce44930a5b0e01930a7c95b0000a"],
  "remark": "12"
}
```

* Parameter Details

| Parameter  | Type    | Required | Description                                            |
| ---------- | ------- | -------- | ------------------------------------------------------ |
| phoneIds   | array   | Yes      | List of Cloud phone profile IDs                        |
| remark     | string  | Yes      | Remark text                                            |
| remarkType | integer | Yes      | Optional values: 1 (replace), 2 (append), default is 1 |

### Batch Update Groups

**POST** `/phone/batchUpdate/group`

Batch update profiles to the same group.

```json
// Example of request body
{
  "groupId": "2c9cce4492b877120192b87811650009",
  "phoneIds": ["2c9cce4492be13790192be16f965000a", "2c9cce4493007978019300809a9d0007", "2c9cce44931abdda01931e5354ba0168"]
}
```

* Parameter Details

| Parameter | Type   | Required | Description                     |
| --------- | ------ | -------- | ------------------------------- |
| groupId   | string | Yes      | Group ID                        |
| phoneIds  | array  | Yes      | List of Cloud phone profile IDs |

### Batch Update Proxies

**POST** `/phone/batchUpdate`

Batch update proxy settings for profiles to the same specified proxy information.

```json
// Example of request body
{
  "phoneIds": ["2c9cce4492be13790192be16f965000a", "2c9cce4493007978019300809a9d0007", "2c9cce44931abdda01931e5354ba0168"],
  "host": "1.2.3.4",
  "port": "59059",
  "proxyUserName": "ImL5bo00",
  "proxyPassword": "JYZG7Eqj"
}
```

* Parameter Details

| Parameter     | Type   | Required | Description            |
| ------------- | ------ | -------- | ---------------------- |
| phoneIds      | array  | Yes      | Cloud phone profile ID |
| host          | string | Yes      | Proxy host             |
| port          | int    | Yes      | Proxy port             |
| proxyUserName | string | Yes      | Proxy username         |
| proxyPassword | string | Yes      | Proxy password         |


# RPA Usage Guide

**RPA Basic Operation Process - Video:**

{% embed url="<https://www.youtube.com/watch?v=I3qiKpcwpSU>" %}

Video Appendix PPT: <https://downsoft.bitbrowser.cn/video/BitBrowser-RPA-EN.pdf>

RPA supports variables. The ID of the current window can be obtained through js block, const browserId = automaRefData('variables', 'browserId')

**Automa Script Production - Related Resources:**&#x20;

Automa Official Tutorial: <https://www.automa.site/tutorials>

YouTube Channel(English): <https://www.youtube.com/playlist?list=PLmSJMKhVjzF6-am-XnI7cYinmVA8Klbvl>

YouTube Channel(Chinese): <https://www.youtube.com/playlist?list=PLlcH26KGVLuJbr4IoFVja0N_3i93i59Q->

BiliBili Channel: <https://space.bilibili.com/174931935/channel/collectiondetail?sid=195463>


# Browser Fingerprinting


# IPv4

Internet Protocol version 4 (IPv4) is the fourth version of the Internet Protocol (IP). It is one of the core protocols of standards-based internetworking methods in the Internet and other packet-switched networks. IPv4 was the first version deployed for production on SATNET in 1982 and on the ARPANET in January 1983. It is still used to route most Internet traffic today, even with the ongoing deployment of Internet Protocol version 6 (IPv6), its successor.

IPv4 uses a 32-bit address space which provides 4,294,967,296 (232) unique addresses, but large blocks are reserved for special networking purposes.

Source: Wikipedia


# IPv6

Internet Protocol version 6 (IPv6) is the most recent version of the Internet Protocol (IP), the [communications protocol](https://en.wikipedia.org/wiki/Communication_protocol) that provides an identification and location system for computers on networks and routes traffic across the [Internet](https://en.wikipedia.org/wiki/Internet). IPv6 was developed by the [Internet Engineering Task Force](https://en.wikipedia.org/wiki/Internet_Engineering_Task_Force) (IETF) to deal with the long-anticipated problem of [IPv4 address exhaustion](https://en.wikipedia.org/wiki/IPv4_address_exhaustion), and is intended to replace [IPv4](https://en.wikipedia.org/wiki/IPv4). In December 1998, IPv6 became a Draft Standard for the IETF, which subsequently ratified it as an [Internet Standard](https://en.wikipedia.org/wiki/Internet_Standard) on 14 July 2017.

Devices on the Internet are assigned a unique [IP address](https://en.wikipedia.org/wiki/IP_address) for identification and location definition. With the rapid growth of the Internet after commercialization in the 1990s, it became evident that far more addresses would be needed to connect devices than the IPv4 address space had available. By 1998, the IETF had formalized the successor protocol. IPv6 uses 128-[bit](https://en.wikipedia.org/wiki/Bit) addresses, theoretically allowing 2128, or approximately 3.4×1038 total addresses. The actual number is slightly smaller, as multiple ranges are reserved for special use or completely excluded from use. The two protocols are not designed to be [interoperable](https://en.wikipedia.org/wiki/Interoperable), and thus direct communication between them is impossible, complicating the move to IPv6. However, several [transition mechanisms](https://en.wikipedia.org/wiki/IPv6_transition_mechanism) have been devised to rectify this.

IPv6 provides other technical benefits in addition to a larger addressing space. In particular, it permits hierarchical address allocation methods that facilitate [route aggregation](https://en.wikipedia.org/wiki/Route_aggregation) across the Internet, and thus limit the expansion of [routing tables](https://en.wikipedia.org/wiki/Routing_table). The use of multicast addressing is expanded and simplified, and provides additional optimization for the delivery of services. Device mobility, security, and configuration aspects have been considered in the design of the protocol.

IPv6 addresses are represented as eight groups of four [hexadecimal](https://en.wikipedia.org/wiki/Hexadecimal) digits each, separated by colons. The full representation may be shortened; for example, *2001:0db8:0000:0000:0000:8a2e:0370:7334* becomes *2001:db8::8a2e:370:7334*.

Source: Wikipedia


# Language

Language is one of the basic fingerprints of the browser! Browser basic fingerprint is the characteristic identification that any browser has, including screen resolution, hardware type, operating system, user agent, system font, language, browser plug-in, browser extension, browser settings, time zone difference, and many other information. These fingerprint information is similar to human height, age, and so on, with a high probability of conflict, and can only be used as auxiliary identification.

Source: <https://www.digitalcitizen.life/what-screen-resolution-or-aspect-ratio-what-do-720p-1080i-1080p-mean/>


# Resolution

Screen resolution refers to the clarity of the text and image displayed on the screen. The larger the display, the higher the resolution it usually supports. Whether the screen resolution can be improved depends on the size and function of the monitor and the type of video card used. Technically, "resolution" is the number of pixels per unit area, not the total number of pixels.

Source: <https://www.digitalcitizen.life/what-screen-resolution-or-aspect-ratio-what-do-720p-1080i-1080p-mean/>


# Audio

The Audio API provided by HTML5 for JavaScript programming allows developers to directly operate the original audio stream data in the code, and conduct arbitrary generation, processing, and reconstruction of it, such as improving the voice color, changing the tone, audio segmentation, and other operations, which can even be called the web version of Adobe Audit.

AudioContext fingerprint principle:

1: generate audio information stream (triangular wave), perform FFT transform on it, and calculate SHA value as fingerprint.

2: generate audio information stream (sine wave), conduct dynamic compression processing, and calculate MD5 value.

Both methods are used to clear the audio before it is output to the audio device, and the user is not aware of the fingerprint.

Fundamentals of AudioContext fingerprint:

Slight differences in the hardware or software of the host or browser lead to differences in the processing of audio signals. The same browser on the same device produces the same audio output, and the audio output produced by different machines or browsers will vary.

The principle of AudioContext and Canvas fingerprint is very similar. They both use the difference of hardware or software. The former generates audio, the latter generates pictures, and then calculates different hash values as identification.

Source: <https://segmentfault.com/a/1190000023249147>


# Timezone

A time zone is an area which observes a uniform [standard time](https://en.wikipedia.org/wiki/Standard_time) for [legal](https://en.wikipedia.org/wiki/Legal), [commercial](https://en.wikipedia.org/wiki/Commerce) and [social](https://en.wikipedia.org/wiki/Social) purposes. Time zones tend to follow the boundaries between [countries](https://en.wikipedia.org/wiki/Country) and their [subdivisions](https://en.wikipedia.org/wiki/Administrative_division) instead of strictly following [longitude](https://en.wikipedia.org/wiki/Longitude), because it is convenient for areas in frequent communication to keep the same time.

All time zones are defined as offsets from [Coordinated Universal Time](https://en.wikipedia.org/wiki/Coordinated_Universal_Time) (UTC), ranging from [UTC−12:00](https://en.wikipedia.org/wiki/UTC%E2%88%9212:00) to [UTC+14:00](https://en.wikipedia.org/wiki/UTC%2B14:00). The [offsets](https://en.wikipedia.org/wiki/UTC_offset) are usually a whole number of hours, but a few zones are offset by an additional 30 or 45 minutes, such as in [India](https://en.wikipedia.org/wiki/Indian_Standard_Time), [South Australia](https://en.wikipedia.org/wiki/Time_in_Australia) and [Nepal](https://en.wikipedia.org/wiki/Nepal_Time).

Some areas of higher [latitude](https://en.wikipedia.org/wiki/Latitude) use [daylight saving time](https://en.wikipedia.org/wiki/Daylight_saving_time) for about half of the year, typically by adding one hour to local time during [spring](https://en.wikipedia.org/wiki/Spring_\(season\)) and [summer](https://en.wikipedia.org/wiki/Summer).

Source: Wikipedia


# localStorage

The **`localStorage`** read-only property of the [`window`](https://developer.mozilla.org/en-US/docs/Web/API/Window) interface allows you to access a [`Storage`](https://developer.mozilla.org/en-US/docs/Web/API/Storage) object for the [`Document`](https://developer.mozilla.org/en-US/docs/Web/API/Document)'s [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin); the stored data is saved across browser sessions.

`localStorage` is similar to [`sessionStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage), except that while `localStorage` data has no expiration time, `sessionStorage` data gets cleared when the page session ends — that is, when the page is closed. (`localStorage` data for a document loaded in a "private browsing" or "incognito" session is cleared when the last "private" tab is closed.)

Source: [https://zhidao.baidu.com/question/304730398919931564.html](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)


# Geo

The Geolocation API gives websites access to a high-level interface that allows them to query physical location information such as latitude and longitude, thereby breaking the user's anonymity. This page will check if the Geolocation API works in your browser, show all the data that can be retrieved, and ensure that websites will not access the API without your explicit permission.

Source: <https://browserleaks.com/geo>


# Fonts

Font fingerprinting techniques are based on measuring the onscreen dimensions of HTML elements filled with text pieces or single Unicode glyphs. Font rendering in web browsers is affected by many factors, and these measurements may vary slightly.

Fonts Enumeration attack is a brute-force method that tries different fonts from a sizeable font-family dictionary. If the rendered element's size differs from the default values, it means that the substituted font is present in the system. The Unicode Glyphs Measurement does almost the same job. Instead of a text line, it uses single, specifically selected Unicode characters with a large font-size, and uses only default letterforms as a font-family. Fingerprints are formed after hashing the obtained measurement results.

Source: <https://browserleaks.com/fonts>


# Do Not Track

Do Not Track (DNT) is a formerly official [HTTP header field](https://en.wikipedia.org/wiki/List_of_HTTP_header_fields), designed to allow internet users to [opt-out](https://en.wikipedia.org/wiki/Opt-out) of [tracking](https://en.wikipedia.org/wiki/Web_tracking) by websites—which includes the collection of data regarding a user's activity across multiple distinct contexts, and the retention, use, or sharing of data derived from that activity outside the context in which it occurred.

Source: wikipedia


# SSL

Transport Layer Security (TLS) is a [cryptographic protocol](https://en.wikipedia.org/wiki/Cryptographic_protocol) designed to provide communications security over a computer network. The [protocol](https://en.wikipedia.org/wiki/Communication_protocol) is widely used in applications such as [email](https://en.wikipedia.org/wiki/Email), [instant messaging](https://en.wikipedia.org/wiki/Instant_messaging), and [voice over IP](https://en.wikipedia.org/wiki/Voice_over_IP), but its use in securing [HTTPS](https://en.wikipedia.org/wiki/HTTPS) remains the most publicly visible.

The TLS protocol aims primarily to provide security, including [privacy](https://en.wikipedia.org/wiki/Privacy) (confidentiality), integrity, and authenticity through the use of [cryptography](https://en.wikipedia.org/wiki/Cryptography), such as the use of [certificates](https://en.wikipedia.org/wiki/Public_key_certificate), between two or more communicating computer applications. It runs in the [presentation layer](https://en.wikipedia.org/wiki/Presentation_layer) and is itself composed of two layers: the TLS record and the TLS [handshake protocols](https://en.wikipedia.org/wiki/Handshake_\(computing\)).

The closely related Datagram Transport Layer Security (DTLS) is a [communications protocol](https://en.wikipedia.org/wiki/Communications_protocol) that provides [security](https://en.wikipedia.org/wiki/Communications_security) to [datagram](https://en.wikipedia.org/wiki/Datagram)-based applications. In technical writing, references to "(D)TLS" are often seen when it applies to both versions.

TLS is a proposed [Internet Engineering Task Force](https://en.wikipedia.org/wiki/Internet_Engineering_Task_Force) (IETF) standard, first defined in 1999, and the current version is TLS 1.3, defined in August 2018. TLS builds on the now-deprecated SSL (Secure Sockets Layer) specifications (1994, 1995, 1996) developed by [Netscape Communications](https://en.wikipedia.org/wiki/Netscape_Communications) for adding the HTTPS protocol to their [Navigator](https://en.wikipedia.org/wiki/Netscape_Navigator) web browser.

Source: [Wikipedia](https://en.wikipedia.org/wiki/Transport_Layer_Security)




---

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

