dsh-antibrow README

The project's README from github.com/antibrow/dsh-antibrow. As one markdown file: README.md.

dsh-antibrow

A DeepSeek Harness plugin that gives the agent a browser with an identity.

The browser is AntiBrow: a Chromium fork with fingerprint configuration at engine level, driven through the standard Playwright API. SDK docs are at antibrow.com/docs, and the dated detection measurements - including the checks that fail - are at antibrow.com/reports.

dsh plugin --profile <name> add dsh-antibrow

Why not a plain browser plugin

Every other browser plugin hands the agent a fresh Chromium. That is fine for reading a public page and useless for anything behind a login: the session dies with the process, the fingerprint is a stock automation build, and the traffic leaves from your machine.

A plain Playwright plugin dsh-antibrow
Identity between runs new browser every time one persistent profile per name
Logins gone when the process ends cookies and passkeys persist, optionally synced across machines
Fingerprint stock build, patched from page scripts spoofed inside the engine, before any page script runs
Egress your own IP residential proxy, with timezone, language and reported connection following its exit
Parallel identities one data directory to share one isolated profile per agent or per account
Tabs start from nothing last session restored, so the agent resumes where it stopped

The difference shows up the first time an agent has to be someone: check a mailbox, watch a dashboard, keep a marketplace account warm. A browser with no memory has to log in again on every run, and logging in again is exactly what a site treats as suspicious.

What it brings

The phone

{ "profile": "shop-mobile", "deviceType": "android", "temporary": true }

Android profiles are built from whole captured devices - the screen, the GPU report and the client hints agree with each other because they came off the same physical phone, and the plugin picks a row rather than assembling one. Three of them ship inside the package, so a free-tier agent can create an Android profile with no network round trip at all.

The device type is fixed when the profile is created and never drifts afterwards: a profile that was a phone stays that phone. Android needs engine 151 or newer - if none is available the launch fails rather than quietly handing you a desktop browser that claims to be a phone.

Measured

On a macOS host, through a US residential proxy, 2026-08-15, engine 151:

Check Result
whoer.net disguise 90%
creepjs headless signal 0%
creepjs stealth signal 0%
creepjs platform hints Arial, "Segoe UI" - no font from the host
Reported platform vs user agent agree (Win32 / Windows)
Timezone vs proxy exit agree (America/Los_Angeles)

The 10% whoer deducts is WebRTC, which had no route to a STUN server on that run. Reproduce all of it with tests/smoke - the harness is in this repository, and it fails loudly rather than printing a number nobody checks.

Install

dsh plugin --profile <name> add dsh-antibrow
export ANTI_DETECT_BROWSER_KEY=<key>
dsh --profile <name>

The tools

Sessions launch_browser close_browser list_sessions
Profiles list_profiles create_profile delete_profile
Proxies list_proxies claim_proxy
Page navigate click fill evaluate get_content screenshot
Live view start_live_view stop_live_view

launch_browser takes a profile name and creates it on first use. Pass temporary: true for automation work: those profiles are local-only and stay out of the desktop app's list, while still persisting on disk.

Before you rely on it

Configuration

The bundle inserts one row, mcp-antibrow, configuring the harness's MCP client against the anti-detect-browser CLI. Override it from your profile's own cordis.patch.yml by targeting that id - a patch replaces the row's whole config, so restate every key you keep:

- id: mcp-antibrow
  config:
    serverName: antibrow
    transport: stdio
    command: npx
    args: ['-y', 'anti-detect-browser@^2.19.1', '--mcp']
    env:
      ANTI_DETECT_BROWSER_KEY: !!js process.env.MY_OWN_VAR
      ANTI_DETECT_BROWSER_CACHE_DIR: /var/lib/antibrow

Turn it off without uninstalling:

- id: mcp-antibrow
  disabled: true

To run the SDK from a checkout instead of npm, use the overlay this package ships:

export ANTIBROW_SDK_CLI=<checkout>/dist/cli.js
dsh --profile <name> --patch node_modules/dsh-antibrow/cordis.patch.local.yml

Compatibility

Verified against dsh 0.1.0-rc.6 and anti-detect-browser 2.19.1, 2026-08-15. DeepSeek Harness is a developer preview and says it will break compatibility; this line is the claim, and it rots without a re-test.

The SDK version floor is real: 2.19.1 is the first release whose close path ends the browser process instead of only dropping the debugging connection. On an older one a closed session leaves the browser running, which keeps that profile's directory locked - the next launch of it dies before the debugging connection is ready - and holds a concurrency slot for the rest of the run.

License

MIT

dsh-antibrow (antibrow/dsh-antibrow)

Searching Database…

Что это?dsh-antibrow — это плагин DeepSeek Harness, который даёт ИИ-агенту постоянную браузерную идентичность через AntiBrow — форк Chromium с подменой отпечатков на уровне движка. Он предоставляет 16 инструментов MCP, покрывающих сессии, профили, прокси и управление страницей, и управляется через стандартный API Playwright, с опциональным выходом через резидентные прокси.
Это плагин для браузера или сам браузер?И то и другое: AntiBrow — настоящий форк Chromium с подменой отпечатков, встроенной в сам движок, а dsh-antibrow — плагин DSH/MCP, который управляет этим браузером через стандартный API Playwright.
Как его установить и запустить первый браузерный профиль?Установите его как плагин DSH через npm; пакет добавляет строку mcp-antibrow в MCP-конфиг клиента харнесса, указывающую на CLI anti-detect-browser. Затем вызов launchbrowser с именем профиля создаёт его при первом использовании, скачивая движок (190-320МБ) только при самом первом запуске.
Какие версии DSH и SDK ему нужны?Проверено с DeepSeek Harness 0.1.0-rc.6 и anti-detect-browser SDK 2.19.1 или новее; 2.19.1 — минимум, потому что это первый релиз, где путь закрытия действительно завершает процесс браузера, а не просто рвёт отладочное соединение.
В чём подвох бесплатного плана при запуске нескольких агентов?Бесплатный лицензионный ключ допускает только одну браузерную сессию одновременно, причём счёт идёт на машину по всем приложениям, использующим движок, поэтому параллельным агентам нужен платный план с достаточным лимитом. Кроме того, двум агентам нельзя управлять одним профилем одновременно — это та же ошибка, что два человека за одним браузером.
На каких операционных системах он работает?Четыре сборки на три операционные системы: Windows, macOS и Linux, каждая для x86-64 и arm64 — один и тот же профиль без изменений работает на любой из них.
Где хранятся мои логины и пасскеи?Cookie и пасскеи WebAuthn хранятся внутри самого профиля, а не в системном хранилище ключей ОС, поэтому пасскей, зарегистрированный в одном запуске, срабатывает и в следующем, а при включённой синхронизации — и на другом компьютере.
Что даёт эмуляция Android-устройства?Передача deviceType: android при создании профиля превращает его в полноценное Android-устройство, собранное по данным реально снятого телефона: точки касания, мобильные client hints, вьюпорт телефона и GPU согласованы, потому что взяты с одной машины. Нужен движок 151 или новее, иначе запуск просто провалится.
Насколько хорошо он на самом деле проходит проверки на отпечатки?В тесте от 2026-08-15 на macOS через американский резидентный прокси он набрал 90% на whoer.net и 0% по сигналам headless/stealth на CreepJS; недостающие 10% объяснили тем, что у WebRTC в том запуске не было STUN-маршрута.
Безлимитный бесплатный тариф действительно безлимитный?Да — создание локальных профилей ничего не стоит, и их количество не ограничено. Платными являются только синхронизация профилей между машинами и управляемые резидентные прокси.
Почему бы просто не взять обычный плагин автоматизации для Playwright?Обычный плагин для браузера выдаёт агенту свежий Chromium при каждом запуске: логины пропадают, отпечаток — от стандартной автоматизационной сборки, а трафик уходит с вашего собственного IP. dsh-antibrow держит один постоянный подменённый профиль на каждую идентичность, поэтому сессии, отпечаток и выход через прокси остаются одинаковыми от запуска к запуску.
Creator
antibrow
Size
0.1 MB
Stars
11
Updated
CommitSep 12
Age
2mo
Commits · 90 Days