paint-brush
अनाम वेब स्क्रैपिंग के लिए काली लिनक्स कंटेनर, वेबड्राइवर और टोर का उपयोग करेंद्वारा@csfx
3,754 रीडिंग
3,754 रीडिंग

अनाम वेब स्क्रैपिंग के लिए काली लिनक्स कंटेनर, वेबड्राइवर और टोर का उपयोग करें

द्वारा Colin Barrett-Fox12m2023/08/05
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

अनाम वेब स्क्रैपिंग और पैठ परीक्षण के लिए एक अल्पकालिक होस्ट ऑपरेटिंग सिस्टम के रूप में काली लिनक्स कंटेनर का उपयोग करके हमले के पेलोड का अनुकरण करें। टोर ब्राउज़र को स्वचालित करने के लिए सेलेनियम का उपयोग करने के लिए उदाहरण कोड शामिल है। अंत में, मैं उन काउंटर उपायों पर चर्चा करूंगा जिन्हें बॉट गतिविधि का पता लगाने, दर सीमा और ब्लॉक करने के प्रयास के लिए डेटा सेंटर और क्लाइंट पक्ष दोनों में लागू किया जा सकता है।
featured image - अनाम वेब स्क्रैपिंग के लिए काली लिनक्स कंटेनर, वेबड्राइवर और टोर का उपयोग करें
Colin Barrett-Fox HackerNoon profile picture
0-item
1-item

अपने पिछले लेख में, मैं टोर ब्राउज़र के साथ चलने वाले एक काली लिनक्स कंटेनर को प्रदर्शित करने में सक्षम था, और एक वीएनसी क्लाइंट के साथ इसके डेस्कटॉप वातावरण से जुड़ा था। मैंने सत्यापित किया कि ब्राउज़िंग सत्र के दौरान टोर ब्राउज़र टोर नेटवर्क से कनेक्ट हो रहा था। यह सेटअप मुझे उस प्रकार के ट्रैफ़िक का अनुकरण करने की अनुमति देगा जो किसी वेबसाइट को लक्षित करने वाले हमलावर से आ सकता है।


इस प्रयोग में मैं ब्राउज़र के वेबड्राइवर इंटरफ़ेस के माध्यम से कीस्ट्रोक्स और नेविगेशन घटनाओं को संश्लेषित करने के लिए टोर ब्राउज़र को स्वचालित करने के लिए सेलेनियम का उपयोग करने जा रहा हूं। प्रत्येक क्रॉलर के पास पता लगाने से बचने के लिए एम्बेडेड टोर प्रॉक्सी द्वारा प्रदान किया गया एक यादृच्छिक आईपी पता होगा। परिणामों को स्थानीय फाइल सिस्टम में JSON ऑब्जेक्ट के रूप में सहेजने के बाद, मैं उन्हें एक CSV फ़ाइल में संसाधित करने के लिए पायथन का उपयोग करूंगा। अंत में, मैं चर्चा करूंगा कि बॉट गतिविधि का पता लगाने, दर सीमा तय करने और उसे रोकने के प्रयास के लिए डेटा सेंटर और क्लाइंट साइड में कौन से काउंटर उपाय लागू किए जा सकते हैं।


सभी फ़ाइलें और लागू लाइसेंस इस ओपन सोर्स रिपॉजिटरी में उपलब्ध हैं: टोर-ड्राइवर-पायथन


पूर्ण क्रॉलर स्क्रिप्ट को चलाने वाला स्क्रीन कैप्चर:


मेरे पास परीक्षण स्वचालन की पृष्ठभूमि है, और मैंने परीक्षणों को डिज़ाइन करने में कई घंटे बिताए हैं। मैंने सेलेनियम के साथ काम करने में भी बहुत समय बिताया है, और मैंने परीक्षण उद्देश्यों के लिए वेब ब्राउज़र को स्वचालित करने के लिए कई अलग-अलग प्रोग्रामिंग भाषाओं और सेटिंग्स में इसका उपयोग किया है। ऐसे परिदृश्य हैं जहां केवल वास्तविक ब्राउज़र के साथ वेब एप्लिकेशन का परीक्षण करना संभव है, और सेलेनियम उसके लिए एक महान उपकरण है।


परिदृश्य

एक DevOps इंजीनियर के रूप में अपने काम में मैंने इस बात पर चिंता करने में बहुत समय बिताया है कि उन वेब क्रॉलरों के साथ क्या किया जाए जो उन वेब अनुप्रयोगों को मार रहे हैं, और कभी-कभी पूरी तरह से हमला कर रहे हैं, जिनके लिए मैं जिम्मेदार हूं। मैंने सोचा कि एक बार इस मुद्दे के दूसरे पक्ष का पता लगाना एक दिलचस्प प्रयोग होगा।


मैं यह देखना चाहता हूं कि मैं शैक्षिक उद्देश्यों के लिए बॉटनेट से हमले का अनुकरण करने के कितने करीब पहुंच सकता हूं, और एक आधुनिक डेटा सेंटर में संदिग्ध टोर नेटवर्क ट्रैफिक जैसी चीजों का मुकाबला करने के तरीकों पर चर्चा कर सकता हूं। बॉटनेट का उपयोग आमतौर पर क्रेडेंशियल स्टफिंग हमलों को करने के लिए किया जाता है। मैं प्रश्नों को खोजने और वेब से जानकारी इकट्ठा करने के लिए इसी तरह की तकनीक का उपयोग करूंगा।


क्रेडेंशियल स्टफिंग उपयोगकर्ता खातों तक धोखाधड़ी से पहुंच प्राप्त करने के लिए, वेबसाइट लॉगिन फॉर्म में चुराए गए उपयोगकर्ता नाम और पासवर्ड जोड़े ("क्रेडेंशियल") का स्वचालित इंजेक्शन है। 1


नैतिक प्रतिपूर्ति

नैतिक मुद्दों से बचने के लिए, कार्य के प्रति सच्चे रहने का भी प्रयास करें। मैं परिदृश्य में निम्नलिखित परिवर्तन कर रहा हूं:


  1. मैं व्यक्तिगत रूप से पहचान योग्य जानकारी (पीआईआई) एकत्र नहीं करूंगा, और किसी क्रेडेंशियल का उपयोग नहीं किया जाएगा। इसके बजाय मैं किसी फ़ाइल से खोज शब्द पढ़ूंगा और सार्वजनिक जानकारी एकत्र करूंगा।
  2. मैं बॉटनेट के बजाय यादृच्छिक आईपी एड्रेस हॉपिंग व्यवहार का अनुकरण करने के लिए टोर नेटवर्क का उपयोग करूंगा।
  3. ये कदम जानबूझकर अनुमेय robots.txt फ़ाइलों वाली साइटों को लक्षित करते हैं, और लेखन के समय नियम और शर्तों की जाँच की गई थी जो क्रॉलिंग से बाहर नहीं होंगी। उदाहरण के लिए IMDB के नियम और शर्तें स्पष्ट रूप से लिखित सहमति के बिना क्रॉल करने से मना करती हैं।
  4. एकत्रित की गई जानकारी केवल सार्वजनिक रूप से उपलब्ध जानकारी तक ही सीमित रहेगी। मैं उस जानकारी तक पहुंच प्राप्त करने के लिए किसी भी कारनामे या अन्य तरीकों का उपयोग नहीं करूंगा जो लक्ष्य साइट पर सार्वजनिक रूप से उपलब्ध नहीं है।
  5. अंत में, मैं अन्य उपयोगकर्ताओं के लिए अवरुद्ध होने या थ्रूपुट के साथ समस्याएं पैदा करने से बचने के लिए लक्ष्य साइट पर किए जाने वाले दर अनुरोधों को सीमित कर दूंगा।


robots.txt

रोबोट बहिष्करण प्रोटोकॉल वेबमास्टर्स के लिए क्रॉलर्स को यह बताने का एक तरीका है कि वे कहां हैं और उन्हें जानकारी इकट्ठा करने की अनुमति नहीं है। अधिक जानकारी और उदाहरण robotstxt.org वेबसाइट पर पाए जा सकते हैं। खोज परिणाम पृष्ठ पर वेब स्क्रैपिंग की अनुमति देने वाले एक को खोजने का प्रयास करते समय मुझे एक लेख मिला: वैकल्पिक खोज इंजनों की सूची । नीचे उस शोध का सारांश दिया गया है।


विभिन्न खोज इंजनों के नमूने से robots.txt फ़ाइलों की तुलना करना


खोज इंजन

robots.txt URL

क्या रेंगने की अनुमति है?

गूगल

robots.txt

नहीं, लेकिन एक एपीआई है

बिंग

robots.txt

नहीं, लेकिन एक एपीआई है

याहू

robots.txt

नहीं

डकडकगो

robots.txt

नहीं, लेकिन एक एपीआई है

श्लोक खोलें

robots.txt

हां, लेकिन बिल्कुल वैसा नहीं जैसा मैं ढूंढ रहा था

सियरएक्स

robots.txt

हाँ


अतिरिक्त संसाधन

कुछ अन्य संसाधन जो मुझे इस विषय पर शोध करते समय उपयोगी लगे:


सेलेनियम और वेबड्राइवर के साथ एक वेब पेज में हेरफेर करना

मैं इस उदाहरण के लिए सेलेनियम के अलावा अन्य पुस्तकालयों का उपयोग करने से बचूंगा। वास्तव में कुछ बुनियादी पैटर्न हैं जिन्हें मैं प्रदर्शित करना चाहता हूं और मैं किसी विशेष डोमेन विशिष्ट भाषा (डीएसएल) के चक्कर में नहीं पड़ना चाहता जिससे यह समझना कठिन हो जाएगा कि क्या हो रहा है।


हालाँकि, मुझे लगता है कि टेस्ट रनिंग फ्रेमवर्क का उपयोग करना इस प्रकार के कोड को व्यवस्थित करने का एक शानदार तरीका है। एक फ्रेमवर्क जोड़ने से सामान्य कोड संरचना, पुनः प्रयास तर्क और यहां तक कि रिपोर्टिंग से जुड़ी कई समस्याएं हल हो सकती हैं।


मूल पैटर्न

मैं वेबड्राइवर सत्र में किसी पृष्ठ में हेरफेर कैसे करता हूँ इसका एक बुनियादी पैटर्न है। मैं प्रत्येक क्रिया के बाद एक विराम भी जोड़ता हूँ। ब्राउज़र स्वचालन परतदार हो सकता है. टाइमआउट क्रॉल में बहुत अधिक स्थिरता जोड़ता है, और दर सीमित और अवरुद्ध होने की संभावना को बहुत सीमित कर देता है। जहां भी आवश्यक हो, मैं अन्य खोज इंजनों या सूचना के स्रोतों के लिए एपीआई कॉल के साथ क्रॉल को भी बढ़ाता हूं।


  1. किसी URL पर नेविगेट करें.
  2. पेज लोड होने तक प्रतीक्षा करें.
  3. वह तत्व ढूंढें जिसके साथ मैं इंटरैक्ट करना चाहता हूं, उसके लिए चयनकर्ता विकसित करें।
  4. तत्व के मौजूद होने की प्रतीक्षा करें.
  5. तत्व को दृश्य में स्क्रॉल करें.
  6. तत्व के साथ बातचीत करें.
  7. दोहराएँ

संहिता का अवलोकन

मैंने चयनकर्ताओं के लिए वास्तव में सरल दृष्टिकोण अपनाया। मैं ब्राउज़र में उपलब्ध xpath और css दोनों चयनकर्ताओं का उपयोग कर रहा हूं। क्रॉल के दौरान पेजों के बीच नेविगेट करने के लिए मुख्य रूप से एंकर टैग और यूआरएल फ़्रैगमेंट पर ध्यान केंद्रित करना।


मैं उन पर क्लिक करने का प्रयास करने से पहले तत्वों के मौजूद होने की प्रतीक्षा करने के लिए अपेक्षित शर्तों का उपयोग कर रहा हूं। सेलेनियम प्रोजेक्ट में बहुत सारे दस्तावेज़ हैं, लेकिन मुझे स्टैक ओवरफ़्लो पर उदाहरण के उपयोग के साथ प्रतीक्षा स्थितियों के बारे में चर्चा भी एक अमूल्य संसाधन लगी।


टोरड्राइवर मॉड्यूल

tbselenium नामक एक मौजूदा PyPi प्रोजेक्ट है जिसका कार्य समान है। इस प्रयोग के लिए, मैंने फ़ायरफ़ॉक्स प्रोफ़ाइल सेटअप का संदर्भ दिया, लेकिन tbselenium में शामिल किसी भी अन्य सुविधा की आवश्यकता नहीं थी। रूट एक्सेस न रखने वाले कंटेनरों की अतिरिक्त जटिलता डिबगिंग को और अधिक कठिन बनाने में योगदान दे रही थी। इससे निर्भरता को सीमित करने और पहले से मौजूद सरल समाधानों को आज़माने की प्रेरणा मिली। उदाहरण के लिए, ऐसे कई स्थान हैं जहां मैं शुद्ध पायथन समाधानों को सीधे लागू करने के बजाय लिनक्स टूल और उप-शेल का उपयोग कर रहा हूं।


तैयार कक्षा पायथन की लगभग 150 पंक्तियों की है। मुझे लगता है कि समीक्षा कम होने से क्या हो रहा है इसका गहराई से विश्लेषण करना आसान होगा। मैंने इस बारे में बहुत कुछ सीखा कि टोर ब्राउज़र लॉन्चर कैसे काम करता है, और फ़ायरफ़ॉक्स प्रोफाइल को कैसे कॉन्फ़िगर किया जाता है। यह प्रोफ़ाइल ऑनलाइन कई स्रोतों से एकत्रित की गई है, और उनका उल्लेख स्रोत कोड के साथ-साथ इस दस्तावेज़ में भी किया गया है।


मैंने स्टार्टअप, टियर डाउन और नेविगेशन लॉजिक के एक बहुत ही सामान्य हिस्से को TorDriver नामक क्लास में समाहित कर लिया है। यह एक बहुत ही सरल वर्ग है जो टोर ब्राउज़र लॉन्चर के साथ फ़ायरफ़ॉक्स प्रोफ़ाइल सेट करता है। इसमें यह जांचने की एक विधि है कि क्या कोई तत्व पृष्ठ पर दिखाई दे रहा है, और दूसरा जो सत्यापित करता है कि प्रॉक्सी सॉकेट चालू है और चल रहा है। फ़ायरफ़ॉक्स प्रोफ़ाइल सेटअप और डिबगिंग को बड़े पैमाने पर स्टैक ओवरफ़्लो चर्चा द्वारा सूचित किया गया था: सेलेनियम के साथ टोर ब्राउज़र खोलें


पूर्ण फ़ाइल यहां पाई जा सकती है: tor-driver-python/torDriver.py


आयात

सेटअप और वेबड्राइवर घटकों के लिए सेलेनियम, पीप्रिंट, सबप्रोसेस और सॉकेट आयात करना।


torDriver.py मॉड्यूल के लिए आयात


जांचें कि क्या कोई तत्व दृश्यमान है

निम्न विधि किसी तत्व की जाँच को सारांशित करती है, और यदि वह समयबाह्य के भीतर दिखाई देता है तो True या False लौटाता है।


जांचें कि क्या कोई चयनकर्ता दिखाई दे रहा है

जाँच कर रहा है कि क्या टोर प्रॉक्सी प्रारंभ हो गई है

सिग्नल भेजने से पहले प्रॉक्सी पोर्ट को सक्रिय होना आवश्यक है। पायथन में सॉकेट कनेक्शन के परीक्षण के बारे में स्टैक ओवरफ़्लो में कुछ उदाहरणों के बाद मैं यह लेकर आया:


सॉकेट के सफल कनेक्शन की जाँच करें

कक्षा

मॉड्यूल का बड़ा हिस्सा एक वर्ग है जो फ़ायरफ़ॉक्स प्रोफ़ाइल को नियंत्रित करता है, जेकोड्राइवर डाउनलोड करता है, और टोरब्रोसर-लॉन्चर शुरू करता है।


टोरड्राइवर परिभाषा और आरंभीकरण

यहां मेरे पास एक बुनियादी कॉन्फ़िगरेशन और चीजों को ओवरराइड करने के कुछ तरीके हैं, लेकिन अधिकतर इसे यथासंभव सरल रखना:


TorDriver क्लास गुण और init

फ़ायरफ़ॉक्स प्रोफ़ाइल सेटअप

प्रॉक्सी पोर्ट से कनेक्ट करने के लिए फ़ायरफ़ॉक्स प्रोफ़ाइल को न्यूनतम रूप से कॉन्फ़िगर करने की आवश्यकता है, मैंने इसके साथ जावास्क्रिप्ट को भी अक्षम कर दिया था।


फ़ायरफ़ॉक्स प्रोफ़ाइल सेटअप करें

वेबड्राइवर सेटअप करें

यह ड्राइवर को आरंभ करने के लिए TorDriver से प्रोफ़ाइल और बाइनरी का उपयोग करता है


फ़ायरफ़ॉक्स के लिए एक नया वेबड्राइवर सत्र बनाएं


गेकोड्राइवर डाउनलोड करें

उपप्रोसेस में जेकोड्राइवर को डाउनलोड करने और निकालने के लिए एक विधि जोड़ना। उल्लेखनीय है कि किसी तरह इसे कंटेनर में चलाने पर tar.gz अब संपीड़ित नहीं होता है और इसे बस अनारक्षित करने की आवश्यकता होती है। त्रुटि के बारे में अधिक जानकारी यहां उपलब्ध है: stdin: gzip प्रारूप में नहीं त्रुटि


कर्ल और टार जेकोड्राइवर निकालते हैं


सेटअप करें और टोर नेटवर्क की प्रतीक्षा करें

जब तक सॉकेट प्रतिक्रिया न दे, प्रॉक्सी पोर्ट से कनेक्शन पुनः प्रयास करें:


सबप्रोसेस में टोरब्राउज़र-लॉन्चर प्रारंभ करें


Crawler.py

इस उदाहरण में मैंने निम्नलिखित दृष्टिकोण दो चरण दृष्टिकोण अपनाया। पहला चरण सूचना एकत्र करना है, और अगला चरण सूचना को संसाधित करना है। इस तरह मैं पूरी प्रक्रिया के लिए नेटवर्क कनेक्टिविटी से बंधा नहीं हूं, और स्रोत सामग्री पर वापस जाए बिना जितनी बार आवश्यक हो परिणामों को पार्स करने का पुनः प्रयास कर सकता हूं।


पूरी फ़ाइल यहां पाई जा सकती है: tor-driver-python/crawler.py


मॉड्यूल आयात

क्रॉलर द्वारा उपयोग किए गए आयात, गुण और सेटअप विधियाँ


मुख्य क्रॉलर कार्यक्षमता

क्रॉलर एक टेक्स्ट फ़ाइल को पढ़ता है और वेबड्राइवर सत्र में क्वेरीज़ को पॉप्युलेट करने के लिए उस जानकारी का उपयोग करता है। क्रॉल की स्थिति को प्रति क्वेरी एक json फ़ाइलों के फ़ोल्डर में रखा जाता है। मैं एक बार में जानकारी निर्यात करने के लिए आवश्यक न्यूनतम प्रसंस्करण करने का प्रयास करता हूं और बाद में कोई भी प्रसंस्करण साइट पर वापस जाने के बजाय मौजूदा डेटा में हो सकता है।


वेब ब्राउज़र के साथ खोज इंजन के माध्यम से क्रॉल करने के मुख्य चरण


खोज.txt

मैं खोजों को संग्रहीत करने के लिए एक टेक्स्ट फ़ाइल का उपयोग कर रहा हूं। मैंने एक टेक्स्ट फ़ाइल चुनी क्योंकि इसे पुनर्गठित करना बहुत आसान है। नई जानकारी के साथ क्रॉल शुरू करने या आंशिक रूप से विफल रहे किसी क्रॉल को फिर से शुरू करने के लिए टेक्स्ट को संपादित करना एक कम बाधा है। यदि इस क्रॉलर की डेटा आवश्यकताएँ अधिक जटिल होतीं तो मैं इसके बजाय डेटाबेस का उपयोग करने पर विचार करता। यह रिपोर्टिंग के लिए एक कस्टम यूजर इंटरफेस के साथ स्कैन को नियंत्रित करने के लिए एक एपीआई लागू करने की अनुमति देगा।


क्रॉलर द्वारा निष्पादित की जाने वाली खोजों की एक सूची


JSON परिणाम प्रारूप

उदाहरण फ़ाइलें पहले से ही रेपो में परिणाम फ़ोल्डर में हैं: टोर-ड्राइवर-पायथन/परिणाम

अधिक मजबूत क्रॉलर में मैं वास्तविक डेटाबेस तकनीक का उपयोग करने का सुझाव दूंगा। यह आसानी से बताने के लिए पर्याप्त है कि डेटा संग्रह कहां रुका और पुनः आरंभ करने में सुविधा होगी।


वेब क्रॉल की स्थिति संग्रहीत करने के लिए JSON


एक कंटेनर से क्रॉलर चलाना

क्रॉलर को निम्नलिखित कमांड के साथ कंटेनर से चलाया जा सकता है। रिपोर्ट जनरेटर के लिए JSON फ़ाइलों का मौजूद होना आवश्यक है, उदाहरण के लिए निर्यात CSV फ़ाइल यहां पाई जा सकती है:


कंटेनर प्रारंभ करें:

 docker run -it --rm -p 5901:5901 -v "${HOME}/src":/src excitingtheory/kalilinux-xvfb:torbrowser


कंटेनर में एक VNC सर्वर प्रारंभ करें, यह सत्र पासवर्ड के लिए संकेत देगा:

 /opt/start-vnc-server-once.sh 


डॉकर कंटेनर में वीएनसी सत्र शुरू करने से टर्मिनल आउटपुट


VNC सत्र के अंदर से क्रॉल प्रारंभ करें:

 python3 crawler.py


क्रॉलर टोर ब्राउज़र के आरंभ होने की प्रतीक्षा करेगा, और दुर्भाग्य से, यह एक मैन्युअल कदम है। बस चेकबॉक्स पर क्लिक करें, और कनेक्ट पर क्लिक करें। उदाहरण के लिए वीडियो डेमो देखें.


कंटेनर साफ होने तक स्वचालित रूप से टोर से कनेक्ट हो जाता है


रिपोर्ट.py

रिपोर्ट स्क्रिप्ट से कॉमा सेपरेटेड वैल्यू (सीएसवी) फ़ाइल उत्पन्न होगी

जावास्क्रिप्ट ऑब्जेक्ट नोटेशन (JSON) परिणाम फ़ाइलें क्रॉलर पूरे क्रॉल में सहेजता है। मैंने सीएसवी प्रारूप चुना क्योंकि यह सहकर्मियों के साथ साझा करने के लिए एक अधिक सामान्य प्रारूप है, लेकिन आगे के विश्लेषण के लिए अन्य टूल में आयात करना अभी भी आसान है।


पूरी फ़ाइल यहां पाई जा सकती है: tor-driver-python/report.py


मॉड्यूल आयात

यह JSON को पढ़ने, CSV लिखने और फ़ॉर्मेटिंग और डेटा प्रस्तुति के लिए URL को पार्स करने के लिए अंतर्निहित पायथन लाइब्रेरी का उपयोग करता है। फिर परिणामों को लूप करता है और डेटा प्रोसेसिंग शुरू करने के लिए उन्हें लोड करता है।


रिपोर्ट जनरेटर का आयात, गुण और डेटा आरंभीकरण


मुख्य रिपोर्ट जेनरेटर

यह रिपोर्ट जनरेटर की मुख्य कार्यक्षमता है। यह परिणाम ऑब्जेक्ट में कैप्चर किए गए डेटा की अंतिम प्रस्तुति और क्रमबद्धता करता है। आमतौर पर यूआरएल केवल किसी साइट के माध्यम से क्रॉलर के कार्यात्मक आंदोलन के लिए उपयोगी होते हैं, न कि अंतिम डेटा कैप्चर के रूप में, लेकिन यह आगे के डेटा निष्कर्षण को अनुकूलित करने के लिए एक अच्छी शुरुआत है।


परिणाम ऑब्जेक्ट से CSV फ़ाइल को प्रारूपित करें और लिखें


रिपोर्ट चलाएँ

क्रॉल के परिणाम JSON फ़ाइलों के रूप में ./results निर्देशिका में सहेजे जाते हैं। मैं डेटा से एक रिपोर्ट तैयार करने के लिए निम्नलिखित स्क्रिप्ट का उपयोग करूंगा।


 python3 report.py


उदाहरण रिपोर्ट

एक उदाहरण आउटपुट CSV फ़ाइल यहां पाई जा सकती है: tor-driver-python/output.csv


कॉलम और डेटा दिखाने वाली सीएसवी रिपोर्ट के स्निपेट


हमलों का पता लगाना और उन्हें कम करना

बॉट गतिविधि का पता लगाने और उसे कम करने के कुछ अलग-अलग तरीके हैं। मैं मुख्य रूप से डेटा सेंटर पक्ष पर ध्यान केंद्रित करूंगा, लेकिन मैं कुछ क्लाइंट साइड डिटेक्शन विधियों पर भी चर्चा करूंगा। हालाँकि क्लाइंट पर वास्तव में कभी भी भरोसा नहीं किया जा सकता क्योंकि क्लाइंट साइड सिग्नल किसी भी समय बदल सकते हैं, और धोखा दिया जा सकता है। मुझे लगता है कि डिटेक्शन सिस्टम डिज़ाइन करते समय इसे ध्यान में रखना महत्वपूर्ण है। डेटा सेंटर में सुरक्षा के दो रूप हैं जिन पर मैं चर्चा करूंगा: दर सीमित करना, और प्रतिष्ठा अवरुद्ध करना।



क्लाइंट साइड डिटेक्शन

केवल जावास्क्रिप्ट के साथ क्लाइंट साइड पर एक सक्रिय वेबड्राइवर सत्र का पता लगाने के कुछ तरीके हैं: जीथब में कुछ हद तक संबंधित मुद्दे पर अधिक विस्तार से चर्चा की गई है । अनिवार्य रूप से, क्योंकि वेबड्राइवर प्रोटोकॉल दस्तावेज़ और विंडो ऑब्जेक्ट को बदलता है, इसे क्लाइंट साइड कोड में पता लगाया जा सकता है।


वेबड्राइवर क्लाइंट पक्ष का पता लगाने के बारे में GitHub मुद्दे पर टिप्पणी करें


डेटा सेंटर में बॉट ट्रैफ़िक का पता लगाना और उसे ब्लॉक करना

मैं उन समाधानों पर ध्यान केंद्रित करने जा रहा हूं जिनके साथ मेरा सबसे अधिक अनुभव है, फास्टली, एडब्ल्यूएस डब्ल्यूएएफ और नेग्नेक्स। CloudFlare पूरी तरह से आश्चर्यचकित करने वाला था, इसलिए मैं उनकी पेशकश के बारे में भी बात करने जा रहा हूं।


AWS वेब एप्लिकेशन फ़ायरवॉल (WAF) दर आधारित नियमों का उपयोग गतिविधि के सेवा स्तरों से इनकार को रोकने के लिए भी किया जा सकता है, और ऐसे डिफ़ॉल्ट नियम हैं जिनका उपयोग Tor नेटवर्क ट्रैफ़िक का पता लगाने के लिए भी किया जा सकता है, अधिक जानकारी के लिए IP प्रतिष्ठा नियम दस्तावेज़ीकरण देखें। एक अन्य सामान्य दृष्टिकोण अन्य डेटा केंद्रों से सभी ट्रैफ़िक को रोकना है, जो सुरक्षित है यदि लक्षित दर्शक उपभोक्ता हैं। हालाँकि, व्यवसाय क्लाउड वीपीएन और अन्य तकनीक का उपयोग कर सकते हैं जो वैध ट्रैफ़िक के लिए हानिकारक हो सकते हैं।


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


Nginx के लिए ऐसा करने के बारे में कुछ लेख भी हैं: Nginx के साथ या अपने वेब एप्लिकेशन के अंदर गुमनाम ट्रैफ़िक को कैसे रोकें । अनिवार्य रूप से, टोर एग्जिट नोड्स के बारे में जानकारी प्राप्त करने के लिए एपीआई को कॉल करके, आईपी ब्लॉकिंग नियमों को तैयार किया जा सकता है और एक शेड्यूल पर Nginx पर लागू किया जा सकता है।


उपरोक्त क्लाउड प्रदाताओं के आश्चर्यजनक विपरीत, क्लाउडफ्लेयर टोर ग्राहकों के लिए समर्थन की पेशकश कर रहा है। मुझे उनका टोर समर्थन दस्तावेज़ मिला!? जहां वे नेटवर्क से टोर उपयोगकर्ताओं को सामग्री परोसने की क्षमता पर चर्चा करते हैं। मुझे लगता है कि यह वास्तव में एक दिलचस्प दृष्टिकोण है, और मैं भविष्य में इसे और अधिक जानने के लिए उत्सुक हूं।



निष्कर्ष


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


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


  1. यादृच्छिक आईपी पते का उपयोग करके टोर ब्राउज़र सत्र को स्वचालित करने के लिए सेलेनियम का उपयोग करना।
  2. पायथन और वेबड्राइवर प्रोटोकॉल का उपयोग करके किसी वेबसाइट से जानकारी एकत्र करना।
  3. जानकारी को JSON फ़ाइलों के एक सेट में सहेजा गया।
  4. ऑफ़लाइन परिणामों से CSV रिपोर्ट तैयार करने के लिए पायथन स्क्रिप्ट का उपयोग किया गया।
  5. डेटा सेंटर में सेवा से इनकार और टोर नेटवर्क गतिविधि का पता लगाने और उसे कम करने के कई तरीकों पर चर्चा की गई।