
bbscope — Updated!
أداة تجميع النطاق لـ HackerOne و Bugcrowd و Intigriti و YesWeHack و Immunefi!
bbscope.com
واجهة ويب وAPI لتجميع نطاقات برامج مكافآت الاختراق من HackerOne وBugcrowd وIntigriti وYesWeHack.
بداية سريعة (Docker)
cd website
cp .env.example .env
# Edit .env — at minimum set POSTGRES_PASSWORD and your platform credentials
docker compose up -d --build
الموقع سيكون متاحًا على https://yourdomain.com (Caddy يتولى HTTPS تلقائيًا عبر Let's Encrypt).
تحدي DNS لـ Cloudflare
إذا كان خادمك خلف Cloudflare (DNS موجه)، فلن يعمل تحدي ACME HTTP القياسي. استخدم ملف compose الخاص بـ Cloudflare بدلاً من ذلك، والذي يبني Caddy مخصصًا مع إضافة DNS الخاصة بـ Cloudflare:
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، -d | false | وضع التطوير (HTTP، بدون TLS) |
--poll-interval | 6 | ساعات بين دورات الاستقصاء (0 لتعطيل) |
--listen | :8080 | عنوان الاستماع HTTP |
--domain | bbscope.com | النطاق لخريطة الموقع/robots.txt |
يتم قراءة اتصال قاعدة البيانات من متغير البيئة DB_URL أو db_url في ~/.bbscope.yaml.
الإعدادات
بيانات اعتماد المنصات
جميع بيانات اعتماد المنصات اختيارية. يتم تخطي المنصات غير المكونة ببساطة أثناء الاستقصاء.
| المنصة | متغيرات البيئة | ملاحظات |
|---|---|---|
| HackerOne | H1_USERNAME, H1_TOKEN | رمز API |
| Bugcrowd | BC_EMAIL, BC_PASSWORD, BC_OTP | أو قم بتعيين BC_PUBLIC_ONLY=1 للبرامج العامة فقط |
| Intigriti | IT_TOKEN | رمز Bearer |
| YesWeHack | YWH_EMAIL, YWH_PASSWORD, YWH_OTP | بريد إلكتروني + كلمة مرور + OTP |
التطبيع بالذكاء الاصطناعي (اختياري)
قم بتعيين OPENAI_API_KEY واختياريًا OPENAI_MODEL (الافتراضي gpt-4.1-mini) لتفعيل تطبيع أهداف النطاق بالذكاء الاصطناعي. يتم التخزين المؤقت لكل هدف لتقليل مكالمات API.
المصادقة الأساسية (اختياري)
لحماية الموقع بمصادقة HTTP الأساسية:
-
قم بإنشاء تجزئة كلمة المرور:
docker run --rm caddy:2-alpine caddy hash-password --plaintext 'yourpassword' -
انسخ ملف الإعدادات النموذجي إلى
conf.d/:cp basicauth.caddy.example conf.d/basicauth.caddy -
قم بتحرير
conf.d/basicauth.caddyوأضف اسم المستخدم والتجزئة:basic_auth { myuser $2a$14$hashgoeshere... } -
أعد تشغيل 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 يخزن البرامج والأهداف وتاريخ تغيير النطاق. يتم ترحيل المخطط تلقائيًا عند بدء التشغيل.
API (نقطة الوصول)
الموقع يعرض API عام:
| الوصلة | الوصف |
|---|---|
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 دقائق.