منصة عربية لفحص الروابط المشبوهة قبل فتحها
كاشف يجمع بين VirusTotal و urlscan.io والفحوصات المحلية، ثم يستخدم الذكاء الاصطناعي لتحويل الأدلة التقنية إلى تقرير واضح بالمصري.
تنبيه: كاشف أداة مساعدة للتوعية والتحليل، وليس بديلًا عن حلول الحماية الاحترافية أو رأي مختص أمني.
بدل فتح رابط غير موثوق على جهاز المستخدم، يمر الرابط داخل خط أنابيب أمني يجمع أدلة من أكثر من مصدر:
- التحقق من الرابط ومنع طلبات SSRF الخطرة.
- تحليل بنية الرابط باستخدام فحوصات محلية ثابتة.
- فحص سمعة الرابط عبر VirusTotal.
- إرسال الرابط إلى urlscan.io لزيارته داخل بيئة معزولة.
- جمع التحويلات، النطاق النهائي وبيانات الشبكة.
- حساب درجة الخطورة برمجيًا باستخدام Rule Engine.
- استخدام Groq لصياغة شرح مبسط للأدلة والنتيجة.
flowchart TD
A[رابط المستخدم] --> B[Validation + SSRF Protection]
B --> C[Local Heuristics]
B --> D[VirusTotal]
B --> E[urlscan Sandbox]
C --> F[Sanitized Telemetry]
D --> F
E --> F
F --> G[Deterministic Rule Engine]
G --> H[AI Explanation]
H --> I[Arabic Security Report]
- فحص حقيقي لسمعة الروابط باستخدام VirusTotal.
- فتح الرابط داخل Sandbox خارجي من خلال urlscan.io بدلًا من جهاز المستخدم.
- متابعة غير متزامنة لنتيجة الـSandbox بدون تعليق الطلب الأساسي.
- اكتشاف التحويل إلى نطاق أساسي مختلف.
- فحوصات محلية لـHTTP، خدمات اختصار الروابط، Punycode والكلمات الحساسة.
- درجة خطورة حتمية لا تعتمد على تخمين الـAI.
- تقرير مبسط باللهجة المصرية يشرح الأدلة والتوصية العملية.
- وضع Partial Scan عند تعذر إحدى خدمات الفحص، بدون اختراع نتائج.
- HMAC scan tokens لمنع التلاعب بالدرجة أو بيانات الفحص من المتصفح.
- Rate limiting للحد من إساءة الاستخدام واستهلاك حصص الـAPIs.
- Cache لمدة 15 دقيقة لتقليل الطلبات المتكررة.
- واجهة عربية RTL متجاوبة بطابع بصري مستوحى من ملفات التحقيقات الأمنية.
الذكاء الاصطناعي لا يحدد الدرجة. يتم حسابها داخل TypeScript بقواعد ثابتة وقابلة للاختبار، ثم يحصل الـAI على Telemetry منظّمة لشرح النتيجة فقط.
| المصدر | المثال | التأثير |
|---|---|---|
| VirusTotal | 5 محركات خبيثة أو أكثر | فرض خطورة مرتفعة |
| VirusTotal | محرك خبيث | +25 |
| VirusTotal | محرك مشبوه | +10 |
| urlscan | Verdict خبيث | فرض خطورة مرتفعة |
| Redirect | اختلاف النطاق الأساسي | +15 |
| Local | Punycode / Homograph indicator | +20 |
| Local | HTTP بدون تشفير | +15 |
| Local | خدمة اختصار روابط | +15 |
| Local | كلمات حساسة أو استعجال | +6 إلى +24 |
التصنيف النهائي:
0–34— غالبًا آمنsafe35–69— مشبوهsuspicious70–100— خطورة مرتفعةdangerous
| الجزء | التقنية |
|---|---|
| Frontend | Next.js App Router + React + TypeScript |
| Styling | CSS مخصص وواجهة RTL |
| Reputation Intelligence | VirusTotal API |
| Isolated URL Analysis | urlscan.io API |
| AI Explanation | Groq API |
| State Integrity | HMAC-SHA256 signed tokens |
| Tests | Node.js Test Runner |
app/
├── api/
│ └── url-intel/
│ ├── route.ts # يبدأ الفحص ويجمع الأدلة الأولية
│ ├── security.ts # إنشاء والتحقق من HMAC tokens
│ └── status/
│ └── route.ts # متابعة نتيجة urlscan وإكمال التقرير
├── globals.css # الهوية البصرية والـresponsive styles
├── layout.tsx
└── page.tsx # الواجهة، إدخال الرابط وعرض التقرير
tests/
└── threat-intel.test.mjs # اختبارات القواعد والحماية والكاش
- Node.js 20 أو أحدث.
- npm.
- مفاتيح API من VirusTotal وurlscan.io وGroq.
git clone https://github.com/ahmedfox1/kashif-ai
cd kashif-ainpm installأنشئ ملفًا باسم .env.local داخل مجلد المشروع:
VIRUSTOTAL_API_KEY=your_virustotal_api_key
URLSCAN_API_KEY=your_urlscan_api_key
GROQ_API_KEY=your_groq_api_key
# استخدم قيمة عشوائية طويلة ولا ترفعها إلى GitHub
SCAN_TOKEN_SECRET=replace_with_a_long_random_secretيمكنك توليد secret آمن بالأمر التالي:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"لا تضف
.env.localإلى Git، ولا تستخدم مفاتيح الـAPI داخل Client Components.
npm run devافتح http://localhost:3000 داخل المتصفح.
npm run dev # تشغيل بيئة التطوير
npm run lint # فحص جودة الكود
npm test # تشغيل اختبارات Threat Intelligence
npm run build # إنشاء Production Build
npm start # تشغيل نسخة الإنتاجPOST /api/url-intel
Content-Type: application/json{
"url": "https://example.com"
}يرجع المسار النتيجة الأولية، وحالة الخدمات، وscanToken موقّعًا إذا تم إطلاق مهمة urlscan.
POST /api/url-intel/status
Content-Type: application/json{
"token": "SIGNED_SCAN_TOKEN"
}لا يثق السيرفر في درجة أو نطاق مرسلين من المتصفح؛ جميع البيانات الحساسة تُستخرج من التوكن الموقّع ويُعاد التحقق منها على السيرفر.
يرفض كاشف، ضمن حالات الحماية، الروابط التي تستهدف:
localhostوعناوين loopback.- عناوين IPv4 وIPv6 الخاصة أو المحلية.
- نطاقات تحتوي على بيانات دخول مدمجة مثل
user:pass@host. - أهداف لا ينبغي لخدمة عامة الوصول إليها.
- لا يتم إرسال DOM أو محتوى الصفحة الخام إلى الموديل.
- يحصل الموديل فقط على حقول Telemetry محددة ومنظّفة.
- القواعد البرمجية هي المصدر الوحيد للدرجة والتصنيف.
- عند فشل الموديل، يستمر النظام بتقرير احتياطي مبني على الأدلة.
- حتى 15 طلب فحص في الدقيقة لكل IP.
- حتى 40 طلب متابعة حالة في الدقيقة لكل IP.
تُحفظ Telemetry مؤقتًا لمدة 15 دقيقة لتقليل استهلاك حصص VirusTotal وurlscan وGroq.
التنفيذ الحالي داخل الذاكرة مناسب للتطوير أو نسخة تعمل على process واحد. عند النشر الأفقي أو Serverless متعدد النسخ، استخدم مخزنًا مشتركًا مثل Redis للحفاظ على اتساق الـcache والـrate limiting.
يغطي جناح الاختبارات:
- قواعد VirusTotal وurlscan.
- تصنيف الدرجات وحدود الخطورة.
- اكتشاف اختلاف Registrable Domain.
- التعامل الصحيح مع النطاقات الفرعية وامتدادات مثل
.com.egو.co.uk. - فحوصات Punycode وHTTP واختصار الروابط.
- دورة حياة HMAC token ورفض التلاعب.
- حماية SSRF.
- Rate limiting والـcache.
لتشغيل الاختبارات:
npm testالنتيجة الحالية: 11/11 اختبارات ناجحة.
- قد يتم إرسال الرابط إلى VirusTotal وurlscan.io لإتمام الفحص.
- لا ترسل روابط داخلية، سرية، مؤقتة أو تحتوي على tokens وبيانات حساسة.
- راجع إعدادات الرؤية وسياسات الخصوصية وحدود الاستخدام لدى مزودي الخدمة قبل النشر العام.
- لا تستخدم المشروع لفحص أنظمة لا تملكها أو لا تملك تصريحًا لاختبارها.
المساهمات مرحب بها:
- أنشئ Fork للمستودع.
- أنشئ branch جديدًا:
git checkout -b feature/my-feature. - أضف اختبارات للتغيير عند الحاجة.
- شغّل
npm test && npm run lint && npm run build. - افتح Pull Request يشرح المشكلة والحل.
تم تصميم وبناء كاشف بواسطة Ahmed Sameh.
إذا أعجبك المشروع، ضع ⭐ للمستودع وشارك الفيديو مع شخص تصله روابط مشبوهة باستمرار.
افحص قبل ما تضغط.