
Node.js में उच्च गति/कम लागत वाला CommonCrawl RegExp
WARCannon को इंटरनेट को 'ग्रेप' करने की प्रक्रिया को सरल और सस्ता बनाने के लिए बनाया गया था।
WARCannon के साथ, आप यह कर सकते हैं:
WARCannon AWS प्रौद्योगिकियों के चतुर उपयोग का लाभ उठाता है ताकि किसी भी क्षमता पर क्षैतिज रूप से स्केल किया जा सके, स्पॉट फ्लीट्स और एक ही क्षेत्र में डेटा ट्रांसफर के माध्यम से लागत को कम किया जा सके, S3 से अविश्वसनीय गति (प्रति नोड 100Gbps तक) पर ड्रा किया जा सके, सैकड़ों CPU कोर में समानांतर किया जा सके, DynamoDB और CloudFront के माध्यम से स्थिति की रिपोर्ट की जा सके, और S3 के माध्यम से परिणाम संग्रहीत किए जा सकें।
कुल मिलाकर, WARCannon लगभग $30 में कुछ घंटों में 400TB में कई नियमित अभिव्यक्ति पैटर्न संसाधित कर सकता है।
सबसे तेज़ और आसान तरीका AWS CloudShell का उपयोग करना है। बस इस एक-लाइनर को पेस्ट करें:
source <(curl https://raw.githubusercontent.com/c6fc/warcannon/master/cloudshell/deploy.sh)
यदि आप WARCannon की गैर-मास्टर शाखा का उपयोग करना चाहते हैं, तो बस टाइप करें:
export GIT_BRANCH=branch_name
source <(curl https://raw.githubusercontent.com/c6fc/warcannon/$GIT_BRANCH/cloudshell/deploy.sh)
नोट: CloudShell परिनियोजन अस्थायी स्टोरेज का उपयोग करता है, जिसका अर्थ है कि CloudShell से बाहर निकलने पर कस्टम regex पैटर्न खो जाएंगे। यदि आप बार-बार WARCannon का उपयोग करने जा रहे हैं, तो मैं नीचे 'स्थानीय स्थापना' का उपयोग करने की सलाह देता हूं।
WARCannon के लिए आवश्यक है कि आपके पास निम्नलिखित स्थापित हों:
ProTip: चीजों को साफ और AWS में आपके पास मौजूद अन्य चीजों से अलग रखने के लिए, यह दृढ़ता से अनुशंसित है कि आप WARCannon को एक नए खाते में तैनात करें। आप AWS में 'संगठन' कंसोल से आसानी से एक नया खाता बना सकते हैं। 'दृढ़ता से अनुशंसित' से मेरा मतलब है 'गंभीरता से इसे अन्य सामान के बगल में स्थापित न करें'।
पहले, रिपो को क्लोन करें और उदाहरण सेटिंग्स को कॉपी करें।
$ git clone [email protected]:c6fc/warcannon.git
$ cd warcannon
warcannon$ cp settings.json.sample settings.json
अपनी आवश्यकता के अनुसार settings.json संपादित करें:
आवश्यक सेटिंग्स
nodeInstanceType: समानांतर प्रसंस्करण के लिए उपयोग किए जाने वाले इंस्टेंस प्रकारों की एक सरणी। इस उद्देश्य के लिए 'c'-प्रकार सबसे अच्छा मूल्य हैं, और किसी भी आकार का उपयोग किया जा सकता है। वास्तविक अभियानों के लिए ["c5n.18xlarge"] अनुशंसित मान है।nodeCapacity: समानांतर प्रसंस्करण के दौरान अनुरोध करने के लिए नोड्स की संख्या। परिणामी नोड्स आपके द्वारा निर्दिष्ट nodeInstanceTypes का एक मनमाना वितरण होंगे।nodeParallelism: प्रति vCPU एक साथ संसाधित करने के लिए WARCs की संख्या। यहां 2 एक अच्छी संख्या है। यदि नोड्स में समानता के इस स्तर पर चलने के लिए अपर्याप्त RAM है (जैसा कि आप 'c'-प्रकार के इंस्टेंस के साथ सामना कर सकते हैं), तो वे इसके बजाय उच्चतम सुरक्षित समानता पर चलेंगे।nodeMaxDuration: सेकंड में कंप्यूट नोड्स का अधिकतम जीवनकाल। यदि कार्य अभी भी पूरा नहीं हुआ है तो इस समय के बाद नोड्स स्वचालित रूप से समाप्त हो जाएंगे। डिफ़ॉल्ट मान 24 घंटे है।वैकल्पिक सेटिंग्स (यदि उपयोग नहीं किया जाता है तो उन्हें पूरी तरह से छोड़ दें)
sshKeyName: एक EC2 SSH कुंजी का नाम जो us-east-1 में पहले से मौजूद है।allowSSHFrom: SSH की अनुमति देने के लिए एक CIDR मास्क। आमतौर पर यह <yourpublicip>/32 होगास्थापित करने के लिए, यह चलाएँ:
$ npm install
$ npm link
$ warcannon deploy
WARCannon में एक अभियान चलाना एक सरल, आसानी से अनुसरण करने योग्य कार्यप्रवाह का उपयोग करता है जिसे इन कुछ चरणों में सबसे अच्छा वर्णित किया जा सकता है:
warcannon deploywarcannon testLocal -swarcannon testwarcannon list 2022warcannon populate 2022-21warcannon firewarcannon syncResults के साथ S3 से परिणाम प्राप्त करें।प्रत्येक चरण की अधिक विस्तृत समझ के लिए आगे पढ़ें।
WARCannon को AWS Open Data कार्यक्रम के माध्यम से Common Crawl द्वारा संचालित किया जाता है। Common Crawl इस मायने में अद्वितीय है कि उनके स्पाइडर द्वारा प्राप्त डेटा न केवल वेबसाइट टेक्स्ट, बल्कि जावास्क्रिप्ट, TypeScript, पूर्ण HTML, CSS आदि जैसी अन्य टेक्स्ट-आधारित सामग्री को भी कैप्चर करता है। उपयुक्त नियमित अभिव्यक्तियाँ (Regular Expressions) बनाकर जो अद्वितीय घटकों की पहचान करने में सक्षम हैं, शोधकर्ता वेबसाइटों की पहचान उनके द्वारा उपयोग की जाने वाली तकनीकों के आधार पर कर सकते हैं, और ऐसा कभी भी वेबसाइट को छुए बिना कर सकते हैं। समस्या यह है कि इसके लिए सैकड़ों टेराबाइट डेटा को पार्स करने की आवश्यकता होती है, जो आपके पास उपलब्ध संसाधनों की परवाह किए बिना एक कठिन कार्य है। सौभाग्य से WARCannon के पास कई उपकरण हैं जिनका उपयोग आप यह करने के लिए कर सकते हैं!
इंटरनेट को ग्रेप करना कमजोर दिल वालों के लिए नहीं है, लेकिन एक प्रभावी छलनी से शुरू करना पहला कदम है। WARCannon वास्तविक Common Crawl डेटा के विरुद्ध नियमित अभिव्यक्तियों के स्थानीय सत्यापन को सक्षम करके इसका समर्थन करता है। पहले, lambda_functions/warcannon/matches.js खोलें और regex_patterns ऑब्जेक्ट को name: pattern प्रारूप में उन नियमित अभिव्यक्तियों को शामिल करने के लिए संशोधित करें जिनका आप उपयोग करना चाहते हैं। डिफ़ॉल्ट खोज सेट से यहां एक उदाहरण दिया गया है:
exports.regex_patterns = {
"access_key_id": /(\'A|"A)(SIA|KIA|IDA|ROA)[JI][A-Z0-9]{14}[AQ][\'"]/g,
};
इस अभिव्यक्ति से मेल खाने वाले स्ट्रिंग्स को परिणामों में संबंधित कुंजी के तहत सहेजा जाएगा; इस मामले में access_key_id। Protip: ज्ञात-अच्छे मैचों के विरुद्ध नियमित अभिव्यक्तियाँ बनाने और परीक्षण करने के लिए 'JavaScript' प्रारूप के साथ RegExr का उपयोग करें।
आपके पास केवल निर्दिष्ट डोमेन से परिणाम कैप्चर करने का विकल्प भी है। ऐसा करने के लिए, बस domains सरणी को उन FQDN से भरें जिन्हें आप शामिल करना चाहते हैं। यह अनुशंसा की जाती है कि आप इसे खाली [] छोड़ दें क्योंकि यह लगभग कभी भी सार्थक नहीं होता (बचाया गया प्रसंस्करण प्रयास बहुत छोटा है), लेकिन यह कुछ विशिष्ट मामलों में उपयोगी हो सकता है।
exports.domains = ["example1.com", "example2.com"];
एक बार matches.js भर जाने के बाद, निम्न कमांड चलाएँ:
warcannon$ warcannon testLocal -s
यदि आप चाहें तो वैकल्पिक रूप से commoncrawl S3 बकेट में एक WARC का पथ जोड़ सकते हैं, लेकिन अन्यथा एक हार्डकोडेड डिफ़ॉल्ट का उपयोग किया जाएगा।
WARCannon आपके कॉन्फ़िगर किए गए मैचों को खोजने के लिए WARC फ़ाइल को स्ट्रीम प्रोसेस करेगा (या यदि आप -s को छोड़ देते हैं तो इसे पूरी तरह से डाउनलोड करेगा)। जब आप ctrl+c से बाधित करते हैं या जब प्रसंस्करण समाप्त होता है तो WARCannon परिणामों को ~/.warcannon/ फ़ोल्डर में सहेज लेगा। यह न्यूनतम बैंडविड्थ के साथ बहुत तेज़ी से सामान्य मैचों का परीक्षण करना आसान बनाता है।
इस सब के अलावा, WARCannon स्थानीय रूप से चलने पर आपकी नियमित अभिव्यक्तियों की कुल कंप्यूट लागत का मूल्यांकन करने का प्रयास करेगा। इस तरह, आपको यह जानकारी मिल सकती है कि क्या कोई दी गई नियमित अभिव्यक्ति आपके अभियान को निष्पादित करने से पहले प्रदर्शन को महत्वपूर्ण रूप से प्रभावित करेगी।
