
أداة تجميع النطاق لـ HackerOne و Bugcrowd و Intigriti و YesWeHack و Immunefi!
واجهة ويب وAPI لتجميع نطاقات برامج مكافآت الاختراق من HackerOne وBugcrowd وIntigriti وYesWeHack.
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).
إذا كان خادمك خلف 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 يعطل الاستقصاء الخلفي حتى لا تحتاج إلى بيانات اعتماد المنصة.
يتم قراءة اتصال قاعدة البيانات من متغير البيئة DB_URL أو db_url في ~/.bbscope.yaml.
جميع بيانات اعتماد المنصات اختيارية. يتم تخطي المنصات غير المكونة ببساطة أثناء الاستقصاء.
قم بتعيين 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
conf.d/*.caddy تلقائيًا.الموقع يعرض API عام:
معاملات الاستعلام: scope (in/out/both), platform, type, raw (تخطي AI), format (json/text).
الإخراج الافتراضي هو نص مفصول بأسطر جديدة؛ أضف format=json للحصول على JSON. يتم تخزين الردود مؤقتًا لمدة 5 دقائق.
| العلم | الافتراضي | الوصف |
|---|
--dev، -d | false | وضع التطوير (HTTP، بدون TLS) |
--poll-interval | 6 | ساعات بين دورات الاستقصاء (0 لتعطيل) |
--listen | :8080 | عنوان الاستماع HTTP |
--domain | bbscope.com | النطاق لخريطة الموقع/robots.txt |
| المنصة | متغيرات البيئة | ملاحظات |
|---|
| 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 |
| الوصلة | الوصف |
|---|
GET /api/v1/programs | قائمة بجميع البرامج |
GET /api/v1/programs/{platform}/{handle} | تفاصيل برنامج واحد |
GET /api/v1/targets/{type} | الأهداف حسب النوع: wildcards, domains, urls, ips, cidrs |