
اكتشاف التقنيات باستخدام بديل Wappalyzer
هذا المشروع هو أداة سطر أوامر ومكتبة بايثون تستخدم إضافة المتصفح Wappalyzer وبصماتها للكشف عن التقنيات. المشاريع الأخرى التي ظهرت بعد إيقاف المشروع الرسمي مفتوح المصدر تستخدم بصمات قديمة وتفتقر إلى الدقة في تطبيقات الويب الديناميكية. هذا المشروع يتجاوز هذه القيود عن طريق تشغيل الإضافة في Chromium عبر Playwright.

بعد تثبيت حزمة بايثون، قم بتثبيت متصفح Chromium الخاص بـ Playwright:
python -m playwright install chromium
في حاويات لينكس المصغرة، قم بتثبيت تبعيات النظام الخاصة بـ Chromium أيضًا:
python -m playwright install-deps chromium
pipx install wappalyzer
pipx run --spec playwright playwright install chromium
لاستخدامها كمكتبة، قم بتثبيتها باستخدام pip داخل حاوية معزولة مثل venv أو docker. يمكنك أيضًا استخدام --break-system-packages لإجراء تثبيت 'عادي' ولكن لا يُنصح بذلك.
pip install wappalyzer
python -m playwright install chromium
git clone https://github.com/s0md3v/wappalyzer-next.git
cd wappalyzer-next
docker compose build
docker compose run --rm wappalyzer -i https://example.com
docker compose run --rm wappalyzer -i urls.txt -w 3 -oJ output.json
بعض الأمثلة الشائعة للاستخدام مُدرجة أدناه، راجع قائمة جميع الخيارات لمزيد من المعلومات.
wappalyzer -i https://example.comwappalyzer -i urls.txt -w 3wappalyzer -i urls.txt -t 15wappalyzer -i https://example.com -c "sessionid=abc123; token=xyz789"wappalyzer -i https://example.com -oJ results.jsonwappalyzer -i https://example.com -oJعند استخدام علامة إخراج بدون ملف، تتم كتابة التقرير إلى stdout. تتم كتابة سطور الحالة ونص الشعار والأخطاء إلى stderr.
ملاحظة: للحصول على الدقة استخدم نوع المسح 'full' (الافتراضي). لا يستخدم 'fast' و 'balanced' محاكاة المتصفح.
-i: عنوان URL للإدخال أو ملف يحتوي على عناوين URL (واحد لكل سطر)--scan-type: نوع المسح (الافتراضي: 'full')
fast: مسح سريع يعتمد على HTTP (يرسل طلبًا واحدًا)balanced: مسح يعتمد على HTTP مع المزيد من الطلباتfull: مسح كامل باستخدام إضافة wappalyzer-w, --workers: عدد العمال المتزامنين (الافتراضي: 5؛ المسح الكامل محدود بـ 3)-t, --timeout: الحد الأقصى للثواني لانتظار تحميل الصفحة في المسح الكامل (الافتراضي: 30)-oJ [file]: مسار ملف الإخراج JSON، أو stdout عند حذف الملف أو تعيينه إلى --oC [file]: مسار ملف الإخراج CSV، أو stdout عند حذف الملف أو تعيينه إلى --oH [file]: مسار ملف الإخراج HTML، أو stdout عند حذف الملف أو تعيينه إلى مكتبة بايثون متاحة على pypi باسم wappalyzer ويمكن استيرادها بنفس الاسم.
استخدم Wappalyzer عند مسح أكثر من عنوان URL. يتم تشغيل المتصفح مرة واحدة، وإعادة استخدامه، وإغلاقه عند الخروج من كتلة with.
from wappalyzer import Wappalyzer
with Wappalyzer(workers=3, timeout=30) as scanner:
results = scanner.analyze_many([
'https://example.com',
'https://github.com',
'https://python.org',
])
for url, technologies in results.items():
print(url)
for name, data in technologies.items():
version = f" {data['version']}" if data['version'] else ""
print(f" {name}{version}")
يمكن للماسح نفسه أيضًا مسح عنوان URL واحد في كل مرة دون إعادة فتح Chromium:
from wappalyzer import Wappalyzer
with Wappalyzer(workers=3, timeout=30) as scanner:
github = scanner.analyze('https://github.com')
python = scanner.analyze('https://python.org')
بالنسبة لعنوان URL واحد، تكون analyze() أقصر. تنشئ ماسحًا خاصًا بها، وتجري مسحًا واحدًا، وتغلقه.
from wappalyzer import analyze
results = analyze(
url='https://example.com',
scan_type='full', # 'fast', 'balanced', or 'full'
cookie='sessionid=abc123',
timeout=30
)
لا تستدعي الدالة analyze() على المستوى الأعلى في حلقة للمهام الكبيرة. استخدم Wappalyzer.analyze_many() أو Wappalyzer.analyze() على ماسح مُعاد استخدامه حتى لا يتم إعادة تحميل Chromium وإضافة Wappalyzer لكل عنوان URL.
url (str): عنوان URL للتحليلscan_type (str, اختياري): نوع المسح المراد تنفيذه
'fast': مسح سريع يعتمد على HTTP'balanced': مسح يعتمد على HTTP مع المزيد من الطلبات'full': مسح كامل يتضمن تنفيذ JavaScript (الافتراضي)workers (int, اختياري): عدد عمال المتصفح لإنشائها للمسح الكامل (الافتراضي: 1)cookie (str, اختياري): سلسلة رأس الكوكي للمسح المعتمد على المصادقةtimeout (int, اختياري): الحد الأقصى للثواني لانتظار تحميل الصفحة في المسح الكامل (الافتراضي: 30)تُرجع قاموسًا بعنوان URL كمفتاح والتقنيات المكتشفة كقيمة:
{
"https://github.com": {
"Amazon S3": {
"version": "",
"confidence": 100,
"categories": ["CDN"],
"groups": ["Servers"]
},
"React Router": {
"version": "6",
"confidence": 100,
"categories": ["JavaScript frameworks"],
"groups": ["Web development"]
}
},
"https://example.com": {}
}
يقوم الماسح الكامل بتشغيل إضافة Wappalyzer في Chromium عبر Playwright. دعم إضافات Chromium في Playwright مباشر ولا يتطلب geckodriver أو Selenium.
--c, --cookie: سلسلة رأس الكوكي للمسح المعتمد على المصادقة