---
description: >-
  Антидетект-браузер ShardBrowser з унікальними відбитками та локальним API для
  автоматизації профілів через Puppeteer / Playwright
icon: fingerprint
---

# ShardBrowser

<figure>
  <picture>
    <source srcset="../.gitbook/assets/shardbrowser-cover_black.svg" media="(prefers-color-scheme: dark)">
    <img src="../.gitbook/assets/shardbrowser-cover_white.svg" alt="Логотип ShardBrowser">
  </picture>
</figure>

<mark style="color:purple;">**ShardBrowser**</mark> - це наш антидетект-браузер. Створюйте окремі профілі з унікальними відбитками (fingerprint), призначайте кожному профілю окремий проксі та працюйте з десятками акаунтів як різні користувачі на різних пристроях. Локальне **API автоматизації** також дає змогу створювати, запускати профілі та керувати ними через Puppeteer / Playwright.

Офіційний сайт: [shardbrowser.com](https://shardbrowser.com/).

## Завантажити та встановити

<mark style="color:violet;">**Покрокова інструкція зі встановлення, налаштування проксі та створення першого профілю:**</mark>

{% content-ref url="../setup-guides/shardx-browser.md" %}
[Інструкція з налаштування ShardBrowser](../setup-guides/shardx-browser.md)
{% endcontent-ref %}

#### Що вміє ShardBrowser:

* Генерує унікальні відбитки для <mark style="color:purple;">Windows</mark>, <mark style="color:purple;">macOS</mark> і <mark style="color:purple;">Linux</mark> (navigator, screen, client hints, WebGL / WebGPU тощо)
* Шум по окремих векторах: <mark style="color:purple;">canvas, WebGL, audio, client rects, шрифти, сенсори</mark>
* Необмежена кількість профілів, розкладених по папках
* Прив'язка проксі до профілю (<mark style="color:purple;">SOCKS5 / HTTP / HTTPS</mark>) з автотестом при додаванні
* Локальний **HTTP API** для повної автоматизації
* Управління через **CDP** (Chrome DevTools Protocol) - Puppeteer, Playwright та аналоги
* Експорт та імпорт cookies між профілями
* Окремий **MCP-сервер**, щоб профілем міг керувати ШІ-агент

## Відбитки й анти-детект

Для кожного профілю ShardBrowser підставляє узгоджений набір параметрів: User-Agent, платформу, кількість ядер та обсяг пам'яті (ніколи не більше реальної машини), роздільну здатність екрана, Sec-CH-UA тощо. Зверху накладається **шум** по окремих векторах - canvas, WebGL, audio, client rects, шрифти, сенсори. Кожен блок шуму вмикається незалежно, тому відбиток профілю стабільний у межах сесій, але відрізняється від інших профілів і від вашого реального пристрою.

{% hint style="info" %}
Відбиток генерується унікалізованим і не прив'язаний до заліза: кількість ядер CPU та обсяг RAM підганяються під хост і не завищуються, екран обрізається під реальний дисплей. Це знижує ризик виявлення на невідповідностях.
{% endhint %}

## Проксі, QUIC та WebRTC

ShardBrowser особливо добре працює разом із нашими проксі. Під час **кожного** запуску профілю, ще до старту браузера, прив'язаний проксі перевіряється в реальному часі на підтримку UDP-relay (SOCKS5 UDP\_ASSOCIATE):

* якщо UDP працює - вмикається <mark style="color:purple;">QUIC</mark>, а WebRTC ходить через проксований UDP-relay;
* якщо UDP недоступний - QUIC вимикається, а WebRTC примусово переводиться в режим **TCP-only**, щоб реальний IP не витік.

Поля часового поясу, локалі та геолокації в режимі `auto` також визначаються через проксі в реальному часі під час запуску.

{% hint style="success" %}
ShardBrowser разом із нашими [**проксі з UDP**](about-udp/) закриває витік WebRTC на рівні браузера: UDP-трафік іде через проксі, а не напряму з вашого IP. Детальніше про проблему читайте в розділі [**Про протокол UDP**](about-udp/).
{% endhint %}

## Автоматизація: локальний API

Всередині застосунку піднімається локальний HTTP-сервер на <mark style="color:purple;">**127.0.0.1**</mark> (порт за замовчуванням **40325**, змінюється в _Settings → Automation API_). Ззовні він недоступний - лише з вашої машини.

Всі запити, крім `GET /health`, вимагають **Bearer-токен** (постійний JWT із налаштувань):

```
Authorization: Bearer <token>
```

Кнопка **Regenerate token** у налаштуваннях миттєво змінює секрет: новий токен починає працювати одразу, а всі старі стають недійсними.

Типовий сценарій автоматизації:

1. `GET /fingerprint/new/{platform}` - отримати готовий унікалізований відбиток (без збереження).
2. За бажанням - підправити відбиток (наприклад, увімкнути шум по шрифтах або змінити режим WebRTC).
3. `POST /profiles` - створити профіль із цим відбитком (зберігається як є, без повторної рандомізації) та прив'язати проксі.
4. `POST /profiles/{id}/start` - запустити профіль і отримати **CDP-ендпоінт**.
5. Підключитися як `browserWSEndpoint = cdp.web_socket_debugger_url` у Puppeteer / Playwright.
6. `POST /profiles/{id}/stop` - закрити профіль.

{% hint style="info" %}
**Тимчасові профілі.** `POST /profiles/temporary` створює профіль із прапором `temporary`: прихований із загального списку та інтерфейсу, а після закриття браузера видаляється автоматично (разом із папкою даних). Зручно для одноразових завдань.
{% endhint %}

Повний опис усіх методів (профілі, відбитки, проксі, папки, cookies, запуск/зупинка) з моделями даних та прикладами дивіться у [специфікації API ShardX Launcher](https://docs.shardx.com/ua/shardx-launcher-api/binding-and-lifecycle).

## MCP-сервер для ШІ-агентів

У комплекті йде окремий **MCP-сервер** (Model Context Protocol): він дозволяє ШІ-клієнту керувати лаунчером через цей самий API, а браузером профілю - по CDP. Це окремий Node-процес, не частина HTTP API.

Завантажити його можна прямо з лаунчера (_Settings → MCP server → Download MCP server_). Налаштовується двома змінними: `SHARDX_API` (базовий URL API) та `SHARDX_TOKEN` (той самий Bearer-токен). MCP-сервер надає:

* **API-інструменти** - тонкі обгортки над методами лаунчера (профілі, відбитки, проксі, папки, cookies, запуск/зупинка);
* **браузерні інструменти** поверх CDP - навігація, виконання JS, скріншоти, кліки, введення тексту, робота з вкладками та очікування.

{% hint style="warning" %}
CDP (remote-debugging) вмикається **лише** при запуску профілю через API. Запуски з інтерфейсу залишаються без відладочного порту - анти-детект не страждає.
{% endhint %}
