
वेब भेद्यता स्कैनर्स के लिए एक शक्तिशाली ब्राउज़र क्रॉलर
वेब भेद्यता स्कैनर के लिए एक शक्तिशाली ब्राउज़र क्रॉलर
अंग्रेज़ी दस्तावेज़ | 中文文档
क्रॉलरगो एक ब्राउज़र क्रॉलर है जो URL संग्रह के लिए chrome headless मोड का उपयोग करता है। यह DOM रेंडरिंग चरण के साथ पूरे वेब पेज के प्रमुख स्थानों को हुक करता है, स्वचालित रूप से फॉर्म भरता है और सबमिट करता है, बुद्धिमान JS इवेंट ट्रिगरिंग के साथ, और वेबसाइट द्वारा उजागर किए गए अधिक से अधिक प्रविष्टियाँ एकत्र करता है। अंतर्निहित URL डी-डुप्लीकेशन मॉड्यूल बड़ी संख्या में स्यूडो-स्टैटिक URL को फ़िल्टर करता है, फिर भी बड़ी वेबसाइटों के लिए तेज़ पार्सिंग और क्रॉलिंग गति बनाए रखता है, और अंततः उच्च गुणवत्ता वाले अनुरोध परिणामों का संग्रह प्राप्त करता है।
क्रॉलरगो वर्तमान में निम्नलिखित सुविधाओं का समर्थन करता है:

कृपया स्थापित करने और उपयोग करने से पहले अस्वीकरण को ध्यान से पढ़ें और पुष्टि करें।
निर्माण
make build
make build_all
यदि आप लिनक्स सिस्टम का उपयोग कर रहे हैं और क्रोम आपको लापता निर्भरताओं के लिए संकेत देता है, तो कृपया नीचे समस्या निवारण देखें
मान लें कि आपका क्रोमियम स्थापना निर्देशिका /tmp/chromium/ है, एक ही समय में 10 टैब खोलें और testphp.vulnweb.com को क्रॉल करें:
bin/crawlergo -c /tmp/chromium/chrome -t 10 http://testphp.vulnweb.com/
आप बिना सिरदर्द के इसे डॉकर के साथ भी उपयोग कर सकते हैं:
git clone https://github.com/Qianlitp/crawlergo
docker build . -t crawlergo
docker run crawlergo http://testphp.vulnweb.com/
bin/crawlergo -c /tmp/chromium/chrome -t 10 --request-proxy socks5://127.0.0.1:7891 http://testphp.vulnweb.com/
डिफ़ॉल्ट रूप से, क्रॉलरगो परिणाम सीधे स्क्रीन पर प्रिंट करता है। हम आगे आउटपुट मोड को json पर सेट करते हैं, और पायथन का उपयोग करके इसे कॉल करने का नमूना कोड इस प्रकार है:
#!/usr/bin/python3
# coding: utf-8
import simplejson
import subprocess
def main():
target = "http://testphp.vulnweb.com/"
cmd = ["bin/crawlergo", "-c", "/tmp/chromium/chrome", "-o", "json", target]
rsp = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, error = rsp.communicate()
# "--[Mission Complete]--" is the end-of-task separator string
result = simplejson.loads(output.decode().split("--[Mission Complete]--")[1])
req_list = result["req_list"]
print(req_list[0])
if __name__ == '__main__':
main()
जब आउटपुट मोड json पर सेट होता है, तो लौटाया गया परिणाम, JSON डीसेरियलाइज़ेशन के बाद, चार भागों में होता है:
all_req_list: इस क्रॉल कार्य के दौरान मिले सभी अनुरोध, अन्य डोमेन से किसी भी संसाधन प्रकार सहित।req_list: इस क्रॉल कार्य के वर्तमान डोमेन परिणाम लौटाता है, स्यूडो-स्टैटिक रूप से डी-डुप्लीकेटेड, बिना स्थिर संसाधन लिंक के। यह all_req_list का एक उपसमूह है।all_domain_list: सभी मिले डोमेन की सूची।sub_domain_list: मिले उपडोमेन की सूची।क्रॉलरगो पूर्ण अनुरोध और URL लौटाता है, जिसका उपयोग विभिन्न तरीकों से किया जा सकता है:
अन्य निष्क्रिय वेब भेद्यता स्कैनर के साथ संयोजन में उपयोग किया जाता है
पहले, एक निष्क्रिय स्कैनर शुरू करें और सुनने का पता सेट करें: http://127.0.0.1:1234/
इसके बाद, मान लें कि क्रॉलरगो स्कैनर के समान मशीन पर है, क्रॉलरगो शुरू करें और पैरामीटर सेट करें:
--push-to-proxy http://127.0.0.1:1234/
होस्ट बाइंडिंग (उच्च संस्करण क्रोम के लिए उपलब्ध नहीं) (उदाहरण)
कस्टम कुकीज़ (उदाहरण)
क्रॉलरगो द्वारा उत्पन्न ज़ोंबी प्रक्रियाओं को नियमित रूप से साफ करें (उदाहरण), @ring04h द्वारा योगदान
क्रॉलरगो डिफ़ॉल्ट रूप से हेडलेस मोड डिटेक्शन को बायपास कर सकता है।
https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html

'Fetch.enable' नहीं मिला
Fetch नए संस्करण के क्रोम द्वारा समर्थित एक सुविधा है, यदि यह त्रुटि होती है, तो इसका मतलब है कि आपका संस्करण बहुत कम है, कृपया क्रोम संस्करण को अपग्रेड करें।
क्रोम लापता निर्भरताओं जैसे xxx.so के साथ चलता है
// Ubuntu
apt-get install -yq --no-install-recommends \
libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \
libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 \
libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libgbm1 \
libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 libnss3
// CentOS 7
sudo yum install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 \
libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 \
ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc -y
sudo yum update nss -y
रन प्रॉम्प्ट नेविगेशन टाइमआउट / ब्राउज़र नहीं मिला / सही ब्राउज़र निष्पादन योग्य पथ पता नहीं
सुनिश्चित करें कि ब्राउज़र निष्पादन योग्य पथ सही ढंग से कॉन्फ़िगर किया गया है, पता बार में chrome://version टाइप करें, और निष्पादन योग्य फ़ाइल पथ खोजें:

--chromium-path Path, -c Path क्रोम निष्पादन योग्य का पथ। (आवश्यक)--custom-headers Headers HTTP हेडर को कस्टमाइज़ करें। कृपया JSON सीरियलाइज़ेशन के बाद डेटा पास करें, यह वैश्विक रूप से परिभाषित है और सभी अनुरोधों के लिए उपयोग किया जाएगा। (डिफ़ॉल्ट: null)--post-data PostData, -d PostData POST डेटा। (डिफ़ॉल्ट: null)--max-crawled-count Number, -m Number स्यूडो-स्टैटिक के कारण लंबे क्रॉलिंग समय से बचने के लिए क्रॉलर के लिए कार्यों की अधिकतम संख्या। (डिफ़ॉल्ट: 200)--filter-mode Mode, -f Mode फ़िल्टरिंग मोड, simple: केवल स्थिर संसाधन और डुप्लिकेट अनुरोध फ़िल्टर किए जाते हैं। smart: स्यूडो-स्टैटिक फ़िल्टर करने की क्षमता के साथ। strict: सख्त स्यूडो-स्टैटिक फ़िल्टरिंग नियम। (डिफ़ॉल्ट: smart)--output-mode value, -o value परिणाम आउटपुट मोड, console: संवर्धित परिणाम सीधे स्क्रीन पर प्रिंट करें। json: सभी परिणामों का json सीरियलाइज़्ड स्ट्रिंग प्रिंट करें। none: आउटपुट प्रिंट न करें। (डिफ़ॉल्ट: console)--fuzz-path पथ फ़ज़िंग के लिए अंतर्निहित शब्दकोश का उपयोग करें। (डिफ़ॉल्ट: false)--fuzz-path-dict एक शब्दकोश फ़ाइल पथ पास करके Fuzz पथ को कस्टमाइज़ करें, उदा. /home/user/fuzz_dir.txt, फ़ाइल की प्रत्येक पंक्ति फ़ज़ किए जाने वाले पथ का प्रतिनिधित्व करती है। (डिफ़ॉल्ट: null)--robots-path /robots.txt फ़ाइल से पथ हल करें। (डिफ़ॉल्ट: false)--ignore-url-keywords, -iuk URL कीवर्ड जिस पर आप जाना नहीं चाहते, आमतौर पर कुकीज़ को कस्टमाइज़ करते समय लॉगआउट लिंक को बाहर करने के लिए उपयोग किया जाता है। उपयोग: -iuk logout -iuk exit। (डिफ़ॉल्ट: "logout", "quit", "exit")--form-values, -fv फॉर्म फिल का मान कस्टमाइज़ करें, टेक्स्ट प्रकार द्वारा सेट करें। समर्थित परिभाषा प्रकार: default, mail, code, phone, username, password, qq, id_card, url, date और number। टेक्स्ट प्रकार इनपुट बॉक्स लेबल के चार विशेषता मान कीवर्ड id, name, class, type द्वारा पहचाने जाते हैं। उदाहरण के लिए, मेलबॉक्स इनपुट बॉक्स को स्वचालित रूप से A से भरने और पासवर्ड इनपुट बॉक्स को स्वचालित रूप से B से भरने के लिए परिभाषित करें, -fv mail=A -fv password=B। जहां default टेक्स्ट प्रकार पहचाने जाने पर फिल मान का प्रतिनिधित्व करता है, "Cralwergo" के रूप में। (डिफ़ॉल्ट: Cralwergo)--form-keyword-values, -fkv फॉर्म फिल का मान कस्टमाइज़ करें, कीवर्ड फजी मैच द्वारा सेट करें। कीवर्ड इनपुट बॉक्स लेबल के id, name, , के चार विशेषता मानों से मेल खाता है। उदाहरण के लिए, 123456 भरने के लिए pass कीवर्ड और admin भरने के लिए user कीवर्ड का फजी मैच, । (डिफ़ॉल्ट: Cralwergo)--max-tab-count Number, -t Number क्रॉलर एक साथ खोल सकने वाले टैब की अधिकतम संख्या। (डिफ़ॉल्ट: 8)--tab-run-timeout Timeout एकल टैब पेज के लिए अधिकतम रनटाइम। (डिफ़ॉल्ट: 20s)--wait-dom-content-loaded-timeout Timeout पेज लोडिंग पूरी होने की प्रतीक्षा करने के लिए अधिकतम टाइमआउट। (डिफ़ॉल्ट: 5s)--event-trigger-interval Interval ईवेंट स्वचालित रूप से ट्रिगर होने पर अंतराल, आमतौर पर धीमे लक्ष्य नेटवर्क और DOM अद्यतन विरोधों के मामले में उपयोग किया जाता है जो URL मिस कैप्चर का कारण बनते हैं। (डिफ़ॉल्ट: 100ms)--event-trigger-mode Value DOM ईवेंट स्वचालित-ट्रिगर मोड, async और sync के साथ, DOM अद्यतन विरोधों के कारण URL मिस-कैप्चरिंग के लिए। (डिफ़ॉल्ट: async)--before-exit-delay एकल टैब कार्य के अंत में क्रोम को बंद करने के लिए विलंब निकास। आंशिक DOM अद्यतनों और XHR अनुरोधों को कैप्चर करने की प्रतीक्षा करने के लिए उपयोग किया जाता है। (डिफ़ॉल्ट: 1s)--push-to-proxy प्राप्त किए जाने वाले क्रॉलर परिणाम का श्रोता पता, आमतौर पर निष्क्रिय स्कैनर का श्रोता पता। (डिफ़ॉल्ट: null)--push-pool-max श्रोता पते पर क्रॉलर परिणाम भेजते समय अधिकतम समवर्ती संख्या। (डिफ़ॉल्ट: 10)--log-level लॉगिंग स्तर, debug, info, warn, error और fatal। (डिफ़ॉल्ट: info)--no-headless क्रॉलिंग प्रक्रिया को विज़ुअलाइज़ करने के लिए क्रोम हेडलेस मोड बंद करें। (डिफ़ॉल्ट: false)Weibo:@9ian1i Twitter: @9ian1i
संबंधित लेख:वेब भेद्यता स्कैनिंग के लिए एक ब्राउज़र क्रॉलर अभ्यास
--output-json filepath JSON सीरियलाइज़ेशन के बाद परिणाम को निर्दिष्ट फ़ाइल में लिखें। (डिफ़ॉल्ट: null)--request-proxy proxyAddress socks5 प्रॉक्सी पता, क्रॉलरगो और क्रोम ब्राउज़र से सभी नेटवर्क अनुरोध प्रॉक्सी के माध्यम से भेजे जाते हैं। (डिफ़ॉल्ट: null)classtype-fkv user=admin -fkv pass=123456