Назад к обновлениям
UpdatedJul 20, 2026

bbscope — Updated!

Инструмент агрегации scope для HackerOne, Bugcrowd, Intigriti, YesWeHack и Immunefi!

Поделиться

bbscope.com

Веб-интерфейс и API для агрегации scope-ов баг-баунти программ с HackerOne, Bugcrowd, Intigriti и YesWeHack.

Быстрый старт (Docker)

cd website
cp .env.example .env
# Отредактируйте .env — как минимум задайте POSTGRES_PASSWORD и свои учетные данные платформ
docker compose up -d --build

Сайт будет доступен по адресу https://yourdomain.com (Caddy автоматически обрабатывает HTTPS через Let's Encrypt).

DNS-челлендж Cloudflare

Если ваш сервер находится за Cloudflare (проксированный DNS), стандартный ACME-челлендж HTTP не сработает. Используйте compose-файл для Cloudflare, который собирает кастомный Caddy с плагином Cloudflare DNS:

docker compose -f docker-compose.cloudflare.yml up -d --build

Укажите CF_API_TOKEN в вашем .env. Создайте токен на https://dash.cloudflare.com/profile/api-tokens с разрешением Zone:DNS:Edit для вашего домена.

Локальная разработка

Требования: Go 1.24+, запущенный экземпляр PostgreSQL.

DB_URL="postgres://postgres:yourpassword@localhost:5432/bbscope?sslmode=disable" \
  go run *.go serve --dev --poll-interval 0 --listen localhost:7001

Флаг --dev включает режим только HTTP (без TLS). --poll-interval 0 отключает фоновый опрос, поэтому учетные данные платформ не требуются.

Флаги команды serve

ФлагПо умолчаниюОписание
--dev, -dfalseРежим разработки (HTTP, без TLS)
--poll-interval6Часов между циклами опроса (0 — отключить)
--listen:8080HTTP-адрес прослушивания
--domainbbscope.comДомен для sitemap/robots.txt

Подключение к базе данных читается из переменной окружения DB_URL или поля db_url в ~/.bbscope.yaml.

Конфигурация

Учётные данные платформ

Все учётные данные платформ являются опциональными. Не настроенные платформы просто пропускаются при опросе.

ПлатформаПеременные окруженияПримечания
HackerOneH1_USERNAME, H1_TOKENAPI-токен
BugcrowdBC_EMAIL, BC_PASSWORD, BC_OTPИли установите BC_PUBLIC_ONLY=1 только для публичных программ
IntigritiIT_TOKENBearer-токен
YesWeHackYWH_EMAIL, YWH_PASSWORD, YWH_OTPEmail + пароль + OTP

AI-нормализация (опционально)

Установите OPENAI_API_KEY и, опционально, OPENAI_MODEL (по умолчанию gpt-4.1-mini), чтобы включить AI-нормализацию целей scope. Результаты кешируются для каждой цели, чтобы минимизировать вызовы API.

Базовая аутентификация (опционально)

Чтобы защитить сайт HTTP-базовой аутентификацией:

  1. Сгенерируйте хеш пароля:

    docker run --rm caddy:2-alpine caddy hash-password --plaintext 'yourpassword'
    
  2. Скопируйте пример конфига в conf.d/:

    cp basicauth.caddy.example conf.d/basicauth.caddy
    
  3. Отредактируйте conf.d/basicauth.caddy и добавьте ваше имя пользователя и хеш:

    basic_auth {
        myuser $2a$14$hashgoeshere...
    }
    
  4. Перезапустите Caddy: docker compose restart caddy

Чтобы отключить, удалите conf.d/basicauth.caddy и перезапустите.

Архитектура

caddy (ports 80/443) → bbscope-web (:8080) → postgres
  • Caddy отвечает за завершение TLS и обратное проксирование. Дополнительные фрагменты конфигурации в conf.d/*.caddy автоматически импортируются.
  • bbscope-web обслуживает сайт и запускает фоновые опросчики.
  • PostgreSQL хранит программы, цели и историю изменений scope. Схема автоматически мигрируется при запуске.

API

Сайт предоставляет публичный API:

EndpointОписание
GET /api/v1/programsСписок всех программ
GET /api/v1/programs/{platform}/{handle}Детали одной программы
GET /api/v1/targets/{type}Цели по типу: wildcards, domains, urls, ips, cidrs

Параметры запроса: scope (in/out/both), platform, type, raw (пропустить AI), format (json/text).

Вывод по умолчанию — текст, разделённый новой строкой; добавьте format=json для JSON. Ответы кешируются на 5 минут.

Категории