
أداة استخبارات مفتوحة المصدر تكتشف انتحال النطاق، وانتحال الأخطاء المطبعية، ومواقع التصيد المشابهة من خلال مراقبة النطاقات المسجلة حديثًا مقابل كلمات مفتاحية للعلامات التجارية مع التحقق عبر DNS وVT.
openSquat هي أداة أمنية لـ استخبارات المصادر المفتوحة (OSINT) تحدد تهديدات الاحتيال السيبراني التي تستهدف علامتك التجارية أو نطاقاتك:
"سكين سويسري قوي لحماية العلامة التجارية" — مدونة WhoisXML API، أغسطس 2022
"أداة ذات قوة هائلة لمكافحة التصيد الإملائي وجميع أنواع الأذى السيبراني ذات الصلة." — مدونة WhoisXML API، أغسطس 2022
"أداة مفيدة لجمع المعلومات حول النطاقات المسجلة حديثًا." — حصلت على المرتبة 5 ضمن أفضل أدوات كشف التصيد — مدونة SOCRadar، يوليو 2022
"يوفر openSquat حماية أساسية ضد هجمات احتلال النطاق والتصيد من خلال المراقبة والكشف الآلي." — برنس ياداف، TutorialsPoint، مارس 2026
"حدد OpenSquat 103 نطاقًا محتلاً، و960 موقع تصيد نشط، و53 نطاقًا بشهادات مشبوهة." — شارما وآخرون، مجلة أمن المعلومات وجرائم الفضاء الإلكتروني (JISCR)، المجلد 7، العدد 1، يونيو 2024
يتبع openSquat نموذج النواة المفتوحة:
يتيح هذا النموذج الشفافية والتعاون المجتمعي مع دعم متطلبات النطاق والموثوقية والتشغيل للاستخدام المؤسسي.
pip install opensquat
opensquat -k keywords.txt
git clone https://github.com/atenreiro/opensquat
cd opensquat
pip install -r requirements.txt
python3 opensquat.py -k keywords.txt
مستخدمو المستودع: في جميع الأمثلة أدناه، استبدل
opensquatبـpython3 opensquat.pyللتشغيل من النسخة المستنسخة.
confusable_homoglyphs، homoglyphs، colorama، requests، dnspython، beautifulsoup4# التشغيل الافتراضي
opensquat
# عرض جميع الخيارات
opensquat -h
# استخدام ملف كلمات مفتاحية مخصص
opensquat -k my_keywords.txt
# التحقق من DNS عبر Quad9
opensquat --dns
# فحص سجلات شفافية الشهادات
opensquat --ct
# مسح المنافذ المفتوحة (80/443)
opensquat --portcheck
# المقارنة مع قواعد بيانات التصيد
opensquat --phishing results.txt
# حفظ بصيغة JSON
opensquat -o results.json -t json
# حفظ بصيغة CSV
opensquat -o results.csv -t csv
ملاحظة: في جانب API (
--api)، تُرسم مستويات الثقة الخمسة إلى أربع قيم ضبابية (exact،low،auto،high) — يتم رسم-c 3و-c 4إلىhigh. راجع الوضع المميز ووضع API للرسم الكامل وكيفية التجاوز باستخدام--api-fuzziness.
يدعم openSquat ثلاثة أوضاع. الوضع الافتراضي (المجتمعي) لم يتغير — لا يحتاج المستخدمون الحاليون إلى أية أعلام. يشترك الوضعان المميزان في مفتاح API واحد من openSquat؛ اختر التغذية المميزة إذا كنت تريد نفس خط أنابيب الكشف المحلي مع تغذية أكبر، أو API المميز إذا كنت تريد الكشف من جانب الخادم بدون تنزيل تغذية محلية.
سجل في opensquat.com للحصول على مفتاح. نفس المفتاح يعمل مع كل من التغذية المميزة (--premium) وAPI المميز (--api).
--api-key YOUR_KEY في سطر الأوامرOPENSQUAT_API_KEYapi_key.txt في الدليل الحالي (مفتاح واحد لكل ملف، التعليقات بـ # مسموحة)العلم في سطر الأوامر مرئي في مخرجات
ps. يُفضل استخدام متغير البيئة أو ملف المفتاح في البيئات المشتركة.
# وضع التغذية المميزة — نفس خط الأنابيب المحلي، تغذية أكبر
export OPENSQUAT_API_KEY=os_xxxxxxxxxxxx
opensquat -k keywords.txt --premium
# وضع API المميز — كشف من جانب الخادم لكل كلمة مفتاحية
opensquat -k keywords.txt --api
# API المميز + التحقق من سمعة DNS لكل نطاق تم إرجاعه
opensquat -k keywords.txt --api --dns
# API المميز مع إخراج JSON مجمع حسب الكلمة المفتاحية
opensquat -k keywords.txt --api -t json -o results.json
# ضبط بحث API المميز
opensquat -k keywords.txt --api --api-fuzziness high --api-history-days 7 --api-max-results 200
عند تحميل المفتاح بنجاح مع --premium أو --api، يقوم CLI بطباعة سطر تأكيد مقنع حتى تتمكن من التحقق من المفتاح الذي تم التقاطه دون تسريبه:
[*] تم تحميل مفتاح API: os_gL...L5Mb
في وضع API المميز، يُبلغ ملخص التشغيل عن الوضع النشط وعدد استدعاءات API التي تم إجراؤها ورصيدك المتبقي مع فرق الاستخدام (على سبيل المثال، 4972 (استخدم 4 من 4976 في هذا التشغيل)). تظهر خطوط التقدم لكل كلمة مفتاحية بنفس الترتيب الموجود في ملف الكلمات المفتاحية حتى لو تم تشغيل الاستدعاءات بالتوازي. يعالج استنفاذ الحصة (HTTP 429) النتائج الجزئية بلطف؛ توقف أخطاء المصادقة (401) وأخطاء الخطة (403) مع رسالة واضحة.
إذا قام الخادم الخلفي بتحديد معدل طلبك (HTTP 429 مع رأس Retry-After)، فإن الأداة تميزه عن استنفاذ الحصة: سترى تحذيرًا أصفر [!] تم الوصول إلى حد المعدل (إعادة المحاولة بعد Ns) بدلاً من رسالة استنفاذ الحصة الحمراء، ولا تزال النتائج الجزئية تُعاد، ويحتفظ الملخص برصيد API الحقيقي الخاص بك حتى تتمكن من رؤية عدد الرصيد المستخدم بالفعل. لتجنب تشغيل حدود المعدل في عمليات الفحص الكبيرة، مرر --api-rate-limit N للحد من الطلبات الصادرة في الثانية عبر جميع العمال. قيمة 8 هي نقطة بداية آمنة لمعظم الخوادم الخلفية.
# تقييد إلى 8 طلبات/ثانية عبر جميع العمال
opensquat -k keywords.txt --api --api-rate-limit 8
يُوصى باستخدام JSON كتنسيق إخراج لوضع API المميز لأن API يُرجع بيانات وصفية لكل نطاق لا يمكن للتنسيقات الأخرى حملها بشكل نظيف: TLD المسجل، تاريخ الظهور الأول لـ NRD، علامة تشابه IDN، وعرض unicode للتشابه عندما يكون النطاق كذلك.
opensquat -k keywords.txt --api -t json -o results.json
مثال على الإخراج الأغنى في وضع API المميز (مختصر):
[
{
"keyword": "microsoft",
"domains": [
{"domain": "securite-microsoft.fr", "tld": "fr", "date": "09-04-2026", "idn": false},
{"domain": "xn--mirosoft-hw7c.com", "tld": "com", "date": "09-04-2026", "idn": true, "unicode": "miᴄrosoft.com"}
]
}
]
العلم idn بالإضافة إلى عرض unicode يتيح لك رؤية في لمحة أن xn--mirosoft-hw7c.com هو في الواقع ᴄ (حرف لاتيني صغير كبير C) يتنكر في هيئة c في "microsoft" — معلومات يخفيها نص punycode العادي تمامًا.
إخراج CSV مدعوم أيضًا وينتج صفًا واحدًا لكل نطاق مع نفس أعمدة البيانات الوصفية، مما يناسب المحللين الذين يعملون في Excel أو pandas:
opensquat -k keywords.txt --api -t csv -o results.csv
يُكتب CSV مع BOM من UTF-8 بحيث يعرض Excel على Windows عمود unicode homograph بشكل صحيح.
تخرج أوضاع المجتمع والتغذية المميزة نفس الشكل الأعلى لـ JSON لتحقيق الاتساق عبر الأوضاع، ولكن مع ملء حقل domain فقط لكل إدخال — لا تحمل تغذية NRD البيانات الوصفية لكل نطاق التي يمتلكها API المستضاف فقط:
[
{
"keyword": "microsoft",
"domains": [
{"domain": "mirosoft.com"},
{"domain": "mcrosoft.net"}
]
}
]
إذا مررت --api-key دون اختيار --premium أو --api أيضًا، يطبع CLI تلميحًا من سطر واحد بأن المفتاح سيتم تجاهله في الوضع المجتمعي (بدون تبديل الوضع الصامت).
في وضع API المميز، يتم رسم -c/--confidence تلقائيًا إلى ضبابية API (0→exact، 1→low، 2→auto، 3→high، 4→high). استخدم --api-fuzziness للتجاوز.
API المميز (--api) غير متوافق مع --doppelganger و -d/--domains.
keywords.txt)# الأسطر التي تبدأ بـ # هي تعليقات
mycompany
mybrand
myproduct
vt_key.txt)لاستخدام --vt أو --subdomains، أضف مفتاح API الخاص بك:
# احصل على مفتاح API مجاني من https://www.virustotal.com
your_api_key_here
api_key.txt)مطلوب لـ --premium و --api. أنشئ ملف api_key.txt في دليل العمل:
# احصل على مفتاحك من https://opensquat.com
# الأسطر التي تبدأ بـ # يتم تجاهلها؛ يُستخدم أول سطر غير تعليق.
os_your_key_here
يحل CLI المفتاح بهذا الترتيب: علم --api-key ← متغير البيئة $OPENSQUAT_API_KEY ← ملف api_key.txt. تُفضل طرق متغير البيئة والملف على علم CLI في البيئات المشتركة، لأن وسائط CLI مرئية عبر ps.
تشغيل يوميًا عبر crontab:
# مثبت عبر pip (موصى به) — كل يوم في الساعة 8 صباحًا، تتحديث التغذية حوالي الساعة 7:30 صباحًا UTC
0 8 * * * cd /path/to/workdir && opensquat -k keywords.txt -o results.json -t json
# نسخة المستودع — استدعاء opensquat.py مباشرة مع python3
0 8 * * * cd /path/to/opensquat && python3 opensquat.py -k keywords.txt -o results.json -t json
أمر
cdإلى دليل العمل مهم إذا كنت تعتمد علىapi_key.txt(يتم حله من الدليل الحالي) أو تريد كتابةresults.jsonفي مكان محدد.
نرحب بالمساهمات! راجع دليل المساهمة للحصول على التفاصيل.
Andre Tenreiro — LinkedIn · مفتاح PGP
هذا المشروع مرخص بموجب GNU GPL v3.
| نوع التهديد | الوصف |
|---|
| 🎣 التصيد | نطاقات احتيالية تحاكي علامتك التجارية |
| 🔤 التصيد الإملائي | نطاقات تحتوي على أخطاء إملائية شائعة (مثل gooogle.com) |
| 🌐 التشابه في IDN | أحرف متشابهة من أبجديات أخرى |
| 👥 المزدوج | نطاقات تحتوي على اسم علامتك التجارية |
| 🔀 التصيد البتّي | أخطاء بت واحدة في أسماء النطاقات |
| المستوى | العلم | الوصف |
|---|
| 0 | -c 0 | عالٍ جدًا (نتائج أقل، دقة عالية) |
| 1 | -c 1 | عالٍ (افتراضي) |
| 2 | -c 2 | متوسط |
| 3 | -c 3 | منخفض |
| 4 | -c 4 | منخفض جدًا (نتائج أكثر، إيجابيات كاذبة أكثر) |
| الوضع | العلم | ما يفعله |
|---|
| المجتمعي (افتراضي) | (لا شيء) | تنزيل تغذية NRD المجانية (~100 ألف نطاق/يوم) وتشغيل كشف ليفنشتاين محليًا. |
| التغذية المميزة | --premium | تنزيل تغذية NRD المدفوعة (nrd-lite، أكبر بكثير) باستخدام مفتاح openSquat API الخاص بك، ثم تشغيل نفس كشف ليفنشتاين المحلي. |
| API المميز | --api | تخطي تنزيل التغذية المحلية. الاستعلام عن REST API للتشابه من openSquat لكل كلمة مفتاحية وإرجاع التطابقات من جانب الخادم. |
| الوسيطة | الافتراضي | الوصف |
|---|
-k, --keywords | keywords.txt | ملف الكلمات المفتاحية للبحث |
-o, --output | results.txt | اسم ملف الإخراج |
-t, --type | txt | تنسيق الإخراج: txt، json، csv |
-c, --confidence | 1 | مستوى الثقة (0-4). في وضع --api يتم رسمه تلقائيًا إلى الضبابية (كل من -c 3 و -c 4 → high). |
-d, --domains | — | استخدام ملف نطاقات محلي بدلاً من التنزيل |
-u, --url | تغذية opensquat | عنوان URL لتنزيل تغذية النطاقات |
--dns | — | تمكين التحقق من DNS عبر Quad9 |
--doppelganger | — | وضع المزدوج فقط (الكلمة المفتاحية في النطاق + فحص الوصول) |
--ct | — | البحث في سجلات شفافية الشهادات |
--phishing | — | المقارنة مع قاعدة بيانات التصيد |
--subdomains | — | جلب النطاقات الفرعية عبر VirusTotal |
--portcheck | — | فحص المنافذ المفتوحة 80/443 |
--vt | — | التحقق من VirusTotal |
--premium | — | وضع التغذية المميزة — استخدام تغذية NRD المدفوعة (يتطلب مفتاح openSquat API) |
--api | — | وضع API المميز — الاستعلام عن REST API للتشابه من openSquat لكل كلمة مفتاحية (بدون تغذية محلية) |
--api-key | — | مفتاح openSquat API (أو تعيين $OPENSQUAT_API_KEY، أو استخدام api_key.txt) |
--api-fuzziness | (من -c) | وضع API المميز: exact، low، high، أو auto |
--api-history-days | — | وضع API المميز: نافذة سجل NRD بالأيام (مقطوعة إلى سقف الخطة) |
--api-max-results | — | وضع API المميز: أقصى عدد من النتائج لكل كلمة مفتاحية (مقطوعة إلى سقف الخطة) |
--api-rate-limit | (غير محدود) | وضع API المميز: أقصى عدد من الطلبات الصادرة في الثانية عبر جميع العمال |