
urx v0.11.0
استخراج عناوين URL من أرشيفات OSINT للحصول على رؤى أمنية
يستخرج عناوين URL من أرشيفات OSINT للحصول على رؤى أمنية.
Urx هي أداة سطر أوامر مصممة لجمع عناوين URL من أرشيفات OSINT، مثل Wayback Machine وCommon Crawl. بُنيت بلغة Rust لتحقيق الكفاءة، وتستفيد من المعالجة غير المتزامنة للاستعلام بسرعة عن مصادر بيانات متعددة. تُبسّط هذه الأداة عملية جمع معلومات عناوين URL لنطاق محدد، مما يوفر مجموعة بيانات شاملة يمكن استخدامها لأغراض متنوعة، بما في ذلك اختبار الأمان والتحليل.
الميزات
- جلب عناوين URL من مصادر متعددة بالتوازي (Wayback Machine، Common Crawl، OTX، Arquivo.pt)
- إمكانية توصيل أي خادم فهرس CDX آخر — أرشيفات الويب الوطنية، pywb خاص، OutbackCDX — باستخدام
--cdx-endpoint URL، دون الحاجة إلى تغيير الكود - بدون مفاتيح افتراضيًا: تعمل Wayback وCommon Crawl وOTX وArquivo.pt وURLScan (المجهول) جميعها دون مفتاح API
- مزوّد BeVigil: عناوين URL مستخرجة من تطبيقات Android غير المحزومة — نقاط نهاية لم يزحف إليها أي أرشيف ويب قط
- تدوير مفاتيح API لكل مزوّد يعتمد على المفاتيح (VirusTotal، URLScan، ZoomEye، GitHub، BeVigil) للتخفيف من حدود المعدل
- اختبار موثّق: تُطبَّق
-Hو--cookieو--user-agentعلى كل طلب يرسله urx إلى الهدف (--check-status،--extract-links،--extract-js-endpoints،--expand-specs، وفحوصاتrobots/sitemap) ولا تُرسَل عمدًا إلى أي أرشيف - تصفية النتائج حسب امتدادات الملفات، أو أنماط السلاسل الفرعية، أو التعبيرات النمطية الكاملة (
--match-regex/--filter-regex) - إعدادات مسبقة محددة، سواء حسب عائلة الملفات ("no-images"، "only-js") أو حسب الاهتمام الأمني ("only-secrets"، "only-backup"، "only-config"، "only-api")
- التصفية من جهة الأرشيف: دفع رمز الحالة ونوع MIME ونطاق التاريخ إلى استعلام CDX نفسه، بحيث لا تعبر اللقطات المُصفّاة الشبكة أبدًا
- تصفية البيانات الوصفية من جهة العميل (
--meta-*): التصفية حسب تاريخ أول/آخر لقطة، ونوع MIME المسجّل، والحالة المسجّلة بشكل موحّد عبر كل مزوّد، بعد الجمع - أهداف محددة النطاق بالمسار: يدفع
urx example.com/shopالنطاق إلى استعلام CDX نفسه (url=example.com/shop*)، بحيث تكلّف شجرة فرعية من موقع كبير جزءًا بسيطًا من الفهرس الكامل بدلًا من تصفيتها من جهة العميل - ملفات نطاق مكافآت الثغرات (
--scope-file): قائمة البرنامج الخاصة*.example.com/!admin.example.comتُستخدم حرفيًا، قابلة للتكرار ومُدمَجة، مع فوز الاستثناءات دائمًا - تطبيع عناوين URL وإزالة التكرار: ترتيب معاملات الاستعلام، وإزالة الشرطات المائلة اللاحقة، ودمج عناوين URL المتطابقة دلاليًا، وطيّ شبه المكررات التي تختلف فقط في المعرّفات أو التجزئات أو التواريخ (
--dedup-similar) - دعم صيغ إخراج متعددة: نص عادي، JSON، JSON Lines، CSV، و
wordlist— مقاطع المسار وأسماء المعاملات التي بُني منها الهدف، مع استبعاد المعرّفات والتجزئات والتواريخ - عروض المعاملات والتشويش:
--params(جرد معاملات الهدف بالكامل)، و--params-by-endpoint(أي نقطة نهاية تأخذ ماذا)، و--fuzz-placeholder FUZZ(عنوان URL واحد بقوالب لكل توقيع معامل، جاهز لـ ffuf أو dalfox) - بيانات وصفية للقطات الأرشيف: تعود
first_seenوlast_seenوmimeوarchive_statusوdigestمع كل عنوان URL أبلغ عنه أرشيف CDX، دون تكلفة شبكة إضافية - إخراج متدفق (
--stream): تُكتب عناوين URL عند إبلاغ كل مزوّد عنها، بحيث يبدأ خط الأنابيب العمل فورًا بدلًا من انتظار أبطأ أرشيف - دعم إدخال الملفات المباشر: قراءة عناوين URL مباشرة من ملفات WARC، وملفات URLTeam المضغوطة، والملفات النصية
- إخراج النتائج إلى الطرفية أو ملف، أو التدفق عبر stdin لتكامل خطوط الأنابيب
- اختبار عناوين URL:
- تصفية والتحقق من عناوين URL بناءً على رموز حالة HTTP والأنماط.
- استخراج روابط إضافية من عناوين URL المجمّعة — المراسي، والسكربتات، وأوراق الأنماط، وإجراءات النماذج، والإطارات المضمنة، والصور، ومصادر الوسائط، والكائنات، والتضمينات، وأهداف meta-refresh
- استخراج أجسام الاستجابات المؤرشفة لعناوين URL المجمّعة (
--archive-body)، بحيث لا تزال الصفحات التي لم تعد موجودة تُسلّم الروابط التي احتوتها — طلب واحد لكل جسم مميز، بفضل إزالة تكرار digest في CDX - مع
--extract-js-endpoints، استخراج JavaScript المؤرشف أيضًا: حزمة مسماة بتجزئة البناء تُرجع 404 لحظة إعادة نشر الموقع، والأرشيف هو المكان الوحيد الذي لا يزال سطح API الخاص بها موجودًا فيه - الاحتفاظ بالأجسام المُعاد تشغيلها (
--archive-body-dir) كمجموعة للبحث عن ما لا يبحث عنه أي مستخرج روابط — تعليقات المطورين، وبيانات الاعتماد المضمّنة، وأسماء المضيفين الداخلية — دون طلبات إضافية - توسيع مواصفات API (
--expand-specs): مستندات OpenAPI 3.x وSwagger 2.0 واستقصاء GraphQL، بصيغة JSON أو YAML، تُحوَّل إلى كل مسار تصفه — طلب واحد يشتري السطح الموثّق بالكامل - بيانات وصفية للاستجابة: يسجّل
--check-statusأيضًاLocationوContent-LengthوContent-Type، ويضيف--check-titleوسم HTML<title>
- اكتشاف robots.txt وsitemap.xml المؤرشفين (
--archived-discovery): كل نسخة مميزة يحتفظ بها Wayback Machine، بحيث لا يزالDisallow:من عام 2015 يسمّي المسارات التي توقف الموقع عن ذكرها منذ ذلك الحين - التخزين المؤقت والفحص التدريجي:
- تخزين مؤقت محلي بـ SQLite أو بعيد بـ Redis لتجنب إعادة فحص النطاقات (يحتاج Redis إلى بناء بـ
--features redis-cache؛ البُنى المُحزَّمة تستبعده) - وضع تدريجي لاكتشاف عناوين URL الجديدة فقط منذ آخر فحص
- مدة صلاحية قابلة للتهيئة للتخزين المؤقت؛ يمسح كل فحص الإدخالات الأقدم من ضعف مدة الصلاحية، ويزيل
urx cache pruneأي شيء يتجاوزها - أمر فرعي
urx cacheلفحص التخزين المؤقت وصيانته:stats،list،prune،drop <domain>،clear
- تخزين مؤقت محلي بـ SQLite أو بعيد بـ Redis لتجنب إعادة فحص النطاقات (يحتاج Redis إلى بناء بـ

التثبيت
من Cargo
# https://crates.io/crates/urx
cargo install urx
من Homebrew
# https://formulae.brew.sh/formula/urx
brew install urx
من المصدر
git clone https://github.com/hahwul/urx.git
cd urx
cargo build --release
سيكون الملف التنفيذي المُجمَّع متاحًا في target/release/urx.
من Docker
docker pull ghcr.io/hahwul/urx:latest
# the image has no entrypoint, so name the binary before its arguments
docker run --rm ghcr.io/hahwul/urx:latest ./urx example.com
من AUR
yay -S urx
من Chocolatey (ويندوز)
choco install urx
من إصدارات GitHub
الملفات التنفيذية الجاهزة لأنظمة Linux وmacOS وWindows (كل منها مرفق بملف .sha256)
مرفقة بكل إصدار.
إكمال الصدفة
يقوم urx بإنشاء نص الإكمال الخاص به، لذا فهو يتطابق دائمًا مع أعلام
الملف التنفيذي المثبّت لديك فعليًا.
# zsh — any directory on your $fpath works
urx --completions zsh > ~/.zfunc/_urx
# (make sure ~/.zfunc is on the fpath, then `compinit`)
# bash
urx --completions bash > ~/.local/share/bash-completion/completions/urx
# fish
urx --completions fish > ~/.config/fish/completions/urx.fish
powershell و elvish مدعومان أيضًا. لا يحتاج العلم إلى نطاق هدف.
صفحة الدليل
urx --manpage > ~/.local/share/man/man1/urx.1
man urx