Skip to main content

s-browserkit — браузерный слой китов

Живой браузер, антибот и стелс — одним китом, который ставится отдельно. Чистой API-интеграции (белый REST/GraphQL) он не нужен и больше не навязывается: librarykit без browserkit полностью работоспособен.

        clikit          adapterkit          ветки-оболочки
             \             /
              \           /
               librarykit                   ОРКЕСТРАТОР (сессии, лимиты, фабрики)
                /        \
        browserkit        …                 СЛОЙ-КИТ (браузер и антибот)
                \        /
                 corekit                    ОСНОВАНИЕ (значения и чистые правила)

Главное: просят ВОЗМОЖНОСТЬ, а не движок

import browserkit

backend = browserkit.open_browser(
    browserkit.Capability.STEALTH_SESSION,   # ЦЕЛЬ, а не «camoufox»
    profile_dir=profile,
)
http = browserkit.make_requester(browserkit.Capability.STEALTH_REQUEST)

Соответствие «цель → движок» живёт ровно в одной таблице внутри кита (browserkit/capabilities.py). Anti-detect движок начал палиться — правится одна строка, ни один навык не меняется, потому что ни один навык движок не назвал.

Возможности:

Capability Что нужно потребителю
STEALTH_SESSION поднять браузер там, где обычный палится antibot'ом
VISIBLE_LOGIN видимое окно: пароль/2FA человек вводит руками
PERSISTENT_WORK обычная автоматизация в персистентном профиле
STEALTH_REQUEST один HTTP-запрос с браузерным TLS-отпечатком, БЕЗ браузера
IN_PAGE_REQUEST запрос изнутри живой страницы (её cookies/TLS/заголовки)
TRAFFIC_CAPTURE нормализованный сетевой трафик страницы (реверс скрытого API)

Диагностика — «чем закрыта каждая цель прямо сейчас»:

Сразу после pip install s-browserkit (без единого extra) все цели пусты — это и есть нормальный ответ, а не поломка:

>>> import browserkit
>>> browserkit.describe_capabilities()
{'stealth_session': None, 'visible_login': None, 'persistent_work': None,
 'stealth_request': None, 'in_page_request': None, 'traffic_capture': None}

None означает «не установлен ни один исполнитель». Попытка воспользоваться такой целью даёт внятную ошибку с рецептом установки, а не голый ModuleNotFoundError:

>>> browserkit.make_requester(browserkit.Capability.STEALTH_REQUEST)
Traceback (most recent call last):
  ...
browserkit.CapabilityUnavailable: Возможность 'stealth_request' недоступна:
ни один исполнитель не установлен. Поставь один из: `pip install 's-browserkit[antibot]'`.

После pip install 's-browserkit[antibot]' та же строка вернёт готовый исполнитель (CurlCffiTransport), а describe_capabilities()['stealth_request'] станет 'tls_impersonate' — имя ИСПОЛНИТЕЛЯ цели, не пакета. Какие исполнители стоят в очереди за каждой целью, видно заранее:

>>> browserkit.capability_plan(browserkit.Capability.STEALTH_SESSION)
('camoufox', 'nodriver', 'cdp')

Побеждает первый установленный; порядок переопределяется set_capability_plan().

Состав

  • browserkit.browser — лаунчеры (системный Chromium по CDP, персистентный контекст), anti-detect / undetected бэкенды, capture_tap (нормализованный event-tap над любым движком), state (storage-state, тёплый вход, детекторы протухания), геометрия окна, брони портов;
  • browserkit.antibot — исполнители HTTP-запроса, ходящие «как браузер»;
  • browserkit.profile_health — предстартовая проверка профиля и карантин;
  • browserkit.proc — запуск подпроцессов без всплывающих консолей;
  • browserkit.ports — Protocol'ы, которых киту не хватает снаружи.

Установка

pip install s-browserkit                 # без движков: фасад, антибот-контракты, здоровье профиля
pip install 's-browserkit[browser]'      # + Playwright (CDP-attach, персистентный контекст)
pip install 's-browserkit[camoufox]'     # + anti-detect Firefox   (затем `camoufox fetch`)
pip install 's-browserkit[nodriver]'     # + undetected Chromium
pip install 's-browserkit[antibot]'      # + TLS/JA3-импersonate без браузера

import browserkit не поднимает браузер и не импортирует ни одного движка: подпакеты резолвятся лениво (PEP 562), вендоры — ещё позже, внутри бэкендов.

Совместимость

Прежние пути (librarykit.browser.*, librarykit.antibot.*, librarykit.profile_health) продолжают работать: там оставлены алиасы на те же модули (sys.modules), а не копии. Поэтому monkeypatch, isinstance и is-сравнения ведут себя ровно как до переноса.

Тесты

uv run --no-sync pytest -q          # либо .venv\Scripts\python.exe -m pytest -q

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

s_browserkit-0.0.3.tar.gz (97.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

s_browserkit-0.0.3-py3-none-any.whl (106.3 kB view details)

Uploaded Python 3

File details

Details for the file s_browserkit-0.0.3.tar.gz.

File metadata

  • Download URL: s_browserkit-0.0.3.tar.gz
  • Upload date:
  • Size: 97.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for s_browserkit-0.0.3.tar.gz
Algorithm Hash digest
SHA256 919e832989722e8ade9b82dc0ebb0d9ad3925ff40d0646ddddae3d73d17759f6
MD5 72ddc74d3b375b1bb6cfc17d1c4e6165
BLAKE2b-256 8c73ee52bedb2ce98a427d1e151447bbec3ef1d10465dcda86951e172639f6c1

See more details on using hashes here.

File details

Details for the file s_browserkit-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: s_browserkit-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 106.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for s_browserkit-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7b0ae8453cb457f45f4043774d821ff60cd723b32e230650f5b2c779a670677c
MD5 1f81bcde6bd084bd959fc319ac4e35d0
BLAKE2b-256 b635c3726dc4b2b217a292fa7b58eb43a4ab07ae2d817ede4ab97e1321260f3f

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.0

2 files

0.0.22

2 files

0.0.21

2 files

0.0.20

2 files

0.0.19

2 files

0.0.18

2 files

0.0.17

2 files

0.0.16

2 files

0.0.15

2 files

0.0.14

2 files

0.0.13

2 files

0.0.12

2 files

0.0.11

2 files

0.0.8

2 files

0.0.7

2 files

0.0.5

2 files

0.0.4

2 files

This release

0.0.3 This release

2 files

0.0.2

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page