اعرف اللي قصادك. احمي أرضك.

httpx

أداة فحص بروتوكول HTTP متعددة الأغراض، تعمل على تحديد الحالات النشطة واستخراج عناوين الصفحات والتقنيات المستخدمة ورموز الحالة والمنافذ المفتوحة.

هجوممفتوحة المصدرLinuxmacOSWindows
github.com/projectdiscovery/httpx

httpx — الدليل الشامل لمسبار الويب المتعدد

تُعد أداة httpx (من تطوير ProjectDiscovery، وهي ليست مكتبة بايثون التي تحمل الاسم نفسه) بمثابة "السكين السويسري" لفحص بروتوكول HTTP. تقوم الأداة باستقبال قائمة من المضيفات (Hosts) أو الروابط (URLs) وتعيد بيانات غنية لكل منها: الحالة، العنوان (Title)، التقنيات المستخدمة، عنوان IP، الشهادات الرقمية، المنافذ، طول المحتوى، التحويلات، وغيرها الكثير.

التثبيت (Install)

$ go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
$ brew install httpx

[!warning] تنبيه: هناك أداتان باسم "httpx" مكتبة httpx الخاصة بلغة Python هي بديل لمكتبة requests؛ أما httpx الخاصة بـ ProjectDiscovery فهي أداة سطر أوامر (CLI). يتشاركان الاسم نفسه، وقد استغل البعض هذا للتمويه — تأكد من مسار الأداة عبر أمر which httpx؛ يجب أن يشير إلى ملف Go ثنائي، وليس إلى مسار بايثون المحلي.

مرجع المعاملات (Parameter reference)

المدخلات (Input)

الوسمالغرض
-l <file>قائمة الأهداف (هدف واحد لكل سطر)
-u <url>رابط واحد فقط
stdinاستقبال البيانات عبر الأنابيب من subfinder أو amass

عمليات الفحص (Probing)

الوسمالغرض
-ports <list>فحص هذه المنافذ (الافتراضي 80, 443)
-x <methods>طرق HTTP المستخدمة (GET, POST, OPTIONS)
-follow-redirectsتتبع عمليات إعادة التوجيه (3xx)
-max-redirects <n>تحديد أقصى عمق لإعادة التوجيه
-timeout <sec>مهلة الطلب الواحد بالثواني
-rl <int>تحديد معدل الطلبات العالمي (طلب/ثانية)
-t <int>عدد الخيوط (Threads) (الافتراضي 50)

تفاصيل المخرجات (Output detail)

الوسمالإضافة البرمجية
-titleعنوان الصفحة <title>
-tech-detectبصمة التقنيات المستخدمة (مثل Wappalyzer)
-status-codeرمز حالة HTTP
-content-lengthحجم جسم الاستجابة
-serverترويسة الخادم (Server header)
-faviconهاش mmh3 للأيقونة المفضلة (Favicon)
-jarmبصمة JARM TLS
-ipعنوان IP المستخرج
-cdnتحديد مزود خدمة الـ CDN
-tls-grabاستخراج تفاصيل الشهادة الرقمية

تنسيق المخرجات (Output format)

الوسمالغرض
-o <file>نص عادي
-jsonسطر JSON واحد لكل مضيف
-csvملف CSV
-silentوضع الصمت (بدون شعار الأداة)

التصفية (Filtering)

الوسمالغرض
-mc <codes>مطابقة رموز الحالة (200,301)
-fc <codes>تصفية (استبعاد) رموز الحالة
-ml <int>مطابقة عدد الأسطر
-ms <regex>مطابقة نص محدد في جسم الاستجابة
-cdn/-no-cdnالتصفية بناءً على وجود خدمة CDN من عدمها

سيناريوهات العمل (Workflows)

إيجاد المضيفات النشطة بعد تعداد النطاقات الفرعية

$ subfinder -d target.gov -silent | httpx -silent -title -tech-detect -status-code

فحص منافذ إضافية غير اعتيادية

$ cat hosts.txt | httpx -silent -ports 80,81,443,3000,3001,5000,8080,8443,9000,9200

التتبع عبر أيقونة الموقع (Favicon) لاكتشاف لوحات التحكم المسربة

# الحصول على هاش Favicon للوحة تحكم معروفة:
$ curl -s https://known-panel.example/favicon.ico | python3 -c "import mmh3,sys,base64;print(mmh3.hash(base64.encodebytes(sys.stdin.buffer.read())))"
# البحث عنها في القائمة الخاصة بك:
$ httpx -l ips.txt -favicon -mfc 1234567890

إزالة التكرار للصفحات المتشابهة

$ httpx -l urls.txt -hash sha256 -silent -o hashed.txt
$ sort -k2 hashed.txt | awk '!seen[$2]++'

تحليل النتائج

https://api.target.gov [200] [API Gateway] [nginx/1.21] [13.59.234.10] [AS16509]
https://staging.target.gov [403] [WordPress 5.8]
https://vpn.target.gov [200] [Fortinet SSL VPN] [Fortinet]
https://old.target.gov [301] -> https://new.target.gov [200]

يُفضل دائماً استخدام تنسيق JSON عند ربط النتائج بأدوات أخرى، حيث يتحول كل عمود أعلاه إلى حقل (Field) داخل الكائن.

تشخيص الأخطاء الشائعة (Troubleshooting)

العرضالسببالحل
ظهور رسائل i/o timeout بكثرةوجود WAF يحظر عنوان IP الخاص بكقلل معدل الطلبات -rl؛ استخدم بروكسي
عدم ظهور التقنيات (Tech detect)عدم تفعيل الوسم أو تجريد HTMLتأكد من إضافة -tech-detect؛ بعض المواقع تحتاج لـ katana لتصيير JS
تكرار المضيف نفسه 10 مراتالقائمة تحتوي على تكرارمرر القائمة عبر sort -u أولاً
رمز الحالة 000فشل في مصافحة TLS (بروتوكول قديم أو شهادة ذاتية)أضف -tls-grab لمعرفة السبب؛ جرب -disable-redirects

منظور المدافع (Defender's perspective)

يعتبر نشاط الأداة فحصاً نشطاً (Active Scan)، وسيظهر في سجلات الوصول كالتالي:

  • موجات من طلبات HEAD/GET للمسار الرئيسي / من IP واحد.
  • ترويسة User-Agent الافتراضية: Mozilla/5.0 (compatible; httpx) (سهلة الاكتشاف جداً).
  • محاولات اتصال TLS بمنافذ غير معتادة (-ports 8080, 8443).

أفكار للاكتشاف:

  • مطابقة سلسلة الـ UA الخاصة بـ httpx في أنظمة الحماية.
  • التنبيه عند رصد أنماط التعداد: قيم SNI متتابعة وسريعة من عنوان IP واحد.

ملاحظات أمن العمليات (OPSEC)

  • الـ User-Agent الافتراضي يصرخ "أنا أداة فحص". استخدم -H "User-Agent: Mozilla/5.0 ..." للتمويه.
  • قم بتشغيل الفحص من عناوين IP نظيفة؛ بمجرد وسم عنوانك كخبيث، ستقوم خدمات مثل Cloudflare بتعميم هذا الحظر.
  • في المهمات الحساسة، استخدم معدل طلبات هادئ مثل -rl 50 مع -t 50 بدلاً من القيم الافتراضية العالية.

أدوات ذات صلة

الأداةالتخصص
katanaزاحف ويب (Crawler) يدعم JavaScript من المطور نفسه
gowitnessلإضافة لقطات شاشة (Screenshots) للنتائج
nucleiلفحص الثغرات بناءً على القوالب بعد إيجاد المضيفات النشطة
ffufلفحص المسارات (Dirbusting) بعد تحديد المضيف النشط