
Krawl एक अनुकूलन योग्य, हल्का, क्लाउड-नेटिव वेब धोखाधड़ी सर्वर और एंटी-क्रॉलर है जो यथार्थवादी, यादृच्छिक रूप से उत्पन्न डिकॉय डेटा और एआई-जनरेटेड HTML टेम्पलेट्स का उपयोग करके आसानी से शोषण योग्य कमजोरियों वाले नकली वेब एप्लिकेशन बनाता है।
एक आधुनिक, अनुकूलन योग्य वेब हनीपॉट सर्वर जो भ्रामक वेब पेजों, नकली क्रेडेंशियल्स और कैनरी टोकन के माध्यम से हमलावरों और वेब क्रॉलर की दुर्भावनापूर्ण गतिविधि का पता लगाने और उसे ट्रैक करने के लिए डिज़ाइन किया गया है।
टिप: अतिरिक्त मज़े के लिए robots.txt पथों को क्रॉल करें
Krawl एक क्लाउड-नेटिव धोखा सर्वर है जो दुर्भावनापूर्ण हमलावरों, वेब क्रॉलर और स्वचालित स्कैनर का पता लगाने, उन्हें विलंबित करने और उनका विश्लेषण करने के लिए डिज़ाइन किया गया है।
यह यथार्थवादी नकली वेब एप्लिकेशन बनाता है जो एडमिन पैनल, कॉन्फ़िगरेशन फ़ाइलें और उजागर नकली क्रेडेंशियल्स जैसे आसानी से मिलने वाले लक्ष्यों से भरे होते हैं, ताकि संदिग्ध गतिविधि को आकर्षित और पहचाना जा सके।

हमलावरों के संसाधनों को बर्बाद करके, Krawl दुर्भावनापूर्ण व्यवहार को वैध क्रॉलर से स्पष्ट रूप से अलग करने में मदद करता है।
इसमें निम्नलिखित विशेषताएं हैं:
आप रिवर्स प्रॉक्सी का उपयोग करके अपनी अन्य सेवाओं के साथ Krawl को आसानी से उजागर कर सकते हैं ताकि उन्हें वेब क्रॉलर और दुर्भावनापूर्ण उपयोगकर्ताओं से सुरक्षित रखा जा सके। अधिक विवरण के लिए, रिवर्स प्रॉक्सी दस्तावेज़ीकरण देखें।

Krawl एक व्यापक डैशबोर्ड प्रदान करता है, जो स्टार्टअप पर उत्पन्न यादृच्छिक गुप्त पथ पर या KRAWL_DASHBOARD_SECRET_PATH के माध्यम से कॉन्फ़िगर किए गए कस्टम पथ पर उपलब्ध होता है। यह डैशबोर्ड को आपके हनीपॉट को स्कैन करने वाले हमलावरों से छिपाए रखता है।
डैशबोर्ड छह टैब में व्यवस्थित है:



इसके अतिरिक्त, डैशबोर्ड पासवर्ड से प्रमाणित होने के बाद, दो संरक्षित टैब उपलब्ध हो जाते हैं:
अधिक विवरण के लिए, डैशबोर्ड दस्तावेज़ीकरण देखें।
Krawl दो डिप्लॉयमेंट मोड का समर्थन करता है, जिन्हें config.yaml में mode सेटिंग या KRAWL_MODE पर्यावरण चर द्वारा नियंत्रित किया जाता है।
स्टैंडअलोन: कम अनुरोध संख्या वाले विकास वातावरण या homelabs के लिए आदर्श। किसी अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता नहीं, बस Krawl चलाएं और यह काम करता है।
स्केलेबल: प्रोडक्शन वातावरण या उच्च-ट्रैफिक हनीपॉट के लिए डिज़ाइन किया गया। Helm चार्ट डिफ़ॉल्ट रूप से इस मोड का उपयोग करता है।
विस्तृत कॉन्फ़िगरेशन, Docker Compose उदाहरण, Kubernetes/Helm सेटअप और चरण-दर-चरण माइग्रेशन निर्देशों के लिए, डिप्लॉयमेंट मोड दस्तावेज़ीकरण देखें।
Krawl उन IP पतों की एक नियमित रूप से अद्यतन banlist.txt बनाए रखता है जो उन हमलावरों से हैं जिन्होंने इसके हनीपॉट ट्रैप ट्रिगर किए। बैनलिस्ट साप्ताहिक प्रकाशित होती है और डाउनलोड के लिए उपलब्ध होती है, जिससे समुदाय को Krawl का उपयोग किए बिना भी ज्ञात दुर्भावनापूर्ण अभिनेताओं को पहले से ब्लॉक करने में मदद मिलती है।
बैनलिस्ट को सीधे यहां से भी प्राप्त किया जा सकता है: https://demo.krawlme.com/das_dashboard/api/export-ips?categories=attacker&fwtype=raw.
Krawl इंस्टेंस अपनी बैनलिस्ट को फेडरेट कर सकते हैं: प्रत्येक अपनी सूची को एक अप्रमाणित पथ पर प्रकाशित कर सकता है और अन्य इंस्टेंस (या किसी भी प्लेन-टेक्स्ट IP सूची) से सूचियाँ खींच सकता है। प्राप्त IP को स्थानीय बैन निर्णयों में मर्ज किया जाता है और डैशबोर्ड में दिखाया जाता है।```yaml banlist:
export_path: "/public_banlist.txt"
sources: - "https://demo.krawlme.com/das_dashboard/api/export-ips?categories=attacker&fwtype=raw" - "https://krawl.example.com/public_banlist.txt"
refresh_interval: 3600 # seconds between fetches
## क्विकस्टार्ट
### डॉकर रन
नवीनतम इमेज के साथ Krawl को स्टैंडअलोन मोड में चलाएँ:```bash
docker run -d \
-p 5000:5000 \
-e KRAWL_DASHBOARD_SECRET_PATH="/my-secret-dashboard" \
-e KRAWL_DASHBOARD_PASSWORD="my-secret-password" \
-v krawl-data:/app/data \
--name krawl \
ghcr.io/blessedrebus/krawl:latest
सर्वर को http://localhost:5000 पर एक्सेस करें
दो डिप्लॉयमेंट मोड में से एक के साथ docker-compose.yaml बनाएं।
स्टैंडअलोन: Sqlite स्टोरेज के साथ केवल Krawl सर्वर:```yaml services: krawl: image: ghcr.io/blessedrebus/krawl:latest container_name: krawl-server ports: - "5000:5000" environment: - CONFIG_LOCATION=config.yaml # - KRAWL_DASHBOARD_PASSWORD=my-secret-password volumes: - ./config.yaml:/app/config.yaml:ro - krawl-data:/app/data restart: unless-stopped
volumes: krawl-data:
**स्केलेबल**: PostgreSQL और Redis के साथ:
> [!CAUTION]
> नीचे दिया गया उदाहरण **डिफ़ॉल्ट पासवर्ड** (`krawl`/`krawl`) का उपयोग करता है। **प्रोडक्शन में डिप्लॉय करने से पहले उन्हें बदलें।**```yaml
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: krawl
POSTGRES_USER: krawl
POSTGRES_PASSWORD: krawl
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U krawl -d krawl"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
volumes:
- redis_data:/data
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
krawl:
image: ghcr.io/blessedrebus/krawl:latest
container_name: krawl-server
ports:
- "5000:5000"
environment:
- CONFIG_LOCATION=config.yaml
- KRAWL_MODE=scalable
- KRAWL_POSTGRES_HOST=postgres
- KRAWL_POSTGRES_PORT=5432
- KRAWL_POSTGRES_USER=krawl
- KRAWL_POSTGRES_PASSWORD=krawl
- KRAWL_POSTGRES_DATABASE=krawl
- KRAWL_REDIS_HOST=redis
- KRAWL_REDIS_PORT=6379
# - KRAWL_DASHBOARD_PASSWORD=my-secret-password
volumes:
- ./config.yaml:/app/config.yaml:ro
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
volumes:
postgres_data:
redis_data:
तैनात करने के लिए, बस चलाएँ```bash docker compose up -d
प्रोडक्शन-रेडी कंपोज़ फ़ाइलें [`docker/`](https://github.com/blessedrebus/krawl/blob/main/docker) निर्देशिका में भी उपलब्ध हैं। **डेवलपमेंट** के लिए (हॉट-रिलोड के साथ स्रोत से बिल्ड), [`docker/dev/`](https://github.com/blessedrebus/krawl/blob/main/docker/dev) में कंपोज़ फ़ाइलों का उपयोग करें।
दोनों मोड के बारे में अधिक विवरण के लिए, [डिप्लॉयमेंट मोड्स](https://github.com/blessedrebus/krawl/blob/main/docs/deployment-modes.md) देखें।
### Kubernetes
**Krawl Kubernetes पर मूल रूप से भी उपलब्ध है**। इंस्टॉलेशन [मैनिफेस्ट के माध्यम से](https://github.com/blessedrebus/krawl/blob/main/kubernetes/README.md) या [Helm चार्ट का उपयोग करके](https://github.com/blessedrebus/krawl/blob/main/helm/README.md) किया जा सकता है।
Helm चार्ट **डिफ़ॉल्ट रूप से स्केलेबल मोड** में होता है, जिसमें बंडल किया गया PostgreSQL और Redis शामिल हैं:```bash
helm install krawl oci://ghcr.io/blessedrebus/krawl-chart --version 2.3.1 \
-n krawl-system --create-namespace \
--set postgres.password=your-password \
--set redis.password=your-redis-password \
--set dashboardPassword=your-dashboard-password \
--set config.dashboard.secret_path=/my-secret-dashboard
न्यूनतम उदाहरण मान फ़ाइलें दोनों मोड के लिए प्रदान की गई हैं:
values-minimal.yaml ---> स्केलेबल (डिफ़ॉल्ट)values-standalone.yaml ---> स्टैंडअलोनपूर्ण कॉन्फ़िगरेशन और माइग्रेशन निर्देशों के लिए Deployment Modes और Chart documentation देखें।
स्थानीय विकास या परीक्षण के लिए Krawl को Python 3.13+ और uvicorn के साथ सीधे चलाएँ:```bash pip install -r requirements.txt uvicorn app:app --host 0.0.0.0 --port 5000 --app-dir src --no-server-header
सर्वर को `http://localhost:5000` पर एक्सेस करें
## कॉन्फ़िगरेशन
Krawl एक **कॉन्फ़िगरेशन पदानुक्रम** का उपयोग करता है जिसमें **पर्यावरण चर कॉन्फ़िगरेशन फ़ाइल पर प्राथमिकता लेते हैं**। यह दृष्टिकोण Docker डिप्लॉयमेंट और त्वरित आउट-ऑफ-द-बॉक्स अनुकूलन के लिए अनुशंसित है।
### config.yaml के माध्यम से कॉन्फ़िगरेशन
आप उन्नत कॉन्फ़िगरेशन के लिए [config.yaml](https://github.com/blessedrebus/krawl/blob/main/config.yaml) फ़ाइल का उपयोग कर सकते हैं, जैसे कि Docker Compose या Helm chart डिप्लॉयमेंट।
### पर्यावरणीय चर के माध्यम से कॉन्फ़िगरेशन
सभी सेटिंग्स को पर्यावरण चर के रूप में प्रदान किया जा सकता है, जो `config.yaml` को ओवरराइड करते हैं।
चर का नाम `KRAWL_` प्लस सेटिंग पथ अपर केस में होता है, इसलिए `dashboard.password`
`KRAWL_DASHBOARD_PASSWORD` बन जाता है।
<details>
<summary><b>सर्वर और लिंक जनरेशन</b> (12 चर)</summary>
Krawl खुद को कैसे प्रस्तुत करता है और जनरेट किए गए पृष्ठों की भूलभुलैया को कैसे आकार देता है।
| पर्यावरण चर | विवरण | डिफ़ॉल्ट |
|----------------------|-------------|---------|
| `CONFIG_LOCATION` | yaml कॉन्फ़िग फ़ाइल का पथ | `config.yaml` |
| `KRAWL_PORT` | सर्वर सुनने वाला पोर्ट | `5000` |
| `KRAWL_DELAY` | मिलीसेकंड में प्रतिक्रिया विलंब | `100` |
| `KRAWL_SERVER_HEADER` | धोखे के लिए HTTP सर्वर हेडर | `""` |
| `KRAWL_LINKS_LENGTH_RANGE` | लिंक लंबाई सीमा `min,max` के रूप में | `5,15` |
| `KRAWL_LINKS_PER_PAGE_RANGE` | प्रति पृष्ठ लिंक `min,max` के रूप में | `10,15` |
| `KRAWL_CHAR_SPACE` | लिंक जनरेशन के लिए उपयोग किए जाने वाले वर्ण | `abcdefgh...` |
| `KRAWL_MAX_COUNTER` | प्रारंभिक काउंटर मान | `10` |
| `KRAWL_PROBABILITY_ERROR_CODES` | त्रुटि प्रतिक्रिया संभावना (0-100%) | `0` |
| `KRAWL_INFINITE_PAGES_FOR_MALICIOUS` | दुर्भावनापूर्ण IP को अनंत पृष्ठ परोसें | `true` |
| `KRAWL_MAX_PAGES_LIMIT` | क्रॉलर के लिए अधिकतम पृष्ठ सीमा | `250` |
| `KRAWL_BAN_DURATION_SECONDS` | दर-सीमित IP के लिए सेकंड में प्रतिबंध अवधि | `600` |
</details>
<details>
<summary><b>डैशबोर्ड, मेट्रिक्स और लॉगिंग</b> (8 चर)</summary>
डैशबोर्ड एक्सेस, कैश वार्मअप, Prometheus और लॉग स्तर।
| पर्यावरण चर | विवरण | डिफ़ॉल्ट |
|----------------------|-------------|---------|
| `KRAWL_DASHBOARD_SECRET_PATH` | कस्टम डैशबोर्ड पथ | स्वतः-जनरेटेड |
| `KRAWL_DASHBOARD_PASSWORD` | सुरक्षित डैशबोर्ड पैनल के लिए पासवर्ड | स्वतः-जनरेटेड |
| `KRAWL_DASHBOARD_CACHE_WARMUP` | त्वरित पृष्ठ लोड के लिए हर 5 मिनट में डैशबोर्ड डेटा पूर्व-गणना करें | `true` |
| `KRAWL_DASHBOARD_WARMUP_PAGES` | प्रति तालिका पैनल पूर्व-वार्म करने के लिए पृष्ठों की संख्या | `10` |
| `KRAWL_DASHBOARD_WARMUP_AGGREGATION` | शून्य-क्वेरी सेवा के लिए पूर्ण top_paths/top_ua एकत्रीकरण पूर्व-गणना करें | `false` |
| `KRAWL_DASHBOARD_TOP_N_MIN_COUNT` | शीर्ष पथ/उपयोगकर्ता एजेंट पैनल के लिए न्यूनतम एक्सेस गणना (अक्षम करने के लिए 1 पर सेट करें) | `5` |
| `KRAWL_METRICS_ENABLED` | `/<dashboard_path>/metrics` पर Prometheus मेट्रिक्स उजागर करें | `true` |
| `KRAWL_LOG_LEVEL` | एप्लिकेशन लॉग स्तर (`DEBUG`, `INFO`, `WARNING`, `ERROR`) | `INFO` |
</details>
<details>
<summary><b>डेटाबेस, प्रतिधारण और बैकअप</b> (6 चर)</summary>
स्टोरेज स्थान, डेटा कितने समय तक रखा जाता है, और डंप जॉब।
| पर्यावरण चर | विवरण | डिफ़ॉल्ट |
|----------------------|-------------|---------|
| `KRAWL_DATABASE_PATH` | डेटाबेस फ़ाइल स्थान | `data/krawl.db` |
| `KRAWL_DATABASE_PERSIST_SUSPICIOUS_ONLY` | केवल संदिग्ध अनुरोधों को एक्सेस लॉग में स्थायी रूप से सहेजें | `false` |
| `KRAWL_DATABASE_RETENTION_DAYS` | डेटाबेस में डेटा बनाए रखने के दिन | `30` |
| `KRAWL_BACKUPS_PATH` | वह पथ जहां डेटाबेस डंप सहेजे जाते हैं | `backups` |
| `KRAWL_BACKUPS_CRON` | बैकअप जॉब शेड्यूल नियंत्रित करने के लिए cron एक्सप्रेशन | `*/30 * * * *` |
| `KRAWL_BACKUPS_ENABLED` | db डंप जॉब सक्षम करने के लिए बूलियन | `true` |
</details>
<details>
<summary><b>ट्रैप: टारपिट, धोखा पृष्ठ और कैनरी</b> (6 चर)</summary>
ऑप्ट-इन ट्रैप और हमलावरों को परोसे जाने वाले पृष्ठ।
| पर्यावरण चर | विवरण | डिफ़ॉल्ट |
|----------------------|-------------|---------|
| `KRAWL_TARPIT_ENABLED` | धीमी प्रतिक्रियाओं और यादृच्छिक पाठ के साथ AI एजेंटों को फंसाएं | `false` |
| `KRAWL_TARPIT_DELAY_SECONDS` | टारपिट सक्रिय होने पर प्रति प्रतिक्रिया जोड़ा गया अतिरिक्त विलंब सेकंड में | `5` |
| `KRAWL_DECEPTION_IMPORT_PAGES` | स्टार्टअप पर `src/templates/deception/` से धोखा पृष्ठ स्वतः-आयात करें | `true` |
| `KRAWL_CUSTOM_TEMPLATE_PATH` | कंटेनर के अंदर कस्टम HTML टेम्पलेट का पथ। टेम्पलेट में `{counter}` और `{content}` प्लेसहोल्डर शामिल होने चाहिए। | `/templates/custom_page.html` |
| `KRAWL_CANARY_TOKEN_URL` | बाहरी कैनरी टोकन URL | None |
| `KRAWL_CANARY_TOKEN_TRIES` | कैनरी टोकन दिखाने से पहले अनुरोध | `10` |
</details>
<details>
<summary><b>IP प्रतिष्ठा विश्लेषक</b> (6 चर)</summary>
वे थ्रेशोल्ड जो तय करते हैं कि IP को कैसे वर्गीकृत किया जाता है।
| पर्यावरण चर | विवरण | डिफ़ॉल्ट |
|----------------------|-------------|---------|
| `KRAWL_HTTP_RISKY_METHODS_THRESHOLD` | जोखिमपूर्ण HTTP विधियों का पता लगाने के लिए थ्रेशोल्ड | `0.1` |
| `KRAWL_VIOLATED_ROBOTS_THRESHOLD` | robots.txt उल्लंघनों के लिए थ्रेशोल्ड | `0.1` |
| `KRAWL_UNEVEN_REQUEST_TIMING_THRESHOLD` | समय के लिए भिन्नता का गुणांक थ्रेशोल्ड | `0.5` |
| `KRAWL_UNEVEN_REQUEST_TIMING_TIME_WINDOW_SECONDS` | सेकंड में अनुरोध समय विश्लेषण के लिए समय विंडो | `300` |
| `KRAWL_USER_AGENTS_USED_THRESHOLD` | कई उपयोगकर्ता एजेंटों का पता लगाने के लिए थ्रेशोल्ड | `2` |
| `KRAWL_ATTACK_URLS_THRESHOLD` | हमले URL का पता लगाने के लिए थ्रेशोल्ड | `1` |
</details>
<details>
<summary><b>बैनलिस्ट और अनदेखा किए गए IP</b> (4 चर)</summary>
अन्य इंस्टेंस के साथ बैनलिस्ट साझा करना, और ट्रैक न किया जाने वाला ट्रैफ़िक।
| पर्यावरण चर | विवरण | डिफ़ॉल्ट |
|----------------------|-------------|---------|
| `KRAWL_IGNORED_IPS` | अल्पविराम-पृथक IP/CIDR जो कभी ट्रैक, प्रतिबंधित या निर्यात नहीं किए जाते | Loopback, RFC1918, link-local, CGNAT |
| `KRAWL_BANLIST_EXPORT_PATH` | सार्वजनिक बैनलिस्ट डाउनलोड पथ, जैसे `/public_banlist.txt` (खाली = अक्षम) | `""` |
| `KRAWL_BANLIST_SOURCES` | लाने और मर्ज करने के लिए अल्पविराम-पृथक अपस्ट्रीम बैनलिस्ट URL | Krawl सामुदायिक बैनलिस्ट |
| `KRAWL_BANLIST_REFRESH_INTERVAL` | अपस्ट्रीम बैनलिस्ट लाने के बीच सेकंड | `3600` |
</details>
<details>
<summary><b>AI-जनरेटेड धोखा पृष्ठ</b> (10 चर)</summary>
[AI जनरेशन दस्तावेज़ीकरण](https://github.com/blessedrebus/krawl/blob/main/docs/ai_generation.md) देखें।
| पर्यावरण चर | विवरण | डिफ़ॉल्ट |
|----------------------|-------------|---------|
| `KRAWL_AI_ENABLED` | AI-जनरेटेड धोखा पृष्ठ सक्षम करें | `false` |
| `KRAWL_AI_PROVIDER` | AI प्रदाता (`"openrouter"` या `"openai"`) | `"openrouter"` |
| `KRAWL_AI_OPENAI_BASE_URL` | कस्टम API एंडपॉइंट के लिए वैकल्पिक OpenAI Base URL | `"https://api.openai.com/v1"` |
| `KRAWL_AI_API_KEY` | AI प्रदाता के लिए API कुंजी | `None` |
| `KRAWL_AI_MODEL` | पृष्ठ जनरेशन के लिए उपयोग किया जाने वाला AI मॉडल | `"nvidia/nemotron-3-super-120b-a12b:free"` |
| `KRAWL_AI_TIMEOUT` | AI API कॉल के लिए सेकंड में अनुरोध टाइमआउट | `60` |
| `KRAWL_AI_MAX_DAILY_REQUESTS` | प्रति दिन AI-जनरेटेड पृष्ठों की अधिकतम संख्या (0 = असीमित) | `0` |
| `KRAWL_AI_PROMPT` | AI पृष्ठ जनरेशन के लिए कस्टम प्रॉम्प्ट टेम्पलेट | डिफ़ॉल्ट प्रॉम्प्ट |
| `KRAWL_AI_REASONING_ENABLED` | रीज़निंग टोकन सक्षम करें (केवल OpenRouter रीज़निंग मॉडल) | `false` |
| `KRAWL_AI_REASONING_EFFORT` | रीज़निंग प्रयास (`none`, `minimal`, `low`, `medium`, `high`, `xhigh`) | `"medium"` |
</details>
<details>
<summary><b>स्केलेबल मोड: PostgreSQL और Redis</b> (13 चर)</summary>
केवल तब उपयोग किया जाता है जब `KRAWL_MODE=scalable`। [डिप्लॉयमेंट मोड](https://github.com/blessedrebus/krawl/blob/main/docs/deployment-modes.md) देखें।
| पर्यावरण चर | विवरण | डिफ़ॉल्ट |
|----------------------|-------------|---------|
| `KRAWL_MODE` | डिप्लॉयमेंट मोड (`standalone` या `scalable`) | `standalone` |
| `KRAWL_POSTGRES_HOST` | PostgreSQL होस्टनाम | `localhost` |
| `KRAWL_POSTGRES_PORT` | PostgreSQL पोर्ट | `5432` |
| `KRAWL_POSTGRES_USER` | PostgreSQL उपयोगकर्ता नाम | `krawl` |
| `KRAWL_POSTGRES_PASSWORD` | PostgreSQL पासवर्ड | `krawl` |
| `KRAWL_POSTGRES_DATABASE` | PostgreSQL डेटाबेस नाम | `krawl` |
| `KRAWL_REDIS_HOST` | Redis होस्टनाम | `localhost` |
| `KRAWL_REDIS_PORT` | Redis पोर्ट | `6379` |
| `KRAWL_REDIS_DB` | Redis डेटाबेस संख्या | `0` |
| `KRAWL_REDIS_PASSWORD` | Redis पासवर्ड | None |
| `KRAWL_REDIS_CACHE_TTL` | डैशबोर्ड वार्मअप डेटा के लिए सेकंड में TTL | `600` |
| `KRAWL_REDIS_HOT_TTL` | हॉट-पाथ डेटा (प्रतिबंध जानकारी, IP श्रेणियां) के लिए सेकंड में TTL | `30` |
| `KRAWL_REDIS_TABLE_TTL` | पेजिनेटेड डैशबोर्ड तालिकाओं के लिए सेकंड में TTL | `120` |
</details>
उदाहरण के लिए```bash
# Set canary token
export CONFIG_LOCATION="config.yaml"
export KRAWL_CANARY_TOKEN_URL="http://your-canary-token-url"
# Set number of pages range (min,max format)
export KRAWL_LINKS_PER_PAGE_RANGE="5,25"
# Set analyzer thresholds
export KRAWL_HTTP_RISKY_METHODS_THRESHOLD="0.2"
export KRAWL_VIOLATED_ROBOTS_THRESHOLD="0.15"
# Set custom dashboard path and password
export KRAWL_DASHBOARD_SECRET_PATH="/my-secret-dashboard"
export KRAWL_DASHBOARD_PASSWORD="my-secret-password"
Docker run का उदाहरण env वेरिएबल्स के साथ (स्टैंडअलोन मोड):```bash
docker run -d
-p 5000:5000
-e KRAWL_MODE=standalone
-e KRAWL_PORT=5000
-e KRAWL_DELAY=100
-e KRAWL_DASHBOARD_PASSWORD="my-secret-password"
-e KRAWL_CUSTOM_TEMPLATE_PATH="/templates/custom_page.html"
-e KRAWL_CANARY_TOKEN_URL="http://your-canary-token-url"
--name krawl
ghcr.io/blessedrebus/krawl:latest
## मैलिशियस IPs को बैन करने के लिए Krawl का उपयोग करें
Krawl आक्रमणकारी IP पतों को वर्गीकृत करने के लिए प्रतिष्ठा-आधारित प्रणाली का उपयोग करता है और फ़ायरवॉल एकीकरण के लिए IP सूचियाँ निर्यात करने के दो तरीके प्रदान करता है।
`/api/export-ips` एंडपॉइंट सीधे डेटाबेस से क्वेरी करता है और IP श्रेणी (`attacker`, `bad_crawler`, `regular_user`, `good_crawler`) और आउटपुट प्रारूप (`raw`, `iptables`, `nftables`) द्वारा फ़िल्टरिंग का समर्थन करता है:```bash
curl "https://your-krawl-instance/<DASHBOARD-PATH>/api/export-ips?categories=attacker&fwtype=raw"
यह विभिन्न प्लेटफार्मों पर दुर्भावनापूर्ण ट्रैफ़िक की स्वचालित ब्लॉकिंग सक्षम करता है:
पूर्ण API पैरामीटर, उदाहरण, और कस्टम फ़ायरवॉल प्रारूप जोड़ने के लिए, Firewall Exporters दस्तावेज़ीकरण देखें।
Krawl बैन किए गए IP को सीधे Cloudflare Account IP List में भी पुश कर सकता है, जिसका उपयोग WAF नियमों में किया जा सकता है। सिंक एक पृष्ठभूमि कार्य के रूप में चलता है और कॉन्फ़िगर करने योग्य अंतराल पर पूर्ण प्रतिस्थापन द्वारा सूची को अपडेट करता है। Cloudflare Banlist Sync दस्तावेज़ीकरण देखें।
Krawl हाल के ट्रैफ़िक का विश्लेषण करने और IP प्रतिष्ठा स्कोर बनाने तथा लगातार अपडेट करने के लिए कार्यों का उपयोग करता है। यह समय-समय पर चलता है और प्रत्येक सक्रिय IP पते का मूल्यांकन कई व्यवहारिक संकेतकों के आधार पर करता है ताकि इसे हमलावर, क्रॉलर, या नियमित उपयोगकर्ता के रूप में वर्गीकृत किया जा सके। थ्रेशोल्ड पूरी तरह से अनुकूलन योग्य हैं।

विश्लेषण में शामिल हैं:
प्रत्येक संकेत एक भारित स्कोरिंग मॉडल में योगदान देता है जो एक प्रतिष्ठा श्रेणी निर्दिष्ट करता है:
attackerbad_crawlergood_crawlerregular_userunknown (अपर्याप्त डेटा के लिए)परिणामी स्कोर और मेट्रिक्स डेटाबेस में संग्रहीत किए जाते हैं और Krawl द्वारा डैशबोर्ड, प्रतिष्ठा ट्रैकिंग, और IP बैनिंग या फ़ायरवॉल एकीकरण जैसी स्वचालित शमन कार्रवाइयों को चलाने के लिए उपयोग किए जाते हैं।
Krawl OpenRouter या OpenAI APIs से AI मॉडल का उपयोग करके स्वचालित रूप से यथार्थवादी डिसेप्शन पेज उत्पन्न कर सकता है। यह सुविधा मैन्युअल पेज निर्माण के बिना हमलावरों को धोखा देने के लिए अद्वितीय, प्रशंसनीय हनीपॉट पेज तुरंत बनाती है।
मुख्य विशेषताएं:
त्वरित सेटअप:```yaml ai: enabled: true provider: "openrouter" openai_base_url: "your-custom-base-url" api_key: "your-api-key" model: "nvidia/nemotron-3-super-120b-a12b:free" timeout: 60 max_daily_requests: 10
विस्तृत कॉन्फ़िगरेशन और उपयोग के लिए, [AI जनरेशन दस्तावेज़](https://github.com/blessedrebus/krawl/blob/main/docs/ai_generation.md) देखें।
आप **धोखा टेम्पलेट्स का योगदान** भी PR खोलकर कर सकते हैं, [धोखा टेम्पलेट्स का योगदान](https://github.com/blessedrebus/krawl/blob/main/docs/deception_pages.md#contributing-deception-templates-via-pr) देखें।
## रिवर्स प्रॉक्सी या CDN के पीछे चलाना
**NGINX, Traefik, और CloudFlare जैसे अन्य प्रॉक्सी** को हेडर फ़ॉरवर्डिंग की आवश्यकता होती है ताकि Krawl वास्तविक IP देख सके। कॉन्फ़िगरेशन उदाहरणों और पूर्ण हेडर सूची के लिए [रिवर्स प्रॉक्सी दस्तावेज़](https://github.com/blessedrebus/krawl/blob/main/docs/reverse-proxy.md) देखें।
## मेट्रिक्स और मॉनिटरिंग
Krawl `/<dashboard_secret_path>/metrics` पर [Prometheus](https://prometheus.io/) मेट्रिक्स उजागर करता है (डिफ़ॉल्ट रूप से सक्षम) और [`grafana-dashboard.json`](https://github.com/blessedrebus/krawl/blob/main/grafana-dashboard.json) पर आयात-योग्य [Grafana](https://grafana.com/) डैशबोर्ड के साथ आता है।
पूर्ण मेट्रिक सूची, Grafana आयात चरणों, और Prometheus / Kubernetes (`ServiceMonitor`) स्क्रैपिंग सेटअप के लिए [मॉनिटरिंग दस्तावेज़](https://github.com/blessedrebus/krawl/blob/main/docs/monitoring.md) देखें।
## अतिरिक्त दस्तावेज़
| विषय | विवरण |
|-------|-------------|
| [AI जनरेशन](https://github.com/blessedrebus/krawl/blob/main/docs/ai_generation.md) | OpenRouter या OpenAI का उपयोग करके AI-जनित धोखा पृष्ठ कॉन्फ़िगर करें |
| [धोखा पृष्ठ](https://github.com/blessedrebus/krawl/blob/main/docs/deception_pages.md) | धोखा पृष्ठ प्रबंधित करें, आयात करें, और निर्यात करें; बल्क संचालन और दिनांक-आधारित फ़िल्टरिंग |
| [परिनियोजन मोड](https://github.com/blessedrebus/krawl/blob/main/docs/deployment-modes.md) | स्टैंडअलोन (SQLite) बनाम स्केलेबल (PostgreSQL + Redis) मोड, कॉन्फ़िगरेशन, और डेटा माइग्रेशन |
| [हनीपॉट](https://github.com/blessedrebus/krawl/blob/main/docs/honeypot.md) | हनीपॉट पृष्ठों का पूर्ण अवलोकन: नकली लॉगिन, निर्देशिका सूचियाँ, क्रेडेंशियल फ़ाइलें, SQLi/XSS/XXE/कमांड इंजेक्शन ट्रैप, और अधिक |
| [डैशबोर्ड](https://github.com/blessedrebus/krawl/blob/main/docs/dashboard.md) | रीयल-टाइम मॉनिटरिंग डैशबोर्ड तक पहुँचें और अन्वेषण करें |
| [डैशबोर्ड API](https://github.com/blessedrebus/krawl/blob/main/docs/dashboard-api.md) | Krawl का अपना JSON API: एंडपॉइंट संदर्भ, प्रमाणीकरण, इंटरैक्टिव OpenAPI दस्तावेज़, और अटैचमेंट डाउनलोड |
| [बाहरी APIs](https://github.com/blessedrebus/krawl/blob/main/docs/api.md) | तृतीय-पक्ष APIs जिन्हें Krawl IP डेटा, प्रतिष्ठा, और जियोलोकेशन के लिए कॉल करता है |
| [रिवर्स प्रॉक्सी](https://github.com/blessedrebus/krawl/blob/main/docs/reverse-proxy.md) | NGINX के पीछे Krawl कैसे परिनियोजित करें या डिकॉय सबडोमेन का उपयोग करें |
| [डेटाबेस बैकअप](https://github.com/blessedrebus/krawl/blob/main/docs/backups.md) | स्वचालित डेटाबेस डंप जॉब सक्षम और कॉन्फ़िगर करें |
| [कैनरी टोकन](https://github.com/blessedrebus/krawl/blob/main/docs/canary-token.md) | canarytokens.org के माध्यम से बाहरी अलर्ट ट्रिगर सेट करें |
| [वर्डलिस्ट](https://github.com/blessedrebus/krawl/blob/main/docs/wordlist.md) | नकली उपयोगकर्ता नाम, पासवर्ड, और निर्देशिका सूचियाँ अनुकूलित करें |
| [आर्किटेक्चर](https://github.com/blessedrebus/krawl/blob/main/docs/architecture.md) | कोडबेस, अनुरोध पाइपलाइन, डेटाबेस स्कीमा, और पृष्ठभूमि कार्यों का तकनीकी अवलोकन |
| [Cloudflare बैनलिस्ट सिंक](https://github.com/blessedrebus/krawl/blob/main/docs/cloudflare_banlist.md) | Krawl से प्रतिबंधित IP को WAF नियमों में उपयोग के लिए Cloudflare खाता IP सूची में पुश करता है। सिंक एक पृष्ठभूमि कार्य के रूप में चलता है और पूर्ण प्रतिस्थापन द्वारा सूची को अपडेट करता है। |
| [फ़ायरवॉल एक्सपोर्टर](https://github.com/blessedrebus/krawl/blob/main/docs/firewall-exporters.md) | REST API के माध्यम से IP बैनलिस्ट को raw, iptables, या nftables प्रारूप में निर्यात करें |
| [टारपिट](https://github.com/blessedrebus/krawl/blob/main/docs/tarpit.md) | विलंबित, शोर-पैडेड प्रतिक्रियाओं के साथ AI क्रॉलर को धीमा करें और ज़हर दें |
| [मेट्रिक्स और मॉनिटरिंग](https://github.com/blessedrebus/krawl/blob/main/docs/monitoring.md) | Prometheus मेट्रिक्स एंडपॉइंट, उजागर मेट्रिक्स संदर्भ, Grafana डैशबोर्ड, और ServiceMonitor स्क्रैपिंग |
## योगदान
योगदान का स्वागत है! कृपया:
1. रिपॉजिटरी को फ़ोर्क करें
2. एक फीचर ब्रांच बनाएं
3. अपने परिवर्तन करें
4. एक पुल अनुरोध सबमिट करें (परिवर्तनों की व्याख्या करें!)
## अस्वीकरण
> [!CAUTION]
> यह एक धोखा/हनीपॉट प्रणाली है। पृथक वातावरण में परिनियोजित करें और सुरक्षा घटनाओं के लिए सावधानीपूर्वक निगरानी करें। लागू कानूनों और विनियमों के अनुपालन में जिम्मेदारी से उपयोग करें।
## स्टार इतिहास
<img src="https://star-history.dera.page/svg?repos=BlessedRebuS/Krawl&type=Date" width="600" alt="Star History Chart" />
| स्टैंडअलोन | स्केलेबल |
|---|
| डेटाबेस | SQLite (WAL मोड) | PostgreSQL |
| कैश | इन-मेमोरी Python dict | Redis (मल्टी-टियर TTL) |
| रेप्लिका | 1 (एकल इंस्टेंस) | 1+ (क्षैतिज स्केलिंग) |
| बाहरी निर्भरताएं | कोई नहीं | PostgreSQL + Redis |
| सर्वोत्तम उपयोग | Dev, homelabs, <500k अनुरोध | प्रोडक्शन, HA, >500k अनुरोध |