
एआई वेब स्क्रैपर्स को एक अंतहीन जहरीले गड्ढे में फंसाएं।
# 🌀 Miasma
[](#)
[](https://crates.io/crates/miasma)
[](https://crates.io/crates/miasma)
[](https://hub.docker.com/r/austinweeks/miasma)
[](#)
<picture>
<img src="https://assets.kitploit.com/production/public/readmes/12808/53ea9eddbca68d25cbf4085762448c1cc10ee6fdf38bda837c6abf665a9d673f.png" alt="Web crawlers getting stuck in a cloud of poison miasma." title="Cover art by @cerberussaturn07" />
</picture>
AI कंपनियाँ लगातार अत्यंत बड़े पैमाने पर इंटरनेट को स्क्रैप करती रहती हैं, अपने अगले मॉडलों के लिए प्रशिक्षण डेटा के रूप में उपयोग करने के लिए इसकी सभी सामग्री को निगल जाती हैं। यदि आपकी कोई सार्वजनिक वेबसाइट है, तो _वे पहले से ही आपका काम चुरा रहे हैं।_
_मियास्मा_ आपकी वापसी में मदद करने के लिए यहाँ है! सर्वर शुरू करें और किसी भी दुर्भावनापूर्ण ट्रैफ़िक को उसकी ओर इंगित करें। _मियास्मा_ [पॉइज़न फाउंटेन](https://rnsaffn.com/poison3) से ज़हरीला प्रशिक्षण डेटा भेजेगा, साथ ही कई स्व-संदर्भित लिंक भी। यह स्लॉप मशीनों के लिए स्लॉप का एक अंतहीन भोज है।
_मियास्मा_ बिजली की तरह तेज़ है और इसका मेमोरी फुटप्रिंट न्यूनतम है - आपको इंटरनेट के जोंकों को दूर करने में कंप्यूट संसाधनों को बर्बाद नहीं करना चाहिए।
> [!CAUTION]
> इस सॉफ़्टवेयर को तैनात करने में अंतर्निहित जोखिम है। कृपया उपयोग से पहले [कॉन्फ़िगरेशन](#configuration) और [अस्वीकरण](#disclaimer) को पूरी तरह पढ़ें।
## उपयोग
आप _मियास्मा_ को स्थानीय रूप से या आधिकारिक [डॉकर इमेज](https://hub.docker.com/r/austinweeks/miasma) के साथ चला सकते हैं।
यदि आप _मियास्मा_ को किसी मौजूदा Rust सर्वर में शामिल करना चाहते हैं, तो आप [_मियास्मा_ को लाइब्रेरी के रूप में भी उपयोग कर सकते हैं](https://docs.rs/miasma/)।
### स्थानीय रूप से चलाना
[cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html) के साथ इंस्टॉल करें (अनुशंसित):
```sh
cargo install miasma
```
वैकल्पिक रूप से, [रिलीज़](https://github.com/austin-weeks/miasma/releases) से पहले से बना बाइनरी डाउनलोड करें।
विभिन्न पैकेज प्रबंधकों के लिए समुदाय-प्रबंधित पैकेज भी उपलब्ध हैं:
<a href="https://repology.org/project/miasma/versions">
<img
src="https://repology.org/badge/vertical-allrepos/miasma.svg?exclude_unsupported=1&minversion=0.2"
alt="Packaging status"
>
</a>
<br>
<br>
डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ _मियास्मा_ शुरू करें:
```sh
miasma
```
सभी उपलब्ध [कॉन्फ़िगरेशन विकल्प](#configuration) देखें:
```sh
miasma --help
```
### डॉकर के साथ चलाना
आधिकारिक [डॉकर इमेज](https://hub.docker.com/r/austinweeks/miasma) का उपयोग करके _मियास्मा_ चलाएँ:
```sh
docker run --rm -p 9999:9999 austinweeks/miasma:latest
```
वही [कॉन्फ़िगरेशन फ़्लैग](#configuration) पास करें जो आप स्थानीय रूप से उपयोग करेंगे:
```sh
docker run --rm -p 9999:9999 austinweeks/miasma:latest \
--link-prefix '/naughty-bots' \
--max-in-flight 30
```
या, डॉकर कंपोज़ क्लस्टर के भीतर चलाएँ:
```yaml
services:
miasma:
image: austinweeks/miasma:latest
command: ["--link-prefix", "/naughty-bots", "--max-in-flight", "30"]
ports:
- 9999:9999
```
## स्क्रैपर्स को कैसे फँसाएँ
आइए _मियास्मा_ के साथ स्क्रैपर्स को फँसाने के लिए सर्वर सेट करने का एक उदाहरण देखें। हम स्क्रैपर ट्रैफ़िक को निर्देशित करने के लिए अपने सर्वर के पथ के रूप में `/naughty-bots` चुनेंगे। हम अपने सर्वर के रिवर्स प्रॉक्सी के रूप में [_Nginx_](https://nginx.org/) का उपयोग करेंगे, लेकिन कई अलग-अलग सेटअपों के साथ भी यही परिणाम प्राप्त किया जा सकता है।
जब हम पूरा कर लेंगे, तो स्क्रैपर्स इस तरह फँस जाएँगे:
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/austin-weeks/miasma/main/.github/images/flow-chart-dark.png">
<img height="425" src="https://assets.kitploit.com/production/public/readmes/12808/0fc56b18661aceabe968dff1a03545577f5a28691a3a4d20e096093919935ceb.png" alt="Flow chart depicting cycle of trapped scrapers.">
</picture>
</p>
### छिपे हुए लिंक एम्बेड करना
हमारी साइट के भीतर, हम `/naughty-bots` की ओर ले जाने वाले कुछ छिपे हुए लिंक शामिल करेंगे।
```html
<a
href="https://github.com/austin-weeks/miasma/blob/main/naughty-bots"
style="display: none;"
aria-hidden="true"
tabindex="-1"
>
Amazing high quality data here!
</a>
```
`style="display: none;"`, `aria-hidden="true"`, और `tabindex="-1"` विशेषताएँ यह सुनिश्चित करती हैं कि लिंक मानव आगंतुकों के लिए पूरी तरह से अदृश्य हों और स्क्रीन रीडर और कीबोर्ड नेविगेशन द्वारा अनदेखा कर दिए जाएँ। वे **केवल** स्क्रैपर्स को दिखाई देंगे।
### हमारे Nginx प्रॉक्सी को कॉन्फ़िगर करना
चूँकि हमारे छिपे हुए लिंक `/naughty-bots/` की ओर इंगित करते हैं, हम इस पथ को _मियास्मा_ को अनुरोध प्रॉक्सी करने के लिए कॉन्फ़िगर करेंगे। मान लें कि हम _मियास्मा_ को पोर्ट `9855` पर चला रहे हैं।
हम स्क्रैपर के यूज़र एजेंट के आधार पर आक्रामक दर सीमा भी सेट करेंगे ताकि यह सुनिश्चित हो सके कि हम गलती से खुद पर DDoS न कर दें।
```nginx
http {
# Reserve 8MB memory for tracking user agents
limit_req_zone $http_user_agent zone=miasma:8m rate=1r/s;
server {
location = /naughty-bots {
port_in_redirect off;
return 301 /naughty-bots/;
}
location /naughty-bots/ {
# Rate limit via the 'miasma' zone with no queueing
limit_req_status 429;
limit_req zone=miasma burst=5 nodelay;
# Proxy requests to Miasma
proxy_pass http://localhost:9855/;
}
}
}
```
यह कॉन्फ़िगरेशन `/naughty-bots` पथ की सभी विविधताओं को पकड़ लेगा -> `/naughty-bots`, `/naughty-bots/`, `/naughty-bots/12345`, आदि।
### _मियास्मा_ चलाएँ
अंत में, हम _मियास्मा_ शुरू करेंगे और लिंक प्रीफ़िक्स के रूप में `/naughty-bots` निर्दिष्ट करेंगे। यह _मियास्मा_ को `/naughty-bots/` से लिंक शुरू करने का निर्देश देता है, जो यह सुनिश्चित करता है कि स्क्रैपर्स हमारे _Nginx_ प्रॉक्सी के माध्यम से ठीक से _मियास्मा_ तक पहुँचें।
आइए अधिकतम इन-फ़्लाइट कनेक्शनों की संख्या 50 तक सीमित करें। 50 कनेक्शनों पर, हम 50-60 MB अधिकतम मेमोरी उपयोग की अपेक्षा कर सकते हैं। ध्यान दें कि इस सीमा से अधिक कोई भी अनुरोध कतार में जोड़े जाने के बजाय तुरंत **429** प्रतिक्रिया प्राप्त करेगा।
हम _मियास्मा_ को स्क्रैपर्स के `Accept-Encoding` हेडर की परवाह किए बिना सभी प्रतिक्रियाओं को gzip संपीड़ित करने के लिए भी बाध्य करेंगे। चूँकि gzip की गई प्रतिक्रियाएँ काफी छोटी होती हैं, यह हमें एग्रेस लागत कम करने में मदद करेगा।
हालाँकि हम स्क्रैपर्स को हमेशा के लिए फँसाए रख सकते हैं, हम लिंक काउंट और अधिकतम गहराई विकल्पों का उपयोग करेंगे ताकि स्क्रैपर्स को ~100K ज़हरीले पृष्ठों का उपभोग करने के बाद जाने दिया जाए। इस सेटअप के साथ, _मियास्मा_ प्रति स्क्रैपर कुल मिलाकर लगभग **250MB** डेटा भेजेगा।
```sh
miasma --link-prefix '/naughty-bots' -p 9855 -c 50 --force-gzip --link-count 5 --max-depth 8
```
### आनंद लें!
आइए तैनात करें और देखें कि दुर्व्यवहार करने वाले बॉट हमारी अंतहीन स्लॉप मशीन से लालच से खाते हैं!
<p align="center">
<picture>
<img src="https://raw.githubusercontent.com/austin-weeks/miasma/main/.github/images/logs.gif" />
</picture>
</p>
### `robots.txt`
अपने [`robots.txt`](https://developers.google.com/search/docs/crawling-indexing/robots/intro) के माध्यम से अच्छे व्यवहार वाले बॉट्स और सर्च इंजनों को _मियास्मा_ से बचाना सुनिश्चित करें!
```text
User-agent: *
Disallow: /naughty-bots
```
## मेट्रिक्स
_मियास्मा_ प्रत्येक अद्वितीय User-Agent के लिए स्क्रैपर अनुरोध गणना को ट्रैक करने की क्षमता प्रदान करता है। यह पहचानने के लिए उपयोगी हो सकता है कि कौन से बॉट आपकी साइट पर सबसे अधिक हमला कर रहे हैं। मेट्रिक्स एक स्थानीय SQLite डेटाबेस फ़ाइल में लिखे जाते हैं और आपके द्वारा चुने गए एंडपॉइंट पर देखे जा सकते हैं।
## कॉन्फ़िगरेशन
_मियास्मा_ को CLI फ़्लैग या [कॉन्फ़िग फ़ाइल](https://github.com/austin-weeks/miasma/blob/main/docs/config_file) के माध्यम से कॉन्फ़िगर किया जा सकता है।
| विकल्प | डिफ़ॉल्ट | विवरण |
| ------------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `config-file` | | निर्दिष्ट फ़ाइल पथ पर एक फ़ाइल से कॉन्फ़िगरेशन विकल्प लोड करें। YAML, TOML, और JSON प्रारूप समर्थित हैं। उदाहरणों के लिए [docs](https://github.com/austin-weeks/miasma/blob/main/docs/config_file) देखें। |
| `port` | `9999` | वह पोर्ट जिससे सर्वर को बाइंड करना चाहिए। |
| `host` | `localhost` | वह होस्ट पता जिससे सर्वर को बाइंड करना चाहिए। |
| `unix-socket` | | TCP पते के बजाय Unix डोमेन सॉकेट से बाइंड करें। _केवल Unix-जैसे सिस्टम पर उपलब्ध।_ |
| `max-in-flight` | `500` | अधिकतम अनुमेय इन-फ़्लाइट अनुरोधों की संख्या। इन-फ़्लाइट से अधिक होने पर प्राप्त अनुरोधों को _429_ प्रतिक्रिया मिलेगी। **_मियास्मा_ का मेमोरी उपयोग सीधे इन-फ़्लाइट अनुरोधों की संख्या के साथ बढ़ता है - यदि मेमोरी उपयोग चिंता का विषय है तो इसे कम मान पर सेट करें।** |
| `link-prefix` | `/` | स्व-निर्देशित लिंक के लिए प्रीफ़िक्स। यह वह पथ होना चाहिए जहाँ आप _मियास्मा_ होस्ट करते हैं, जैसे `/naughty-bots`। |
| `link-count` | `5` | प्रत्येक प्रतिक्रिया पृष्ठ में शामिल करने के लिए स्व-निर्देशित लिंक की संख्या। |
| `max-depth` | `none` | स्क्रैपर के निर्दिष्ट गहराई तक पहुँचने के बाद लिंक उत्पन्न करना बंद करें। यह आपको वांछित मात्रा में ज़हर परोसने के बाद स्क्रैपर्स को काटने की अनुमति देता है। _सक्रिय स्क्रैपर्स की संख्या को प्रबंधनीय स्तर तक कम रखने के लिए इसे `link-count` के साथ मिलाकर उपयोग करें।_ |
| `force-gzip` | `false` | क्लाइंट के _Accept-Encoding_ हेडर की परवाह किए बिना हमेशा प्रतिक्रियाओं को gzip करें। **संपीड़न को बाध्य करना एग्रेस लागत कम करने में मदद कर सकता है।** |
| `unsafe-allow-html` | `false` | ज़हर स्रोत की प्रतिक्रियाओं में HTML वर्णों को एस्केप न करें। अनपेक्षित क्लाइंट-साइड JavaScript निष्पादन को रोकने के लिए एस्केपिंग डिफ़ॉल्ट रूप से सक्षम है। **इस विकल्प का सावधानी से उपयोग करें।** |
| `poison-source` | `https://rnsaffn.com/poison2/?mask=0` | ज़हरीले प्रशिक्षण डेटा के लिए प्रॉक्सी स्रोत। |
| `no-poison-cache` | `false` | ज़हर स्रोत प्रतिक्रिया कैशिंग अक्षम करें। |
| `metrics-db-path` | | मेट्रिक्स डेटा संग्रहीत करने के लिए SQLite डेटाबेस फ़ाइल का पथ। यदि पहले से कोई मौजूद नहीं है तो _मियास्मा_ इस स्थान पर एक डेटाबेस बनाएगा। |
| `metrics-username` | | _मियास्मा_ के मेट्रिक्स पृष्ठ तक पहुँचने के लिए आवश्यक बेसिक ऑथ उपयोगकर्ता नाम। |
| `metrics-password` | | _मियास्मा_ के मेट्रिक्स पृष्ठ तक पहुँचने के लिए आवश्यक बेसिक ऑथ पासवर्ड। |
| `metrics-endpoint` | `/metrics` | वह एंडपॉइंट जिस पर _मियास्मा_ के मेट्रिक्स परोसे जाएँगे। |
## अस्वीकरण
_मियास्मा_ [पॉइज़न फाउंटेन](https://rnsaffn.com/poison3) से संबद्ध नहीं है। हमारा इसकी प्रतिक्रियाओं पर कोई नियंत्रण नहीं है और इसकी सामग्री की सुरक्षा की गारंटी नहीं दे सकते। आपको **_कभी भी_** उपयोगकर्ताओं को अपने _मियास्मा_ स्थान की ओर निर्देशित नहीं करना चाहिए।
_मियास्मा_ प्रभावित स्क्रैपर्स के ऑपरेटरों से किसी भी प्रतिशोध के लिए ज़िम्मेदार नहीं है। लागू कानूनों और होस्टिंग प्रदाता नीतियों का पालन करना आपकी ज़िम्मेदारी है। पूर्ण वारंटी और देयता सीमा विवरण के लिए [LICENSE](https://github.com/austin-weeks/miasma/blob/main/LICENSE) (GPL-v3) देखें।
---
_कवर आर्ट [@cerberussaturn07](https://www.instagram.com/cerberussaturn07/) द्वारा_