Skip to content

About

A console application with a simple user interface for managing and working with browser profiles with anti-detection protection.

Topics

Resources

Stars

111 stars

Watchers

4 watching

Forks

Repository files navigation

Antidetect v2

CI

CI — автоматические проверки опубликованной ветки v2/public-foundation. Бейдж не подтверждает незапушенные локальные изменения.

Срез локального дерева на 9 октября 2026 года: прошли проверки форматирования, статического анализа кода, типов, 538 тестов в 41 файле, сборка и 4/4 межпроцессных сценария. Phase 2 и тестовая модель Phase 3 закрыты; начата изолированная работа Phase 4 над ShardX. Обычный API читает локальный статус файлов движка, но не запускает и не восстанавливает браузер через ShardX. Изолированные компоненты запуска/остановки и проверки идентичности процесса не подключены к обычному жизненному циклу. Реальное восстановление браузера после перезапуска API остаётся открытым. Точные команды и границы результатов — в docs/current-state.md.

Antidetect v2 — разрабатываемый local-first, API-first orchestrator браузерных профилей на Node.js/TypeScript для Windows x64.

ShardX должен предоставлять сторонний patched Chromium и fingerprint runtime. Инженерная ценность этого проекта находится в control plane вокруг него:

  • надёжный lifecycle браузерных процессов;
  • защита от двойного запуска;
  • восстановление и reconciliation после сбоев;
  • безопасная работа с proxy credentials;
  • typed API и события;
  • детерминированные concurrency/failure tests;
  • локальный React UI и диагностика.

Проект не выдаёт fingerprint-движок ShardX за собственную разработку.

Принципы разработки

Разработка идёт небольшими проверяемыми шагами: один результат, минимальный связный diff, проверка и документирование существенных решений.

Что находится в репозитории сейчас

Эта ветка содержит только чистую основу Antidetect v2. Уже созданы pnpm workspace, TypeScript baseline, пакет API-контрактов на Zod, NestJS/Fastify API, React/Vite web skeleton — минимальный каркас интерфейса, — format/lint/build-команды и CI skeleton — каркас автоматических проверок. Legacy v1, отброшенный TypeScript-прототип и личные рабочие материалы не входят в её историю.

Также реализованы SQLite/Kysely-хранилище, явные миграции, репозитории профилей и запусков, проверка переходов статусов, блокировка операций одного профиля и защита от второго владельца корня данных. Профиль можно создать с включённым отпечатком по умолчанию или без него; тестовый API-срез позволяет переключить режим только у свободного профиля. Команды Start/Stop и чтение состояния доступны через отдельный API/UI-режим FakeBrowserRuntime. Это проверяет правила приложения и интерфейс, но не запускает браузер и не проверяет процессы ОС. Неопределённый запуск сохраняет занятость конкретного профиля, не блокируя весь API. Обычный main.ts не подключает fake runtime; настоящий адаптер, SSE и интеграция ShardX ещё не реализованы. Точное состояние зафиксировано в docs/current-state.md.

Целевой MVP

Внизу боковой панели есть плашка ShardX со статусом локальных файлов. GET /engine/status читает только каталог runtime текущего корня V2 (по умолчанию %LOCALAPPDATA%/Antidetect/runtime, либо ANTIDETECT_HOME/runtime). Он защищён локальной сессией и не устанавливает, не обновляет и не запускает движок. Files detected означает обнаруженные файлы Windows-движка, Widevine, библиотеки отпечатков и локальной версии Chromium, а не проверенную целостность или готовность браузера. Кнопка обновления повторяет чтение; ошибки остаются неизвестным состоянием. Каталог движка в отдельной виртуальной машине эта проверка не читает.

Целевой MVP должен позволять локальному пользователю:

  • создавать и хранить ShardX profiles;
  • назначать и проверять proxy без утечки credentials;
  • запускать profile интерактивно или для automation;
  • безопасно и идемпотентно останавливать browser process tree;
  • видеть актуальное состояние, историю запусков и typed failures;
  • восстанавливать согласованное состояние после падения API;
  • работать через локальные API и web UI.

Полный scope и исключения: docs/product-scope.md.

Документация

Запуск и проверки

Корневой pnpm-workspace и TypeScript baseline уже созданы. Тестовая основа (baseline) — Vitest (фреймворк для unit- и integration-тестов, то есть модульных и интеграционных проверок); обычные API-тесты используют Fastify inject() без запуска сетевого порта, а отдельный test:integration запускает собранный API в реальных Node.js-процессах. API-контракты используют Zod 4 как источник истины.

По ADR-0007 NestJS уже используется как application framework — каркас приложения — поверх Fastify через FastifyAdapter для /health. Runtime-проверка Zod подключена через nestjs-zod, а OpenAPI — через @nestjs/swagger с JSON-документом на /docs-json; выбор зафиксирован в ADR-0008. Тест сохраняет Zod-контракт, Vitest и Fastify inject() без запуска сетевого порта.

Проверяемые команды foundation (основы проекта):

Предпосылка: нужен Node.js 24 с включённым Corepack — встроенным механизмом выбора версий package manager. Clean checkout 8549bb3 проверен на Node.js 24.18.0 и pnpm 11.16.0; CI ориентирован на Node.js 24.19.0. Политика LF зафиксирована в .gitattributes.

corepack pnpm install --frozen-lockfile
corepack pnpm run format:check
corepack pnpm run lint
corepack pnpm run typecheck
corepack pnpm test
corepack pnpm run build
corepack pnpm run test:integration

Закреплённый SDK ShardX

SDK — библиотека для взаимодействия с ShardX — подключён из sdks/node нашего форка по точному коммиту cda916c6e5d93221cb96df3bd9342e8c0232aba8, а не по изменяемой ветке. pnpm автоматически получает исходники и собирает библиотеку; вручную скачивать архив не нужно. pnpm-lock.yaml закрепляет также её зависимости.

allowBuilds в pnpm-workspace.yaml разрешает подготовку только этого коммита SDK и сохраняет существующее разрешение better-sqlite3. Флаг --ignore-scripts теперь несовместим с установкой: он отключает необходимую сборку Git-зависимости. Вложенная установка зависимостей SDK отключает их установочные скрипты через его .npmrc; это ограничение, а не изолированная среда исполнения, и явные переопределения настроек npm могут его изменить.

Создание SDK в apps/api/src/infrastructure/runtime/shardx.sdk.ts явно задаёт каталоги runtimeDir и profilesDir текущего корня V2 и autoInstall: false. Эта настройка запрещает неявную установку и обновление движка, но не любую сетевую работу: отдельный явный runtime.install() по-прежнему может скачивать файлы. Наш модуль его не вызывает. Без полного локального движка генератор отпечатка завершается с RUNTIME_NOT_INSTALLED, а не запускает загрузку. Обычный main.ts использует SDK только для чтения локального статуса файлов движка; запуск и остановка браузера через изолированный адаптер, а также восстановление после перезапуска API, в основное приложение пока не подключены.

Последняя локальная проверка текущего дерева — 09.10.2026: corepack pnpm run format:check (проверка форматирования), corepack pnpm run lint (статический анализ), corepack pnpm run typecheck (проверка типов), corepack pnpm test (41 файл / 538 тестов), corepack pnpm run test:integration (сборка и 4/4 интеграционных сценария) и git diff --check прошли. Зависимости в этой проверке не переустанавливались; движок не скачивался и не запускался. Удалённые автоматические проверки для этого локального снимка не подтверждены. build собирает contracts, API и web в packages/contracts/dist, apps/api/dist и apps/web/dist. API запускается через pnpm --filter @antidetect/api start, web — pnpm --filter @antidetect/web dev. Чтобы проверить команды с тестовой средой выполнения вместо настоящего браузера, запусти corepack pnpm run dev:fake-api, отдельно запусти web и открой http://127.0.0.1:5173/?fake-runtime. Тестовый API занимает порт 3000, не запускай его одновременно с обычным API; профили и состояния запусков хранятся только в памяти, настоящий браузер и SQLite не используются. Обычный API использует API_HOST=127.0.0.1 и API_PORT=3000; пример переменных находится в .env.example и сам по себе не загружается автоматически. CI настроен для Ubuntu и Windows, но этот локальный результат ещё не является удалённым CI. Старую инструкцию npm install && node index нельзя считать инструкцией для v2.

ShardX и лицензирование

ShardX — сторонний closed-source engine с отдельными условиями использования. В целевой интеграции его binary:

  • не включается в Git или release archive;
  • не зеркалируется;
  • загружается только поддерживаемым официальным способом;
  • явно отделяется от MIT-лицензии нашего исходного кода.

В handoff зафиксировано, что авторы разрешили некоммерческую open-source интеграцию, однако подтверждение и актуальные условия должны быть сохранены и повторно проверены до распространения v2. Перед коммерческим использованием требуется отдельное разрешение.

Лицензия

Собственный исходный код репозитория распространяется по MIT License. Это не изменяет и не заменяет отдельные условия ShardX engine и других сторонних компонентов.

About

A console application with a simple user interface for managing and working with browser profiles with anti-detection protection.

Topics

Resources

Stars

111 stars

Watchers

4 watching

Forks

Releases

Used by

Contributors

Languages