Версия: 0.1.0 (MVP) Дата: 10 ноября 2025
CLI предназначен для локальных запусков сканов, интеграции в CI/CD и работы с отчётами. Реализован на Node.js 24.13.0 LTS (Commander + tsup).
npm install -g @accellens/cli
# или
pnpm dlx @accellens/cli@latest
Аутентификация:
accellens login --api-url https://api.accellens.dev --token <PERSONAL_TOKEN>
Конфиг сохраняется в ~/.config/accellens/config.json.
| Команда | Назначение | Основные параметры |
|---|---|---|
accellens login |
Аутентификация CLI | --api-url, --token |
accellens scan |
Веб-скан страницы/набора URL | --project, --urls, --format |
accellens report |
Загрузка отчёта | <scan-id>, --format, --output |
accellens logout |
Очистка локальных токенов | — |
accellens login --api-url https://api.accellens.dev --token <PERSONAL_TOKEN>
- Валидирует токен и сохраняет конфигурацию.
- Для CI лучше использовать переменные окружения (
ACCELLENS_TOKEN).
Запускает веб-скан.
accellens scan https://example.com \
--project mysite \
--auth basic:user:pass \
--selector "#app-container" \
--click ".modal-close" \
--output run.json
--project <slug>(обязательно) — slug проекта.--urls <file>— файл со списком URL (по одному на строку).--format json|pdf|sarif— формат результата (по умолчанию:json).--output <file>— путь для сохранения результата.--timeout <ms>— таймаут в миллисекундах (по умолчанию:300000).--sse— слушать прогресс в реальном времени через SSE.--label <tag>— добавить тег к запуску (можно использовать несколько раз).--save-config— сохранить конфигурацию сканирования в.accellensrc.
--auth <strategy>— стратегия авторизации:basic:username:password— HTTP Basic Authenticationheader:HeaderName:HeaderValue— кастомный заголовокform— авторизация через форму (требует дополнительные параметры)
Для form-based авторизации:
--auth-login-url <url>— URL страницы логина (обязательно).--auth-username-field <selector>— селектор поля username (обязательно).--auth-password-field <selector>— селектор поля password (обязательно).--auth-submit-button <selector>— селектор кнопки отправки формы (опционально).--auth-username <username>— username для формы (илиACCELLENS_AUTH_USERNAME).--auth-password <password>— password для формы (илиACCELLENS_AUTH_PASSWORD).
Безопасность: Credentials можно хранить в переменных окружения. Не коммитьте .accellensrc с credentials в git.
--selector <selector>— CSS или XPath селектор для сканирования части страницы:- CSS:
#app-container,.widget-content,div.main > section - XPath:
//div[@id='app'],//div[@class='content']
- CSS:
--include-iframes— включить iframe в сканирование.--exclude <selector>— исключить элементы из сканирования (можно использовать несколько раз).
--click <selector>— кликнуть по элементу перед сканированием (можно использовать несколько раз).--fill <selector:value>— заполнить поле перед сканированием (можно использовать несколько раз).--wait-for <selector>— ожидать появления элемента перед сканированием.--scroll— автоматически прокрутить страницу перед сканированием.--interaction-file <path>— файл с JSON/YAML сценарием user flow.
Пример user flow файла (user-flow.json):
{
"name": "Login and navigate",
"steps": [
{ "type": "click", "selector": ".login-button" },
{ "type": "wait", "selector": "#login-form", "timeout": 5000 },
{ "type": "type", "selector": "#username", "value": "user@example.com" },
{ "type": "type", "selector": "#password", "value": "password123" },
{ "type": "click", "selector": "#submit" },
{ "type": "wait", "selector": ".dashboard", "timeout": 10000 },
{ "type": "scroll" }
]
}--proxy <url>— URL прокси-сервера (например,http://proxy:8080).--proxy-username <username>— username для прокси.--proxy-password <password>— password для прокси.--headers <key=value>— кастомные HTTP заголовки (можно использовать несколько раз).--viewport <size>— размер viewport (например,1280x720).--viewport-profile <profile>— профиль viewport:mobile,tablet,desktop,4k,custom.--disable-js— отключить JavaScript во время сканирования.--locale <lang>— установить язык интерфейса (Accept-Language заголовок).
accellens report <scan-id> --format pdf --output audit.pdf
Загружает отчёт по ID сканирования в различных форматах.
<scan-id>(обязательно) — UUID сканирования (run ID).--format <format>— формат отчёта:json,pdf,sarif(по умолчанию:json).--output <file>— путь для сохранения файла. Если не указан, используется<scan-id>.<format>.--open— открыть файл после загрузки (macOS/Linux).
JSON (--format json):
-
Полный JSON отчёт со всеми метаданными, статистикой и findings.
-
Удобен для программной обработки и интеграции с другими инструментами.
-
Пример:
accellens report 01JBP8D8Q9M8K2E8V934A5GJ1C --format json --output report.json
PDF (--format pdf):
-
Профессионально оформленный PDF отчёт для презентации стейкхолдерам.
-
Включает Executive Summary, детальные findings с цветовой индикацией severity.
-
Поддерживает кастомные секции (через UI или API).
-
Пример:
accellens report 01JBP8D8Q9M8K2E8V934A5GJ1C --format pdf --output audit-report.pdf
SARIF (--format sarif):
-
SARIF 2.1.0 формат для интеграции с CI/CD платформами.
-
Поддерживается GitHub Security, Azure DevOps, и другими инструментами.
-
Пример:
accellens report 01JBP8D8Q9M8K2E8V934A5GJ1C --format sarif --output results.sarif
# Загрузить JSON отчёт
accellens report 01JBP8D8Q9M8K2E8V934A5GJ1C --format json
# Загрузить PDF отчёт и открыть его
accellens report 01JBP8D8Q9M8K2E8V934A5GJ1C --format pdf --output report.pdf --open
# Загрузить SARIF для CI/CD интеграции
accellens report 01JBP8D8Q9M8K2E8V934A5GJ1C --format sarif --output results.sarif- PDF отчёты генерируются асинхронно и могут занять некоторое время.
- Все отчёты кэшируются на сервере для оптимизации производительности.
- PDF ссылки действительны в течение 24 часов.
accellens logout
Удаляет сохранённые токены и конфиг.
Глобальный config (~/.config/accellens/config.json):
{
"apiUrl": "https://api.accellens.dev",
"token": "...",
"defaultProject": "mysite",
"outputDir": "~/accellens/reports"
}
CLI поддерживает .accellensrc (YAML/JSON) в каталоге проекта.
- Аргументы командной строки.
- Переменные окружения.
.accellensrcв проекте.- Глобальный конфиг (
~/.config/accellens/config.json).
| Переменная | Назначение |
|---|---|
ACCELLENS_API_URL |
Базовый URL API |
ACCELLENS_TOKEN |
Токен по умолчанию (используется в CI) |
ACCELLENS_PROJECT |
Проект по умолчанию |
ACCELLENS_OUTPUT_DIR |
Каталог для сохранения отчётов |
ACCELLENS_AUTH_USERNAME |
Username для авторизации (form-based auth) |
ACCELLENS_AUTH_PASSWORD |
Password для авторизации (form-based auth) |
ACCELLENS_LOCALE |
Язык интерфейса (Accept-Language) |
apiUrl: https://api.accellens.dev
project: myshop
headers:
- name: Authorization
value: Bearer ${ACCELLENS_TOKEN}
scanDefaults:
viewport: 1440x900
waitFor: '#app-ready'
viewportProfile: desktop
locale: en-US
disableJavaScript: false
auth:
type: basic
credentials:
username: ${ACCELLENS_AUTH_USERNAME}
password: ${ACCELLENS_AUTH_PASSWORD}
scanArea:
selector: '#app-container'
includeIframes: true
excludeSelectors:
- '.ads'
- '.footer'
interactions:
- type: click
selector: '.accept-cookies'
- type: wait
selector: '#app-ready'
timeout: 5000
- type: scroll
proxy:
server: http://proxy.example.com:8080
username: ${PROXY_USERNAME}
password: ${PROXY_PASSWORD}Важно: Используйте переменные окружения для credentials. Не коммитьте файлы с паролями в git. Добавьте .accellensrc в .gitignore или используйте .accellensrc.example как шаблон.
0— успех.1— внутренняя ошибка CLI (невалидные аргументы).2— API ошибка (см. сообщение).3— timeout или отмена пользователем.
- name: Run Accessibility Scan
uses: accellens/github-action@v1
with:
project: mysite
urls: ./urls.txt
token: ${{ secrets.ACCELLENS_TOKEN }}
ACCELLENS_DEBUG=1— подробные логи.--trace-network— логирует сетевые запросы.- Ошибки сохраняются в
~/.config/accellens/logs/{date}.log.
Планируемые функции для будущих версий:
scan-mobile— сканирование мобильных приложений (Android/iOS)runs list— список запусков проектаruns status— статус конкретного запуска с watch modeproject create— создание проекта через CLIproject list— перечень доступных проектов- Интерактивные проверки (watch mode)
- Upload локальных HTML/zip для офлайн-аудита
- Интеграция с IDE (VSCode) через CLI server mode