
Krawl v2.3.0
Krawl एक अनुकूलन योग्य, हल्का, क्लाउड-नेटिव वेब धोखाधड़ी सर्वर और एंटी-क्रॉलर है जो यथार्थवादी, यादृच्छिक रूप से उत्पन्न डिकॉय डेटा और एआई-जनरेटेड HTML टेम्पलेट्स का उपयोग करके आसानी से शोषण योग्य कमजोरियों वाले नकली वेब एप्लिकेशन बनाता है।
Krawl
आधुनिक, अनुकूलन योग्य वेब हनीपॉट सर्वर जो भ्रामक वेब पेजों, नकली क्रेडेंशियल्स और कैनरी टोकन के माध्यम से हमलावरों और वेब क्रॉलर की दुर्भावनापूर्ण गतिविधि का पता लगाने और उसे ट्रैक करने के लिए डिज़ाइन किया गया है।
विषय-सूची
- डेमो
- Krawl क्या है?
- Krawl डैशबोर्ड
- डिप्लॉयमेंट मोड
- Krawl बैनलिस्ट
- त्वरित आरंभ
- कॉन्फ़िगरेशन
- दुर्भावनापूर्ण IP बैन करें
- IP प्रतिष्ठा
- रिवर्स प्रॉक्सी या CDN के पीछे चलाना
- मेट्रिक्स और निगरानी
- अतिरिक्त दस्तावेज़ीकरण
- AI का उपयोग करके डिसेप्शन
- योगदान
डेमो
टिप: अतिरिक्त मज़े के लिए robots.txt पथों को क्रॉल करें
Krawl URL: http://demo.krawlme.com
डैशबोर्ड देखें http://demo.krawlme.com/das_dashboard
Krawl क्या है?
Krawl एक क्लाउड‑नेटिव डिसेप्शन सर्वर है जो दुर्भावनापूर्ण हमलावरों, वेब क्रॉलर और स्वचालित स्कैनरों का पता लगाने, उन्हें विलंबित करने और उनका विश्लेषण करने के लिए डिज़ाइन किया गया है।
यह यथार्थवादी नकली वेब एप्लिकेशन बनाता है, जो एडमिन पैनल, कॉन्फ़िगरेशन फ़ाइलें और उजागर नकली क्रेडेंशियल जैसे आसान लक्ष्यों से भरे होते हैं, ताकि संदिग्ध गतिविधि को आकर्षित किया जा सके और उसकी पहचान की जा सके।

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

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

- हमले: कैप्चर किए गए क्रेडेंशियल, हनीपॉट ट्रिगर और पहचाने गए हमले के प्रकार (SQLi, XSS, path traversal, आदि) का चार्ट और टेबल के साथ विस्तृत विवरण।

- IP इनसाइट: चयनित IP का गहन फोरेंसिक दृश्य: जियोलोकेशन, ISP/ASN जानकारी, प्रतिष्ठा फ़्लैग, व्यवहारिक टाइमलाइन, हमले के प्रकार का वितरण और पूर्ण एक्सेस इतिहास।

इसके अतिरिक्त, डैशबोर्ड पासवर्ड से प्रमाणित करने के बाद, दो संरक्षित टैब उपलब्ध हो जाते हैं:
- ट्रैक किए गए IP: उन IP पतों की वॉचलिस्ट बनाए रखें जिन्हें आप समय के साथ मॉनिटर करना चाहते हैं।
- IP बैनलिस्ट: IP बैन प्रबंधित करें, पहचाने गए हमलावरों को देखें, और बैनलिस्ट को raw या IPTables प्रारूप में निर्यात करें।
- डिसेप्शन: AI जनरेटेड पेज प्रबंधित करें, उन्हें निर्यात करें या नए आयात करें।
अधिक विवरण के लिए, डैशबोर्ड दस्तावेज़ीकरण देखें।
डिप्लॉयमेंट मोड
Krawl दो डिप्लॉयमेंट मोड का समर्थन करता है, जिन्हें config.yaml में mode सेटिंग या KRAWL_MODE पर्यावरण चर के माध्यम से नियंत्रित किया जाता है।
| Standalone | Scalable | |
|---|---|---|
| डेटाबेस | SQLite (WAL mode) | PostgreSQL |
| कैश | इन-मेमोरी Python dict | Redis (बहु-स्तरीय TTL) |
| रेप्लिकास | 1 (एकल इंस्टेंस) | 1+ (क्षैतिज स्केलिंग) |
| बाहरी निर्भरताएँ | कोई नहीं | PostgreSQL + Redis |
| सबसे उपयुक्त | Dev, होमलैब्स, <500k अनुरोध | Production, HA, >500k अनुरोध |
Standalone: कम अनुरोध संख्या वाले विकास वातावरण या होमलैब्स के लिए आदर्श। किसी अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता नहीं है, बस Krawl चलाएँ और यह काम करता है।
- बिना किसी बाहरी निर्भरता के एकल कंटेनर तैनाती
- कम RAM और संसाधन उपयोग
Scalable: उत्पादन वातावरण या उच्च-ट्रैफ़िक हनीपॉट्स के लिए डिज़ाइन किया गया। Helm चार्ट डिफ़ॉल्ट रूप से इस मोड का उपयोग करता है।
- Redis बहु-स्तरीय कैशिंग की बदौलत तेज़, अधिक प्रतिक्रियाशील डैशबोर्ड
- PostgreSQL के सामने Redis हॉट-पाथ कैश के रूप में कार्य करने से कम डिस्क I/O
- लोड बैलेंसर के पीछे Krawl रेप्लिकास की संख्या बढ़ाकर क्षैतिज स्केलिंग
विस्तृत कॉन्फ़िगरेशन, Docker Compose उदाहरण, Kubernetes/Helm सेटअप और चरण-दर-चरण माइग्रेशन निर्देशों के लिए, डिप्लॉयमेंट मोड दस्तावेज़ीकरण देखें।
Krawl बैनलिस्ट
Krawl नियमित रूप से अद्यतन banlist.txt बनाए रखता है, जिसमें उन हमलावरों के IP पते शामिल हैं जिन्होंने इसके हनीपॉट ट्रैप को ट्रिगर किया। बैनलिस्ट साप्ताहिक रूप से प्रकाशित होती है और डाउनलोड के लिए उपलब्ध होती है, जिससे समुदाय Krawl का उपयोग किए बिना भी ज्ञात दुर्भावनापूर्ण अभिनेताओं को सक्रिय रूप से ब्लॉक कर सकता है।
बैनलिस्ट को सीधे यहाँ से भी प्राप्त किया जा सकता है: https://demo.krawlme.com/das_dashboard/api/export-ips?categories=attacker&fwtype=raw.
इंस्टेंसों के बीच बैनलिस्ट साझा करना
Krawl इंस्टेंस अपनी बैनलिस्ट को फेडरेट कर सकते हैं: प्रत्येक इंस्टेंस अपनी सूची को एक अप्रमाणित पथ पर प्रकाशित कर सकता है और अन्य इंस्टेंस (या किसी भी सादे-पाठ IP सूची) से सूचियाँ खींच सकता है। प्राप्त IP को स्थानीय बैन निर्णयों में मर्ज कर दिया जाता है और डैशबोर्ड में दिखाया जाता है।```yaml banlist:
Public, unauthenticated download path for this instance's banlist.
Supports the same ?categories= and ?fwtype= parameters as the main API.
Empty = disabled.
export_path: "/public_banlist.txt"
Upstream banlists to fetch and merge. Plain ".txt" lists work too.
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
दो तैनाती मोडों में से किसी एक के साथ docker-compose.yaml बनाएँ।
Standalone: केवल Krawl सर्वर Sqlite स्टोरेज के साथ:```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
Production-ready compose files are also available in the [`docker/`](https://github.com/blessedrebus/krawl/blob/HEAD/docker/) directory. For **development** (builds from source with hot-reload), use the compose files in [`docker/dev/`](https://github.com/blessedrebus/krawl/blob/HEAD/docker/dev/).
For more details on both modes, see [Deployment Modes](https://github.com/blessedrebus/krawl/blob/HEAD/docs/deployment-modes.md).
### Kubernetes
**Krawl is also available natively on Kubernetes**. Installation can be done either [via manifest](https://github.com/blessedrebus/krawl/blob/HEAD/kubernetes/README.md) or [using the Helm chart](https://github.com/blessedrebus/krawl/blob/HEAD/helm/README.md).
The Helm chart **defaults to scalable mode** with bundled PostgreSQL and Redis:```bash
helm install krawl oci://ghcr.io/blessedrebus/krawl-chart --version 2.3.0 \
-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 फ़ाइलें प्रदान की गई हैं:
values-minimal.yaml---> Scalable (default)values-standalone.yaml---> Standalone
पूर्ण कॉन्फ़िगरेशन और माइग्रेशन निर्देशों के लिए Deployment Modes और Chart documentation देखें।
Uvicorn (Python)
स्थानीय विकास या परीक्षण के लिए 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
Access the server at `http://localhost:5000`
## कॉन्फ़िगरेशन
Krawl एक **कॉन्फ़िगरेशन पदानुक्रम** का उपयोग करता है जिसमें **पर्यावरण चर कॉन्फ़िगरेशन फ़ाइल पर प्राथमिकता रखते हैं**। यह दृष्टिकोण Docker परिनियोजन और त्वरित आउट-ऑफ़-द-बॉक्स अनुकूलन के लिए अनुशंसित है।
### config.yaml के माध्यम से कॉन्फ़िगरेशन
आप उन्नत कॉन्फ़िगरेशन के लिए [config.yaml](https://github.com/blessedrebus/krawl/blob/HEAD/config.yaml) फ़ाइल का उपयोग कर सकते हैं, जैसे Docker Compose या Helm chart परिनियोजन।
### पर्यावरणीय चरों के माध्यम से कॉन्फ़िगरेशन
सभी सेटिंग्स को पर्यावरण चर के रूप में प्रदान किया जा सकता है, जो `config.yaml` को ओवरराइड करते हैं।
चर का नाम `KRAWL_` जोड़कर सेटिंग पथ को अपर केस में लिखा जाता है, इसलिए `dashboard.password`
`KRAWL_DASHBOARD_PASSWORD` बन जाता है।
<details>
<summary><b>सर्वर और लिंक निर्माण</b> (12 चर)</summary>
Krawl कैसे स्वयं को प्रस्तुत करता है और उत्पन्न पृष्ठों की भूलभुलैया को आकार देता है।
| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `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` | दुर्भावनापूर्ण IPs को अनंत पृष्ठ परोसें | `true` |
| `KRAWL_MAX_PAGES_LIMIT` | क्रॉलर के लिए अधिकतम पृष्ठ सीमा | `250` |
| `KRAWL_BAN_DURATION_SECONDS` | दर-सीमित IPs के लिए बैन अवधि सेकंड में | `600` |
</details>
<details>
<summary><b>डैशबोर्ड, मेट्रिक्स और लॉगिंग</b> (8 चर)</summary>
डैशबोर्ड पहुंच, कैश वार्मअप, Prometheus और लॉग स्तर।
| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `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>
भंडारण स्थान, डेटा कितने समय तक रखा जाता है, और डंप कार्य।
| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `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>
ऑप्ट-इन ट्रैप और हमलावरों को परोसे जाने वाले पृष्ठ।
| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `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 को कैसे वर्गीकृत किया जाता है।
| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `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>
अन्य इंस्टेंस के साथ बैनलिस्ट साझा करना, और ऐसा ट्रैफ़िक जिसे कभी ट्रैक न करें।
| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `KRAWL_IGNORED_IPS` | अल्पविराम से अलग किए गए IPs/CIDRs जिन्हें कभी ट्रैक, बैन या निर्यात नहीं किया जाता | Loopback, RFC1918, link-local, CGNAT |
| `KRAWL_BANLIST_EXPORT_PATH` | सार्वजनिक बैनलिस्ट डाउनलोड पथ, जैसे `/public_banlist.txt` (खाली = अक्षम) | `""` |
| `KRAWL_BANLIST_SOURCES` | लाने और मर्ज करने के लिए अल्पविराम से अलग किए गए अपस्ट्रीम बैनलिस्ट URL | Krawl community banlist |
| `KRAWL_BANLIST_REFRESH_INTERVAL` | अपस्ट्रीम बैनलिस्ट लाने के बीच सेकंड | `3600` |
</details>
<details>
<summary><b>AI-जनित भ्रामक पृष्ठ</b> (10 चर)</summary>
[AI Generation दस्तावेज़](https://github.com/blessedrebus/krawl/blob/HEAD/docs/ai_generation.md) देखें।
| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `KRAWL_AI_ENABLED` | AI-जनित भ्रामक पृष्ठ सक्षम करें | `false` |
| `KRAWL_AI_PROVIDER` | AI प्रदाता (`"openrouter"` या `"openai"`) | `"openrouter"` |
| `KRAWL_AI_OPENAI_BASE_URL` | कस्टम API एंडपॉइंट के लिए वैकल्पिक OpenAI बेस 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` होने पर उपयोग किया जाता है। [Deployment Modes](https://github.com/blessedrebus/krawl/blob/HEAD/docs/deployment-modes.md) देखें।
| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `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` | हॉट-पथ डेटा के लिए सेकंड में TTL (बैन जानकारी, IP श्रेणियाँ) | `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 रन का उदाहरण:```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
## Krawl का उपयोग करके दुर्भावनापूर्ण IP को प्रतिबंधित करें
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"
This enables automatic blocking of malicious traffic across various platforms:
पूर्ण API पैरामीटर, उदाहरण और कस्टम फ़ायरवॉल प्रारूप जोड़ने के लिए, Firewall Exporters दस्तावेज़ देखें।
Krawl बैन किए गए IP को सीधे Cloudflare Account IP List में भेज सकता है, जिसका उपयोग WAF नियमों में किया जा सकता है। यह सिंक बैकग्राउंड टास्क के रूप में चलता है और कॉन्फ़िगर करने योग्य अंतराल पर पूर्ण प्रतिस्थापन द्वारा सूची को अपडेट करता है। Cloudflare Banlist Sync दस्तावेज़ देखें।
IP प्रतिष्ठा
Krawl IP प्रतिष्ठा स्कोर बनाने और लगातार अपडेट करने के लिए हाल के ट्रैफ़िक का विश्लेषण करने वाले कार्यों का उपयोग करता है। यह समय-समय पर चलता है और प्रत्येक सक्रिय IP पते का मूल्यांकन कई व्यवहारिक संकेतकों के आधार पर करता है, ताकि इसे हमलावर, क्रॉलर या नियमित उपयोगकर्ता के रूप में वर्गीकृत किया जा सके। थ्रेसहोल्ड पूरी तरह से अनुकूलन योग्य हैं।

विश्लेषण में शामिल हैं:
- जोखिम भरा HTTP मेथड उपयोग (जैसे POST, PUT, DELETE अनुपात)
- Robots.txt उल्लंघन
- अनुरोध समय विसंगतियां (बर्स्टी या अनियमित पैटर्न)
- User-Agent स्थिरता
- हमले वाले URL का पता लगाना (जैसे SQL इंजेक्शन, XSS पैटर्न)
प्रत्येक सिग्नल एक भारित स्कोरिंग मॉडल में योगदान देता है जो एक प्रतिष्ठा श्रेणी निर्दिष्ट करता है:
attackerbad_crawlergood_crawlerregular_userunknown(अपर्याप्त डेटा के लिए)
परिणामी स्कोर और मेट्रिक्स डेटाबेस में संग्रहीत किए जाते हैं और Krawl द्वारा डैशबोर्ड, प्रतिष्ठा ट्रैकिंग, तथा IP बैनिंग या फ़ायरवॉल एकीकरण जैसी स्वचालित शमन कार्रवाइयों को चलाने के लिए उपयोग किए जाते हैं।
AI-जनरेटेड डिसेप्शन पेज
Krawl OpenRouter या OpenAI APIs के AI मॉडल का उपयोग करके स्वचालित रूप से यथार्थवादी डिसेप्शन पेज जनरेट कर सकता है। यह सुविधा मैन्युअल पेज निर्माण के बिना हमलावरों को धोखा देने के लिए तुरंत अद्वितीय, संभाव्य हनीपॉट पेज बनाती है।
मुख्य विशेषताएं:
- डायनामिक जनरेशन: किसी भी अनुरोध पथ के लिए अद्वितीय HTML पेज बनाता है
- स्मार्ट कैशिंग: अनावश्यक API कॉल से बचने के लिए जनरेटेड पेजों को कैश करता है
- दैनिक दर सीमा: कॉन्फ़िगर करने योग्य अनुरोध सीमाओं के साथ API लागत को नियंत्रित करें
- एकाधिक प्रदाता: OpenRouter (मुफ्त विकल्प) और OpenAI के लिए समर्थन
- ग्रेसफुल फॉलबैक: अक्षम होने या सीमा पूरी होने पर मानक हनीपॉट पर वापस चला जाता है
- कैश्ड सर्विंग: 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 Generation दस्तावेज़](https://github.com/blessedrebus/krawl/blob/HEAD/docs/ai_generation.md) देखें।
आप PR खोलकर **डिसेप्शन टेम्पलेट्स में योगदान** भी कर सकते हैं, [Contributing Deception Templates](https://github.com/blessedrebus/krawl/blob/HEAD/docs/deception_pages.md#contributing-deception-templates-via-pr) देखें।
## रिवर्स प्रॉक्सी या CDN के पीछे चलाना
**NGINX, Traefik, और CloudFlare जैसे अन्य प्रॉक्सी** को हेडर फ़ॉरवर्डिंग की आवश्यकता होती है ताकि Krawl वास्तविक IP देख सके। कॉन्फ़िगरेशन उदाहरणों और पूरी हेडर सूची के लिए [Reverse Proxy दस्तावेज़](https://github.com/blessedrebus/krawl/blob/HEAD/docs/reverse-proxy.md) देखें।
## मेट्रिक्स और मॉनिटरिंग
Krawl `/<dashboard_secret_path>/metrics` पर [Prometheus](https://prometheus.io/) मेट्रिक्स उजागर करता है (डिफ़ॉल्ट रूप से सक्षम) और [`grafana-dashboard.json`](https://github.com/blessedrebus/krawl/blob/HEAD/grafana-dashboard.json) पर आयात के लिए तैयार [Grafana](https://grafana.com/) डैशबोर्ड के साथ आता है।
पूरी मेट्रिक सूची, Grafana आयात चरणों, और Prometheus / Kubernetes (`ServiceMonitor`) स्क्रैपिंग सेटअप के लिए [Monitoring दस्तावेज़](https://github.com/blessedrebus/krawl/blob/HEAD/docs/monitoring.md) देखें।
## अतिरिक्त दस्तावेज़
| विषय | विवरण |
|-------|-------------|
| [AI Generation](https://github.com/blessedrebus/krawl/blob/HEAD/docs/ai_generation.md) | OpenRouter या OpenAI का उपयोग करके AI-जनित डिसेप्शन पेज कॉन्फ़िगर करें |
| [Deception Pages](https://github.com/blessedrebus/krawl/blob/HEAD/docs/deception_pages.md) | डिसेप्शन पेज प्रबंधित करें, आयात और निर्यात करें; बल्क ऑपरेशन और दिनांक-आधारित फ़िल्टरिंग |
| [Deployment Modes](https://github.com/blessedrebus/krawl/blob/HEAD/docs/deployment-modes.md) | स्टैंडअलोन (SQLite) बनाम स्केलेबल (PostgreSQL + Redis) मोड, कॉन्फ़िगरेशन, और डेटा माइग्रेशन |
| [Honeypot](https://github.com/blessedrebus/krawl/blob/HEAD/docs/honeypot.md) | हनीपॉट पेजों का पूर्ण अवलोकन: नकली लॉगिन, डायरेक्ट्री लिस्टिंग, क्रेडेंशियल फ़ाइलें, SQLi/XSS/XXE/कमांड इंजेक्शन ट्रैप, और बहुत कुछ |
| [Dashboard](https://github.com/blessedrebus/krawl/blob/HEAD/docs/dashboard.md) | रीयल-टाइम मॉनिटरिंग डैशबोर्ड तक पहुँचें और उसका अन्वेषण करें |
| [Dashboard API](https://github.com/blessedrebus/krawl/blob/HEAD/docs/dashboard-api.md) | Krawl का अपना JSON API: एंडपॉइंट संदर्भ, प्रमाणीकरण, इंटरैक्टिव OpenAPI दस्तावेज़, और अटैचमेंट डाउनलोड |
| [External APIs](https://github.com/blessedrebus/krawl/blob/HEAD/docs/api.md) | थर्ड-पार्टी APIs जिन्हें Krawl IP डेटा, प्रतिष्ठा, और जियोलोकेशन के लिए कॉल करता है |
| [Reverse Proxy](https://github.com/blessedrebus/krawl/blob/HEAD/docs/reverse-proxy.md) | NGINX के पीछे Krawl को कैसे तैनात करें या डिकॉय सबडोमेन का उपयोग कैसे करें |
| [Database Backups](https://github.com/blessedrebus/krawl/blob/HEAD/docs/backups.md) | स्वचालित डेटाबेस डंप जॉब को सक्षम और कॉन्फ़िगर करें |
| [Canary Token](https://github.com/blessedrebus/krawl/blob/HEAD/docs/canary-token.md) | canarytokens.org के माध्यम से बाहरी अलर्ट ट्रिगर सेट करें |
| [Wordlist](https://github.com/blessedrebus/krawl/blob/HEAD/docs/wordlist.md) | नकली उपयोगकर्ता नाम, पासवर्ड, और डायरेक्ट्री लिस्टिंग को अनुकूलित करें |
| [Architecture](https://github.com/blessedrebus/krawl/blob/HEAD/docs/architecture.md) | कोडबेस, रिक्वेस्ट पाइपलाइन, डेटाबेस स्कीमा, और बैकग्राउंड कार्यों का तकनीकी अवलोकन |
| [Cloudflare Banlist Sync](https://github.com/blessedrebus/krawl/blob/HEAD/docs/cloudflare_banlist.md) | प्रतिबंधित IP को Krawl से Cloudflare Account IP List में WAF नियमों में उपयोग के लिए भेजता है। सिंक बैकग्राउंड कार्य के रूप में चलता है और सूची को पूर्ण प्रतिस्थापन द्वारा अपडेट करता है। |
| [Firewall Exporters](https://github.com/blessedrebus/krawl/blob/HEAD/docs/firewall-exporters.md) | REST API के माध्यम से IP बैनलिस्ट को raw, iptables, या nftables प्रारूप में निर्यात करें |
| [Tarpit](https://github.com/blessedrebus/krawl/blob/HEAD/docs/tarpit.md) | विलंबित, नॉइज़-पैडेड प्रतिक्रियाओं के साथ AI क्रॉलर को धीमा करें और विषाक्त करें |
| [Metrics & Monitoring](https://github.com/blessedrebus/krawl/blob/HEAD/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" />