
डार्कवेब क्रॉलर जो पेज लाने, हेडर और कुकीज़ कैप्चर करने, लिंक निकालने और OSINT संग्रह के लिए रेंडर किए गए स्क्रीनशॉट सहेजने के लिए requests और Selenium वर्कर्स का उपयोग करता है।
darc - डार्कवेब क्रॉलर प्रोजेक्टकिसी भी तकनीकी और/या रखरखाव संबंधी जानकारी के लिए, कृपया |docs|_ देखें।
.. |docs| replace:: आधिकारिक दस्तावेज़ीकरण .. _docs: https://darc.jarryshaw.me
NB: संस्करण 1.0.0 से शुरू करके, प्रोजेक्ट की नई सुविधाएँ
इस सार्वजनिक रिपॉज़िटरी में विकसित नहीं की जाएँगी। अपडेट और नए रिलीज़ में केवल बगफिक्स और सुरक्षा पैच
लागू किए जाएँगे।
darc को डार्कवेब क्रॉलिंग के लिए एक स्विस आर्मी नाइफ के रूप में डिज़ाइन किया गया है।
यह HTTP अनुरोध और प्रतिक्रिया संबंधी जानकारी, जैसे कुकीज़, हेडर फ़ील्ड आदि, एकत्र करने के लिए
requests को एकीकृत करता है। यह पूरी तरह से रेंडर किया गया वेब पेज और उस दृश्य का स्क्रीनशॉट
प्रदान करने के लिए selenium को भी बंडल करता है।
.. image:: https://darc.jarryshaw.me/en/latest/_images/darc.jpeg
darc की सामान्य प्रक्रिया को निम्नानुसार वर्णित किया जा सकता है:
वर्कर दो प्रकार के होते हैं:
crawler -- किसी लिंक का ताज़ा दृश्य प्रदान करने और उसकी कनेक्टेबिलिटी का परीक्षण करने के लिए
darc.crawl.crawler चलाता है
loader -- किसी लिंक का गहन दृश्य प्रदान करने और अधिक दृश्य जानकारी देने के लिए
darc.crawl.loader चलाता है
crawler प्रकार के वर्कर के लिए सामान्य प्रक्रिया को निम्नानुसार वर्णित किया जा सकता है:
darc.process.process_crawler: requests लिंक डेटाबेस (देखें darc.db.load_requests) से URL प्राप्त करता है,
और ऐसे URL को darc.crawl.crawler को फ़ीड करता है।
NOTE:
यदि darc.const.FLAG_MP True है, तो फ़ंक्शन को मल्टीप्रोसेसिंग समर्थन के साथ
कॉल किया जाएगा; यदि darc.const.FLAG_TH True है, तो फ़ंक्शन को मल्टीथ्रेडिंग
समर्थन के साथ कॉल किया जाएगा; यदि कोई नहीं है, तो फ़ंक्शन को सिंगल-थ्रेडिंग में कॉल किया जाएगा।
darc.crawl.crawler: darc.link.parse_link का उपयोग करके URL को पार्स करता है,
और जाँचता है कि URL को क्रॉल करने की आवश्यकता है या नहीं
(देखें darc.const.PROXY_WHITE_LIST, darc.const.PROXY_BLACK_LIST,
darc.const.LINK_WHITE_LIST और darc.const.LINK_BLACK_LIST);
यदि हाँ, तो requests के साथ URL को क्रॉल करता है।
यदि URL किसी बिल्कुल नए होस्ट से है, तो darc पहले
होस्ट के robots.txt और साइटमैप्स को प्राप्त करके सहेजने का प्रयास करेगा
(देखें darc.proxy.null.save_robots और darc.proxy.null.save_sitemap),
और फिर साइटमैप्स से लिंक निकालकर उन्हें भविष्य की क्रॉलिंग के लिए लिंक डेटाबेस में सहेजेगा
(देखें darc.proxy.null.read_sitemap और darc.db.save_requests)।
साथ ही, यदि सबमिशन API प्रदान किया गया है, तो darc.submit.submit_new_host
को कॉल किया जाएगा और अभी प्राप्त किए गए दस्तावेज़ों को सबमिट किया जाएगा।
यदि robots.txt मौजूद है, और darc.const.FORCE False है,
तो darc जाँच करेगा कि URL को क्रॉल करने की अनुमति है या नहीं।
NOTE:
रूट पाथ (जैसे https://www.example.com/ में /) को robots.txt को अनदेखा करते हुए
हमेशा क्रॉल किया जाएगा।
इस बिंदु पर, darc क्रॉल करने और अंतिम प्रतिक्रिया ऑब्जेक्ट प्राप्त करने के लिए
darc.sites से कस्टमाइज़्ड हुक फ़ंक्शन को कॉल करेगा।
darc darc.save.save_headers का उपयोग करके सत्र कुकीज़ और हेडर जानकारी
सहेजेगा।
NOTE:
यदि requests.exceptions.InvalidSchema उत्पन्न होता है, तो लिंक को
darc.proxy.null.save_invalid द्वारा सहेजा जाएगा। आगे की
प्रोसेसिंग छोड़ दी जाती है।
यदि प्रतिक्रिया दस्तावेज़ का कंटेंट प्रकार अनदेखा नहीं किया गया है (देखें
darc.const.MIME_WHITE_LIST और darc.const.MIME_BLACK_LIST),
तो darc.submit.submit_requests को कॉल किया जाएगा और अभी प्राप्त किए गए दस्तावेज़ को
सबमिट किया जाएगा।
यदि प्रतिक्रिया दस्तावेज़ HTML (text/html और application/xhtml+xml) है,
तो HTML दस्तावेज़ से सभी संभावित लिंक निकालने और ऐसे लिंक को डेटाबेस में सहेजने के लिए
darc.parse.extract_links को कॉल किया जाएगा
(देखें darc.db.save_requests)।
और यदि प्रतिक्रिया स्थिति कोड 400 और 600 के बीच है,
तो URL को लिंक डेटाबेस में वापस सहेजा जाएगा
(देखें darc.db.save_requests)। यदि नहीं, तो URL को
अगले चरणों को आगे बढ़ाने के लिए selenium लिंक डेटाबेस में सहेजा जाएगा
(देखें darc.db.save_selenium)।
loader प्रकार के workers के लिए सामान्य प्रक्रिया का वर्णन इस प्रकार किया जा सकता है:
darc.process.process_loader: इस बीच, darc selenium लिंक डेटाबेस से URL प्राप्त करेगा (देखें darc.db.load_selenium), और ऐसे URL को darc.crawl.loader को फ़ीड करेगा।
नोट:
यदि darc.const.FLAG_MP True है, तो फ़ंक्शन को मल्टीप्रोसेसिंग समर्थन के साथ कॉल किया जाएगा; यदि darc.const.FLAG_TH True है, तो फ़ंक्शन को मल्टीथ्रेडिंग समर्थन के साथ कॉल किया जाएगा; यदि कोई नहीं है, तो फ़ंक्शन को सिंगल-थ्रेडिंग में कॉल किया जाएगा।
darc.crawl.loader: darc.link.parse_link का उपयोग करके URL को पार्स करें और Google Chrome के साथ selenium का उपयोग करके URL लोड करना शुरू करें।
इस बिंदु पर, darc मूल selenium.webdriver.chrome.webdriver.WebDriver ऑब्जेक्ट को लोड करने और वापस करने के लिए darc.sites से अनुकूलित हुक फ़ंक्शन को कॉल करेगा।
यदि सफल होता है, तो रेंडर किया गया स्रोत HTML दस्तावेज़ सहेजा जाएगा, और एक पूर्ण-पृष्ठ स्क्रीनशॉट लिया जाएगा और सहेजा जाएगा।
यदि सबमिशन API प्रदान किया गया है, तो darc.submit.submit_selenium को कॉल किया जाएगा और अभी लोड किए गए दस्तावेज़ को सबमिट किया जाएगा।
बाद में, HTML दस्तावेज़ से सभी संभावित लिंक निकालने और ऐसे लिंक को requests डेटाबेस में सहेजने के लिए darc.parse.extract_links को कॉल किया जाएगा (देखें darc.db.save_requests)।
नोट:
darc 3.6 सहित ऊपर के सभी Python संस्करणों का समर्थन करता है।
वर्तमान में, यह केवल Linux (Ubuntu 18.04) और macOS (Catalina) पर समर्थित और परीक्षित है।
3.8 से नीचे के Python संस्करणों में इंस्टॉल करते समय, darc बैकपोर्ट संगतता के लिए स्वयं को संकलित करने के लिए |walrus|_ का उपयोग करेगा।
.. |walrus| replace:: walrus
.. _walrus: https://github.com/pybpc/walrus
.. code-block:: shell
pip install python-darc
कृपया सुनिश्चित करें कि आपके सिस्टम पर Google Chrome और Chrome Driver का संगत संस्करण इंस्टॉल है।
संस्करण 0.3.0 से शुरू करते हुए, हमने टास्क क्यू डेटाबेस बैकएंड के लिए Redis_ पेश किया।
.. _Redis: https://redis.io
संस्करण 0.6.0 के बाद से, हमने टास्क क्यू डेटाबेस बैकएंड के लिए Redis_ डेटाबेस के अलावा रिलेशनशिप डेटाबेस स्टोरेज (जैसे MySQL, SQLite, PostgreSQL_, आदि) पेश किया, क्योंकि जब टास्क क्यू बहुत बड़ा हो जाता है तो यह बहुत अधिक मेमोरी-खर्चीला हो सकता है।
.. _MySQL: https://mysql.com/ .. _SQLite: https://www.sqlite.org/ .. _PostgreSQL: https://www.postgresql.org/
कृपया सुनिश्चित करें कि darc प्रोजेक्ट का उपयोग करते समय आपके पास बैकएंड डेटाबेस में से एक इंस्टॉल, कॉन्फ़िगर और चालू है।
हालाँकि, darc प्रोजेक्ट Docker और Compose समर्थन के साथ भेजा जाता है।
कृपया संबंधित फ़ाइलों और अधिक जानकारी के लिए प्रोजेक्ट रूट देखें।
या, आप Docker Hub_ रिपॉज़िटरी को देख सकते हैं और/या वहाँ से इंस्टॉल कर सकते हैं:
.. code-block:: shell
docker pull jsnbzh/darc[:TAGNAME]
.. _Docker Hub: https://hub.docker.com/r/jsnbzh/darc
या GitHub Container Registry, जिसमें अधिक अद्यतन और व्यापक इमेज हैं:
.. code-block:: shell
docker pull ghcr.io/jarryshaw/darc[:TAGNAME]
docker pull ghcr.io/jarryshaw/darc-debug[:TAGNAME]
darc प्रोजेक्ट एक सरल CLI प्रदान करता है::
usage: darc [-h] [-v] -t {crawler,loader} [-f FILE] ...
the darkweb crawling swiss army knife
positional arguments: link links to craw
optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit -t {crawler,loader}, --type {crawler,loader} type of worker process -f FILE, --file FILE read links from file
इसे मॉड्यूल एंट्रीपॉइंट के माध्यम से भी कॉल किया जा सकता है::
python -m darc ...
नोट: