Pyison
Pyison AI वेबक्रॉलर्स के लिए एक टारपिट है
परिचय
- सभी वेब क्रॉलरों की तरह, AI बॉट वेबसर्वर से पेजों का अनुरोध करते हैं, और फिर पेज पर दिए गए लिंक का अनुसरण करते हुए अन्य पेजों पर जाते हैं। ऐसा करके, वे पूरी वेबसाइट का एक इंडेक्स बना सकते हैं।
- हालांकि, अन्य वेब क्रॉलरों के विपरीत, AI बॉट कुछ अनोखी समस्याएं प्रस्तुत करते हैं
- सर्वर एडमिन robots.txt फ़ाइल को कॉन्फ़िगर कर सकते हैं, जो वेब क्रॉलरों को बताती है कि उन्हें किन पेजों को क्रॉल करना चाहिए और किन्हें नहीं।
- कुछ AI क्रॉलर इस फ़ाइल को अनदेखा करते पाए गए हैं। इन बॉट्स को LLMs को प्रशिक्षित करने के लिए वेबसाइट के डेटा का उपयोग करने की अनुमति देने में गोपनीयता और कॉपीराइट संबंधी चिंताएँ हैं, खासकर जब उपयोगकर्ता ने स्पष्ट रूप से क्रॉलिंग से ऑप्ट-आउट किया हो।
- कुछ क्रॉलर रेटलिमिटिंग को भी अनदेखा करते हैं। जब वे जितनी जल्दी हो सके पेजों का अनुरोध करते हैं, तो वे वेबसर्वर पर महत्वपूर्ण लोड डाल सकते हैं।
- अब आता है Pyison। अन्य AI क्रॉलर टारपिटों (Nepenthes, Iocane) की तरह, Pyison वेब क्रॉलरों को अपनी साइट पर अन्य पेजों के लिंक की एक अंतहीन सूची खिलाता है। यह क्रॉलरों को एक ही साइट पर फंसा देता है, जहाँ वे लिंक के लगातार बढ़ते समुद्र में अंतहीन रूप से नेविगेट करते रहेंगे।
- AI क्रॉलरों को एक ही स्थान पर फँसाए रखना उन्हें साइट के उन अन्य हिस्सों को इंडेक्स करने से रोकता है जिन्हें मालिक LLMs को खिलाना नहीं चाहता।
- साथ ही, इन पेजों में बेकार टेक्स्ट का ढेर हो सकता है। जब LLMs इस टेक्स्ट को अपने मॉडलों में शामिल करते हैं, तो वे धीरे-धीरे "जहर" हो सकते हैं क्योंकि यादृच्छिक इनपुट उनके उत्तरों को कम सुसंगत बना देगा।
प्रेरणाएँ
- LLM सामग्री चोरी में वृद्धि को संबोधित करने के लिए उपयोगी सॉफ्टवेयर बनाना
- मौजूदा AI टारपिटों में समस्याओं का समाधान:
- मार्कोव चेन, LLMs, या किसी भी मौजूदा लेखन नमूने के उपयोग के बिना यादृच्छिक टेक्स्ट उत्पन्न करना
- AI बॉट्स को User-Agent हेडर से भेदभाव न करना, क्योंकि क्रॉलर अक्सर खुद को सामान्य उपयोगकर्ताओं के रूप में छिपा लेते हैं
- पता लगने से बचने के लिए एक यथार्थवादी ब्लॉग-जैसी साइट डिज़ाइन करना
- आगे के कॉन्फ़िगरेशन की अनुमति देने के लिए एक अत्यधिक अनुकूलन योग्य फ्रेमवर्क बनाना
- एक समाधान प्रदान करना जो आसानी से मौजूदा वेबसाइट में एकीकृत हो सके
- रिवर्स प्रॉक्सी/विशिष्ट वेबसर्वर का समर्थन करता है लेकिन आवश्यक नहीं है, डॉक्यूमेंट रूट सेटिंग के साथ सब-पथ कॉन्फ़िगरेशन प्रदान करता है
- पूरे CMS या फीचर-रिच वेबसर्वर के बजाय छोटे फुटप्रिंट के साथ चलना
तकनीकी विशिष्टताएँ
- यह प्रोजेक्ट Python की HTTPServer लाइब्रेरी का उपयोग करके एक डायनामिक वेब सर्वर चलाता है
- वाक्य यादृच्छिक अंग्रेजी शब्दों और "stop words" के 50/50 मिश्रण से उत्पन्न होते हैं
- Pyison अपने RNG को सीड करने के लिए एक ग्लोबल सॉल्ट के साथ-साथ पेज url का उपयोग करता है। यह सुनिश्चित करता है कि यदि क्रॉलर कभी पेज को रीलोड करके "sanity check" करते हैं, तो यह पिछली बार जैसा ही होगा। साथ ही, अलग-अलग सर्वरों को अलग-अलग ग्लोबल सीड का उपयोग करना चाहिए ताकि Pyison का उपयोग करने वाली सभी साइटें एक जैसी न दिखें।
- असीमित संख्या में पेज उत्पन्न करना संभव है, क्योंकि Pyison वास्तव में कोई स्थायी फ़ाइल नहीं बना रहा है। यह एक डायनामिक वेब सर्वर है, इसलिए यह केवल html उत्पन्न करता है और क्लाइंट को भेजता है।
- HTML कंटेंट टैग, CSS फ़ॉर्मेटिंग और इमेज के उपयोग से साइट क्रॉलर को थोड़ी और यथार्थवादी लग सकती है।
- कॉन्फ़िग, स्टैटिक और टेम्पलेट फ़ाइलों को बदलकर प्रोग्राम को फिर से लिखे बिना Pyison के आउटपुट को कॉन्फ़िगर करना संभव है
- Pyison गलत POST और PUT अनुरोधों पर 404 के साथ प्रतिक्रिया करता है, यदि क्रॉलर यह जांचते हैं कि वे HTTP वर्ब कॉन्फ़िगर किए गए हैं या नहीं
शुरू करना
-
इस प्रोजेक्ट को स्थानीय फ़ोल्डर में क्लोन करें
-
config/config.json फ़ाइल में सेटिंग्स बदलें
random-seed को एक यादृच्छिक संख्या पर सेट करें!
- सर्वर द्वारा उपयोग किए जाने वाले
port नंबर को सेट करें
- अधिक जानकारी के लिए कॉन्फ़िगरेशन अनुभाग देखें
-
(वैकल्पिक लेकिन अनुशंसित) अपनी पसंद के अनुसार HTML टेम्पलेट, CSS, इमेज और robots.txt को अपडेट करें
- यह प्रोजेक्ट अधिक प्रभावी है यदि पेज अलग दिखते हैं, जो HTML और CSS संरचना को बदलकर किया जा सकता है। कुछ चीज़ों को पुनर्व्यवस्थित और नाम बदलें, या इसे पूरी तरह से फिर से लिखें।
-
(वैकल्पिक) यदि आप बदलना चाहते हैं कि कौन से बॉट प्रभावित हों, तो robots.txt को संपादित करें
-
नीचे दिए गए किसी भी तरीके से सर्वर वातावरण सेट करें
-
सर्वर को रिवर्स प्रॉक्सी के पीछे रखें
स्थानीय रूप से चलाना
- nltk इंस्टॉल करें
- Pyison चलाएँ
- जांचें कि यह चल रहा है
- ब्राउज़र में
http://localhost:<your port number> खोलें
Docker
docker compose के साथ
docker run के साथ
docker run --tty --name pyison -p "127.0.0.1:80:80" --rm ghcr.io/jonaslong/pyison:main
- (वैकल्पिक) कंटेनर को स्थायी बनाने के लिए
--rm फ़्लैग हटाएँ
स्रोत से बिल्ड करना
- रिपॉजिटरी को स्थानीय रूप से क्लोन करें
docker build -t pyison:latest .
- कंटेनर को
docker run --tty --name pyison -p "127.0.0.1:80:80" --rm pyison:latest से चलाएं
रिवर्स प्रॉक्सी
यह अत्यधिक अनुशंसित है कि आप इस सामग्री को प्रस्तुत करने के लिए रिवर्स प्रॉक्सी का उपयोग करें। यह पेजों को कैश करके और रेटलिमिट प्रस्तुत करके सर्वर लोड को कम कर सकता है, साथ ही https पर सामग्री प्रस्तुत कर सकता है और कुछ बुनियादी वेबसर्वर शोषणों से बचा सकता है।
विचारणीय बातें
- ये उदाहरण Nginx Proxy Manager का उपयोग करते हैं, लेकिन कोई भी रिवर्स प्रॉक्सी सॉफ्टवेयर काम करेगा
- Pyison NPM के सबसे सख्त SSL सेटिंग्स का समर्थन करता है
- NPM को बिना किसी विशेष कॉन्फ़िगरेशन के
User-Agent http हेडर को NPM से Pyison सर्वर पर पास करना चाहिए। यदि आवश्यक हो तो proxy_pass_header User-Agent; का उपयोग करें।
स्वतंत्र सबडोमेन कॉन्फ़िगरेशन
सब-पथ कॉन्फ़िगरेशन
-
सब-पथ में Pyison का उपयोग करने के लिए, निम्नलिखित लोकेशन कॉन्फ़िगरेशन का उपयोग करें
# Handles the root page ("example.com/tarpit")
location /tarpit {
proxy_pass http://localhost:80;
}
# Handles all sub-pages ("example.com/tarpit/a" and "example.com/tarpit/a/b")
location /tarpit/ {
proxy_pass http://localhost:80;
}