
زاحف متصفح قوي لأدوات فحص الثغرات الأمنية على الويب
زاحف متصفح قوي لأدوات فحص الثغرات الأمنية على الويب
الوثيقة الإنجليزية | 中文文档
crawlergo هو زاحف متصفح يستخدم وضع chrome headless لجمع عناوين URL. يقوم بربط النقاط الرئيسية لصفحة الويب بأكملها مع مرحلة عرض DOM، ويملأ النماذج ويقدمها تلقائياً، مع تشغيل ذكي لأحداث JavaScript، ويجمع أكبر عدد ممكن من الإدخالات التي يعرضها الموقع. وحدة إزالة التكرار المدمجة في عناوين URL تقوم بتصفية عدد كبير من عناوين URL شبه الثابتة، مع الحفاظ على سرعة تحليل وزحف سريعة حتى للمواقع الكبيرة، وتنتج في النهاية مجموعة عالية الجودة من نتائج الطلبات.
يدعم crawlergo حالياً الميزات التالية:

يرجى قراءة وتأكيد إخلاء المسؤولية بعناية قبل التثبيت والاستخدام.
البناء
make build
make build_all
إذا كنت تستخدم نظام Linux وأظهر Chrome نقصاً في التبعيات، يرجى الاطلاع على قسم استكشاف الأخطاء أدناه
افترض أن دليل تثبيت Chromium الخاص بك هو /tmp/chromium/، قم بتعيين 10 علامات تبويب مفتوحة في نفس الوقت وزحف إلى testphp.vulnweb.com:
bin/crawlergo -c /tmp/chromium/chrome -t 10 http://testphp.vulnweb.com/
يمكنك أيضاً استخدام هذا مع Docker بدون متاعب:
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/
بشكل افتراضي، يطبع crawlergo النتائج مباشرة على الشاشة. سنقوم بعد ذلك بتعيين وضع الإخراج إلى json، وعينة الكود لاستدعائه باستخدام Python تكون كالتالي:
#!/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]--" هو السلسلة الفاصلة لنهاية المهمة
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: قائمة بالنطاقات الفرعية التي تم العثور عليها.crawlergo يعيد الطلبات وعناوين URL الكاملة، والتي يمكن استخدامها بعدة طرق:
الاستخدام مع أدوات فحص الثغرات السلبية الأخرى
أولاً، قم بتشغيل ماسح ضوئي سلبي واضبط عنوان الاستماع على: http://127.0.0.1:1234/
بعد ذلك، افترض أن crawlergo موجود على نفس جهاز الماسح الضوئي، قم بتشغيل crawlergo واضبط المعاملات:
--push-to-proxy http://127.0.0.1:1234/
ربط المضيف (غير متاح لإصدارات Chrome العالية) (مثال)
ملفات تعريف الارتباط المخصصة (مثال)
تنظيف العمليات الزومبي الناتجة عن crawlergo بانتظام (مثال) ، تمت المساهمة من قبل @ring04h
يمكن لـ crawlergo تجاوز كشف وضع headless بشكل افتراضي.
https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html

لم يتم العثور على 'Fetch.enable'
Fetch هي ميزة مدعومة من قبل الإصدار الجديد من Chrome، إذا حدث هذا الخطأ، فهذا يعني أن إصدارك منخفض جداً، يرجى ترقية إصدار Chrome.
يعمل Chrome مع تبعيات مفقودة مثل 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 المسار إلى الملف التنفيذي لـ Chrome. (إلزامي)--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)--output-json filepath كتابة النتيجة إلى الملف المحدد بعد تسلسلها كـ JSON. (الافتراضي: null)--request-proxy proxyAddress عنوان وكيل socks5، يتم إرسال جميع طلبات الشبكة من crawlergo ومتصفح Chrome عبر الوكيل. (الافتراضي: null)