Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/ivankovic/stop-bots
أدوات دفاعيةتدقيق التكوينجمع المعلوماتأمن الويبأمن الشبكاتالأدوات والمكوناتكشف التسللمكافحة الروبوتاتتحليل السجلات
GitHubivankovic/stop-bots

stop-bots

أتمتة إيقاف الروبوتات الضارة من الوصول إلى خادمك

12منذ يوم واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع

إيقاف الروبوتات

CI crates.io Coverage MSRV License: AGPL v3+

واجهة مستخدم طرفية (TUI)، وواجهة ويب، وواجهة سطر أوامر (CLI) تساعدك على تهيئة خادمك لإيقاف الروبوتات الضارة دون الاختباء خلف شبكة توصيل المحتوى (CDN).

يعمل جنبًا إلى جنب مع NGINX وجدار الحماية الحالي لديك (iptables أو nftables)، على مستويين منفصلين:

  • تهيئة NGINX. - يصنّف الروبوتات المعروفة حسب الفئة (الماسحات الضوئية، محركات البحث، زواحف الذكاء الاصطناعي) ويحجبها أو يسمح بها عن طريق حقن قاعدة في تهيئات موقعك. يفحص سجل NGINX للكشف عن الروبوتات ديناميكيًا وحجبها حتى لو لم تكن هناك أي مجموعة قواعد تتعقبها بعد.
  • نص برمجي لجدار الحماية. - احجب دولًا بأكملها، أو نطاقات عناوين IP لمراكز البيانات، أو نطاقات عناوين IP لروبوتات معروفة، أو أي عنوان IP يحاول تسجيل الدخول إلى خادمك بشكل متكرر دون نجاح.

لوحة تحكم stop-bots: فئات الروبوتات على مستوى النظام، والحجب الجغرافي، والكاشفات التلقائية، والمهمة المجدولة الداخلية

يبذل التطبيق قصارى جهده لعدم إغلاق الخادم في وجهك، لكنك تستخدمه على مسؤوليتك الخاصة. ولاحظ أنه مرخّص بموجب AGPL، لذا إذا كنت تستخدمه تجاريًا، فتأكد من الالتزام الحرفي بشروط الترخيص.

التثبيت

من crates.io:``` cargo install stop-bots

root@kitploit:~
أو البناء من نسخة مستخرجة:```
cargo install --path .

يتوفر ملف ثنائي x86_64 جاهز لنظام Linux على إصدارات GitHub.

المتطلبات

يتطلب Rust 1.88 أو أحدث للبناء. Linux فقط عملياً: فهو يستدعي systemctl وnginx -t وnft/iptables، لذا بينما يُترجم في أماكن أخرى لن يكون ذا فائدة كبيرة هناك.

الاستخدام

شغّل الملف الثنائي بدون وسائط لتشغيل واجهة TUI، أو stop-bots web لنفس الشاشات في متصفح (انظر واجهة الويب)، أو انظر stop-bots --help للحصول على القائمة الكاملة لأوامر CLI الفرعية. يمكن استخدام TUI وCLI معاً. اضبط كل شيء في TUI ثم استخدم CLI في crontab لإبقاء القواعد محدّثة.

يمكنك الخروج من التطبيق، أو الرجوع من نافذة منبثقة/قائمة فرعية، باستخدام 'q' أو Escape.

السمة

يمكنك التبديل بين السمة الداكنة والفاتحة باستخدام 't'. سيحاول التطبيق اكتشاف السمة تلقائياً، لكن لبعض تركيبات الطرفية والمضاعِف (multiplexer) لا تتوفر معلومات كافية لاتخاذ الخيار الصحيح.

الشاشات

1–4 (أو d/b/s/p) تنتقل مباشرة إلى شاشة؛ Left/Right، أو مرادفاتهما في vim h/l، تتنقل بينها؛ ? يبدّل مرجعاً كاملاً لارتباطات المفاتيح في أي وقت، و: يفتح لوحة أوامر تسرد كل إجراء بالاسم. Tab / Shift+Tab تنقل دائماً بين لوحات الشاشة الحالية، وليس بين الشاشات.

تمتلك لوحة التحكم (Dashboard) كل ما ينتهي به المطاف في سكربت الجدار الناري؛ وتمتلك إعدادات الموقع (Site settings) كل ما ينتهي به المطاف في إعداد NGINX. هذا التقسيم يحدد مكان وجود أي إعداد معيّن.

  • لوحة التحكم (الشاشة الافتراضية): الإعدادات الافتراضية للفئات على مستوى النظام (الماسحات / روبوتات البحث / روبوتات الذكاء الاصطناعي — مسموح أو محظور)؛ الحجب الجغرافي على مستوى المضيف (حجب أو قائمة سماح لدول محددة)؛ لوحة "الحجب التلقائي" بمفتاح تشغيل/إيقاف لكل كاشف ولكل قائمة حجب من طرف ثالث؛ لوحة "سكربت الجدار الناري" (كم قاعدة سيكتبها العرض، وما إذا كان السكربت على القرص قديماً، والمواقع وقوائم الروبوتات التي يُبنى منها)؛ لوحة "المجدولة" تعرض مهام cron الداخلية ومتى شُغّلت آخر مرة (مع مؤشر دوّار بجانب أي مهمة تعمل حالياً في الخلفية)؛ وسجل لما فعله التطبيق آخر مرة. يعرض شريط الحالة تحت التبويبات فحوصات صحة المضيف على كل شاشة. Up/Down تتنقل بين القوائم الثلاث؛ m تبدّل الوضع الجغرافي. اضغط F لعرض قواعد الجدار الناري الحالية في سكربت — النافذة المنبثقة تحتوي أيضاً على مفتاح "التطبيق بعد الكتابة" (Space) لفرضه فعلياً فوراً، بدلاً من تطبيقه يدوياً بعد ذلك. ثلاثة مفاتيح أخرى تعمل على المضيف بأكمله: u ينزّل كل القوائم، a يطبّق كلا المستويين (NGINX، ثم الجدار الناري)، و w يضع هذه الوحدة خلف NGINX — نفس الثلاثة الموجودة في المتصفح كأزرار ولوحة.
  • إعدادات الروبوتات: تسرد كل مصدر معروف لقائمة الروبوتات (مع إجراء لتحديثه) وكل روبوت فردي، قابلة للبحث بالاسم، مع تجاوز لكل روبوت (مسموح / محظور / اتباع الإعداد الافتراضي للفئة).
  • إعدادات الموقع: لوحة "إعدادات NGINX" (Tab للتركيز عليها) تحتوي على الخيارات على مستوى المضيف التي تشكّل الإعداد المُولَّد — ما الذي يحصل عليه الطلب المحظور (انظر أدناه)، وما إذا كان سيُقدَّم robots.txt مُولَّد، وتحديد المعدل — فوق كل موقع NGINX مكتشف على القرص، كل منها بحالة حية "محدّث / قديم / غير موجود" وإجراءات لتطبيق السياسة الحالية على موقع واحد أو عليها جميعاً. تغيير أي من تلك الإعدادات يقلب كل موقع مطبَّق إلى ، وهي إشارتك لإعادة التطبيق. فتح موقع يتيح لك تجاوز سياسة الفئة/الروبوت الخاصة به، وتشغيل أي من قواعد شكل الطلب الست، وسرد المسارات المعفاة من الحجب.

إعدادات الروبوتات، حيث يعيش كل مصدر قائمة وكل روبوت فردي:

إعدادات الروبوتات: مصادر قوائم الروبوتات الثلاثة مع أعدادها، وبحث يطابق خمسة روبوتات عبر الفئات

إعدادات الموقع، حيث تجلس خيارات NGINX على مستوى المضيف فوق كل موقع موجود على القرص:

إعدادات الموقع: استجابة الحجب، وrobots.txt وتحديد المعدل، فوق موقعين موسومين UP TO DATE وSTALE

الحماية الديناميكية، العرض الحي لما يضرب الخادم الآن:

الحماية الديناميكية: محاولات تسجيل دخول SSH الفاشلة وأعلى وكلاء المستخدم، كل صف موسوم BLOCKED أو BLOCKLIST أو NOT BLOCKED

ما يحمي منه فعلياً

استخدام إعداد NGINX

  • الروبوتات المعروفة، حسب الفئة (ماسح / محرك بحث / زاحف ذكاء اصطناعي)، مصدرها ArcJet's Well-Known Bots، ai.robots.txt و NGINX Ultimate Bad Bot Blocker قائمة. حجب فئة يحقن قاعدة if ($http_user_agent ...) في إعداد NGINX لكل موقع (apply-blocks / a/A في إعدادات الموقع).

  • طلبات كثيرة جداً، عبر تحديد المعدل الخاص بـ NGINX. على عكس كل شيء آخر هنا، يُفرض هذا بواسطة NGINX وقت الطلب بدلاً من تحليل سجل بعد ذلك. معطّل افتراضياً: حد مضبوط لموقع خاطئ يردّ الزوار الحقيقيين.

  • بلطف، أولاً — robots.txt مُولَّد اختياري يسرد كل روبوت تحجبه، للزاحفات التي تحترمه، بالإضافة إلى مسار المصيدة (honeypot) أدناه. معطّل افتراضياً، لأنه يستبدل ما يقدّمه موقعك على /robots.txt اليوم.

  • إلا حيث تقول خلاف ذلك — إعفاءات مسارات لكل موقع، حتى تتمكن من حجب زاحفات الذكاء الاصطناعي في كل مكان إلا /blog.

  • الطلبات التي لا تبدو كمتصفح، لكل موقع. ست قواعد مستقلة، كل منها مفتاح خاص بها وكلها معطّلة افتراضياً — مفتاح واحد لكل قاعدة حتى إذا توقف شيء يخصك عن العمل، يمكنك معرفة أي قاعدة فعلت ذلك:

ما الذي يحصل عليه الطلب المحظور فعلاً

خيار واحد على مستوى المضيف، في إعدادات الموقع. هذه ليست رموز حالة قابلة للتبادل — كل منها يقول شيئاً مختلفاً، والفرق يهم أكثر بالنسبة للعملاء الذين لم تقصد الإمساك بهم:

المصيدة (tarpit) هي الخيار الألطف لإنذار خاطئ — عميل أُمسك به خطأً يُبطَّأ، لا يُرفض — والأقسى في التكلفة على روبوت، حيث يبقى اتصاله خاملاً. أمران يجب معرفتهما قبل اختياره: إنه يحتفظ بأحد اتصالات عامل NGINX لديك طوال المدة أيضاً، لذا فإن سيلاً من عملاء المصيدة يتنافس مع الزوار الحقيقيين على worker_connections؛ وكم يستمر فعلياً يعتمد على كيفية اختيار NGINX لكتابة جسم خطأ صغير، وهو مذكور في TODO.md كحاجة إلى فحص مقابل خادم حقيقي.

من سجلاتك، تلقائياً

كل من هذه مفتاح مستقل في لوحة "الحجب التلقائي" في لوحة التحكم، وكل منها يضيف حجباً مؤقتاً في الجدار الناري ينتهي من تلقاء نفسه ويُعاد إضافته إذا استمر السلوك.

تعمل على مؤقت داخلي يعيد قراءة سجلات SSH والوصول إلى NGINX كل دقيقة — لكن فقط بينما تكون واجهة TUI أو واجهة الويب قيد التشغيل. أي منهما يحافظ على نفس الجدول، في نفس قاعدة البيانات، لذا يكفي إبقاء واجهة الويب قيد التشغيل؛ لا يُكتشف شيء عندما لا يكون أي منهما قيد التشغيل. لخادم لا توجد عليه عملية stop-bots على الإطلاق، انظر بدون إشراف، من cron أدناه.

  • ماسحات SSH والويب: عناوين IP بها كومة من محاولات تسجيل دخول SSH الفاشلة، أو العديد من المسارات المميزة التي أعادت 404. أبداً عنوان IP به تسجيل دخول SSH ناجح حديث، أو واحد داخل نطاق IP منشور لزاحف معروف.
  • زاحفات مزيفة: أي شيء يدّعي أنه Googlebot أو Bingbot أو GPTBot من عنوان لا ينشره مشغّل ذلك الزاحف نفسه. أرخص تنكّر شائع هناك، و قوائم CIDR المنشورة تحسم الأمر. خامل حتى تُجلب تلك القوائم فعلياً.
  • التحقق من أسرار مكشوفة: طلب واحد لـ /.env أو /.git/config أو /wp-config.php وما شابه قاطع بحد ذاته، لذا لا يحتاج هذا إلى عتبة. القائمة المدمجة تحذف عمداً مسارات مشروعة في مكان ما — /wp-login.php، /wp-admin/، /xmlrpc.php، /phpmyadmin — لأن حجب مسؤولك الخاص سيكون أسوأ من تفويت ماسح يلتقطه كاشف 404 على أي حال. أضف مساراتك الخاصة باستخدام set-probe-paths.
  • المصيدة (Honeypot): مسار منشور فقط كـ Disallow: في robots.txt المُولَّد وغير مرتبط في أي مكان. الوصول إليه يعني تجاهل robots.txt، وهو ما لا يفعله أي شيء مشروع عن طريق الخطأ — أقوى إشارة هنا، وأطول حجب. يحتاج إلى تشغيل توليد robots.txt ليعمل على الإطلاق.

ثلاثة أخرى تنظر إلى كيفية تصرف العميل بدلاً من ما يطلبه. الثلاثة كلها معطّلة افتراضياً، لأن لكل منها إنذاراً خاطئاً لا يمكنه استبعاده بمفرده — وكلها تعفي زاحفات محركات البحث الموثّقة، والتي لولا ذلك ستطابق كل واحدة منها:

  • لا يجلب أي أصول: العديد من الصفحات المميزة ولا ورقة أنماط واحدة أو سكربت أو صورة. المتصفحات تحمّل ما يرافق الصفحة. لن يلتقط عميل API (فهو يعدّ المسارات المميزة، وعميل API يضرب القليل) أو زائراً عائداً مُخزَّناً جيداً (يُعدّ 304 أصلاً مجلوباً). لا يمكنه مساعدتك على موقع لا يقدّم أي أصول على الإطلاق — API JSON خالص.
  • وكيل مستخدم متغيّر: عدة هويات من عنوان واحد. يُضعَف كثيراً بواسطة NAT: بوابة شركة اتصالات أو حرم جامعي أو مكتب تقدّم العديد من المتصفحات الحقيقية على IP واحد، وبدون تحليل الطوابع الزمنية لا توجد طريقة للتمييز بين ذلك وبين كاشط واحد يبدّل الوكلاء.
  • يزحف بدون referer: العديد من الصفحات العميقة المميزة، وأبداً Referer. يُضعَف بواسطة Referrer-Policy: no-referrer وأدوات الخصوصية؛ عتبة المسار المميز هي ما يجعله قابلاً للاستخدام على الإطلاق.

حسب العنوان

  • دول بأكملها، عبر قوائم CIDR المجمّعة من IPdeny — احجب دولاً محددة، أو اقلب إلى وضع قائمة السماح واحجب كل شيء آخر.
  • عناوين معروفة بالخبث، عبر قوائم طرف ثالث: FireHOL المستوى 1، عقد خروج Tor و blocklist.de. كلها معطّلة افتراضياً.
  • مزوّدو استضافة بأكملهم: AWS وGoogle Cloud وDigitalOcean ينشرون مساحة عناوينهم، والزوار السكنيون لا يتصفحون منها. هذه أدوات صريحة وموسومة على هذا النحو — فهي تحجب كل زائر مستضاف هناك، بما في ذلك نقاط نهاية VPN ومخارج الشركات وعملاء API، وليس الروبوتات فقط. معطّلة افتراضياً، مع تحذير عند تشغيل أحدها.
  • عناوين مجاورة، اختيارياً: عندما تُوسم عدة عناوين في /24 IPv4 واحد في نفس الجولة، احجب /24. معطّل افتراضياً — حجب 256 عنواناً لأن ثلاثة أساءت التصرف هو ضرر جانبي بالتصميم. (IPv6 مختلف ولا يحتاج مفتاحاً: الكشف يحجب دائماً /64، لأن /64 هي شبكة محلية واحدة، نفس ما يمثله عنوان IPv4 واحد. حجب العنوان الواحد الذي صادف أن استخدمه مهاجم IPv6 لن يوقف شيئاً — لديه 2^64 أخرى.)
  • أي شيء آخر، يدوياً — أضف قاعدة سماح أو حجب لعنوان IP/CIDR مباشرة، أو استخدم شاشة الحماية الديناميكية لحجب عنوان IP أو وكيل مستخدم محدد لاحظته بشكل دائم قبل أن يتجاوز أي عتبة تلقائية.

هل يعمل فعلاً؟

كل ما سبق مُولَّد. ما إذا كان أي منه فعّالاً سؤال منفصل، وstop-bots status هو ما يجيب عليه:``` stop-bots status

root@kitploit:~
سبع فحوصات، وأولها هو الفحص الجدير بالاهتمام: هل القواعد المُولَّدة موجودة فعلاً في النواة، أم على القرص فقط؟ استمر مضيف حقيقي بالعمل لمدة ثلاثة أسابيع مع 48,860 قاعدة إسقاط في `/etc/stop-bots/firewall.nft` ومجموعة قواعد فارغة، لأن كتابة السكربت وتحميله خطوتان ولم ينظر أحد قط إلى الثانية.

والباقي: هل ستنجو مجموعة القواعد من إعادة التشغيل (`nftables.service` مُفعَّلة؟)، وهل لا يزال السكربت مطابقاً للقواعد، وهل حظر NGINX مُطبَّق، وهل خدمة الطرفية تشغّل الملف التنفيذي الذي تسميه، وهل هناك مساحة لقاعدة البيانات، وهل تستطيع الكواشف قراءة سجلاتها.

يخرج بقيمة غير صفرية إذا كان أي شيء **CRITICAL**، لذا يعمل كفحص مراقبة. `--quiet` يطبع فقط ما يحتاج إلى انتباه، وهو الشكل المناسب لـ cron:```
0 * * * * /usr/local/bin/stop-bots status --quiet

فحص لم يتمكن من العمل — nft list يحتاج صلاحيات root — يُبلّغ عن UNKNOWN، وليس OK أبدًا. فحص صحي يقول إن كل شيء على ما يرام لأنه لم يستطع النظر أسوأ من عدم وجوده، لأنه يُصدَّق.

التقرير نفسه موجود على لوحة المعلومات في كل من الطرفية وواجهة TUI، ويُلتقط كل ساعة بواسطة cron الداخلي بدلًا من كل عملية عرض: nft list على مجموعة قواعد كبيرة يمثل ميغابايتات من النص.

لا شيء يحدث بدونك

كل قرار جدار حماية أعلاه يُولَّد، ولا يُطبَّق تلقائيًا أبدًا: render-firewall (أو مفتاح f في لوحة المعلومات) يكتب سكربت iptables أو nftables لتراجعه وتطبّقه بنفسك، ويرفض كتابة سكربت قد يقفل جلسة SSH متصلة حاليًا.

ثلاثة أشياء يمكنها تطبيقه نيابة عنك، وكلها تحتاج منك أن تطلب: نافذة العرض في TUI ("apply after writing") أو مفتاح a فيها، لوحة جدار الحماية في وحدة التحكم على الويب ("run it after writing") أو زر "Apply everything" فيها، وbatch --apply من crontab كتبته أنت — انظر Unattended, from cron. لا شيء منها أثر جانبي لأي شيء تلقائي: cron الداخلي يولّد السكربت ولا يشغّله أبدًا.

ينطبق الأمر نفسه على جانب NGINX: تغيير إعداد يغيّر فقط ما سيُكتب. تُظهر إعدادات المواقع كل موقع كـ STALE حتى تطبّق.

إيقاف كاشف لا يزيل الحظر الذي أضافه بالفعل — تلك تنتهي صلاحيتها من تلقاء نفسها. "إيقاف الكشف" و"التراجع عما تم كشفه" منفصلان عمدًا؛ الثاني هو شاشة الحماية الديناميكية أو remove-firewall-rule.

هناك أيضًا إحصاء بسيط لسجل الوصول، مستقل عن الحظر: record-access-stats / list-access-stats يحصيان عدد مرات ظهور كل user agent في الطلبات الناجحة (غير الخاطئة)، حتى ترى من يزور فعليًا فوق من يتم حظره.

Unattended, from cron

stop-bots batch هي تمريرة واحدة على كل ما تفعله TUI يدويًا: تحديث كل قائمة، وفحص السجلات، وكتابة قواعد حظر NGINX وسكربت جدار الحماية.```

One full pass a night. Refreshes the lists, scans the logs, applies both.

0 4 * * * root /usr/local/bin/stop-bots batch --apply --ssh-log /var/log/auth.log

And detection every ten minutes, without re-downloading lists that change weekly.

*/10 * * * * root /usr/local/bin/stop-bots batch --apply --no-fetch --ssh-log /var/log/auth.log

root@kitploit:~
لا يقول شيئًا عندما ينجح كل شيء، لذا فإن تشغيلًا ليليًا سليمًا لا يرسل لك بريدًا. الخطوة الفاشلة تطبع إلى stderr وتضبط حالة خروج غير صفرية، وهذا ما يجعل cron يخبرك عنها. شغّله يدويًا مرة واحدة مع `--verbose` أولًا — فهذا يطبع سطرًا لكل خطوة، وهو أسهل طريقة لرؤية ما يفعله فعليًا.

**`--apply` هو ما يجعله يفرض أي شيء.** بدونه، يكتب `batch` إعداد NGINX وسكربت الجدار الناري ثم يتوقف: الإعداد لا يفعل شيئًا حتى إعادة التحميل، والسكربت لا يفعل شيئًا حتى يُشغَّل. هذا هو الافتراضي في هذا المشروع في كل مكان، ويبقى الافتراضي هنا.

يتعايش `batch` مع واجهة أمامية طويلة التشغيل بأمان. تسجّل TUI وواجهة الويب و`batch` جميعها ما فعلته عبر المفاتيح نفسها في قاعدة البيانات نفسها، فأيها يصل إلى مهمة أولًا ينفذها والآخرون يجدونها لم تعد مستحقة — فلا تحصل على جولتي كشف، وتعرض لوحة "Scheduled tasks" في Dashboard ما حدث فعليًا بدلًا من الادعاء بأن كل شيء متأخر. إذا كنت تترك واجهة الويب تعمل بالفعل، فإن إدخال `batch` الليلي يكون احتياطًا إضافيًا وليس متطلبًا؛ وإذا لم تفعل، فهو الشيء الوحيد الذي يبقي الكشف محدثًا.

**مع `--apply`، يمكن لحارس قفل SSH أن يرفض — والرفض يعني عدم تطبيق أي شيء.** يرفض إذا كانت القواعد ستحجب عميلًا متصلًا الآن، *و* إذا لم يكن ممكنًا قراءة أي سجل SSH على الإطلاق، لأنه حينها لا يمكن تشغيل الفحص. الأمر التفاعلي `render-firewall` يطبع فقط ملاحظة في الحالة الثانية، على أساس أن إنسانًا يراقب الطرفية؛ أما من cron فلا أحد. **مرّر `--ssh-log` صراحةً**: يعمل cron بصلاحية root لذا عادةً يُقرأ `/var/log/auth.log` بشكل جيد، لكن على مضيف يعتمد على journald فقط قد يعود `journalctl` تحت cron فارغًا، وهذه بالضبط الحالة التي يرفض فيها. `--force` يتجاوز الحارس إذا كنت تقصد ذلك.

فشل خطوة واحدة لا يوقف الأخريات أبدًا، ونصفا NGINX والجدار الناري مستقلان — إعادة تحميل NGINX الفاشلة تترك الجدار الناري مطبقًا، والعكس صحيح.

يسجّل `batch` كل خطوة مقابل الجدول نفسه الذي يستخدمه cron الداخلي في TUI، فيتفق الاثنان على ما تم تشغيله بالفعل بدلًا من أن يفعله كلاهما، وتعرض لوحة "Scheduled tasks" في Dashboard ما فعله cron الحقيقي لديك.

# واجهة الويب

يقدّم `stop-bots web` الشاشات الخمس نفسها في المتصفح.```
stop-bots web

يستمع على 127.0.0.1:8787 — لا يمكن الوصول إليه إلا من ذلك الجهاز — ويطبع كلمة مرور مُولَّدة مرة واحدة، عند التشغيل الأول. يمكنك الوصول إليه من حاسوبك المحمول عبر نفق SSH:``` ssh -L 8787:127.0.0.1:8787 your-server

root@kitploit:~
ثم افتح <http://127.0.0.1:8787/>.

![لوحة تحكم وحدة التحكم على الويب: شرائح الحالة وزرا النطاق الكامل للمضيف في الترويسة، والسياسة والحجب الجغرافي وتغذيات الطرف الثالث في عمود واحد، والحجب التلقائي والمهام المجدولة في العمود الآخر](https://assets.kitploit.com/production/public/readmes/55148/73bbcc92f0f3d2c9d0586bd71ad18f1b4d582fa59824b4f5e3c97e08575f5070/bb45db648f6a59192f56b1e14a019f50f0816bff651766316c377cbe79f700b6-display-v1.webp)

تتبع وحدة التحكم إعداد الوضع الفاتح أو الداكن لنظام التشغيل، مع مفتاح تبديل في
الترويسة؛ لقطات شاشة TUI أعلاه هي السمة الداكنة، وهذه هي الفاتحة. المفاتيح التي
يستخدمها TUI تعمل هنا أيضًا: `1`–`4` تبدّل الشاشات، `/` تركّز على مربع البحث، `?` يفتح المساعدة.

![صفحة الحماية الديناميكية في وحدة التحكم على الويب: محاولات تسجيل الدخول الفاشلة عبر SSH وأعلى وكلاء المستخدم، كل منها مع شريط عدّاد ووسم حالة، وزر حجب أو إلغاء حجب لكل صف](https://assets.kitploit.com/production/public/readmes/55148/090d4d2151eb00a69781c44351abe10f268d8031816199b9aeb5b4d2cddfc5f5/52a05387d1227288e7f45ece3c33e4af17957d8e9e73fb7c0213d64c49dc7419-display-v1.webp)

توجد ثلاثة إجراءات على مستوى المضيف بالكامل في الترويسة، في المتصفح كأزرار وفي TUI
كمفاتيح فردية:

- **تحديث كل شيء** (`u`) ينزّل كل قائمة روبوتات، وكل نطاق IP لعناكب الويب، وكل
  تغذية سمعة *مفعّلة* وكل دولة *محددة* — نفس المجموعة التي يجلبها `stop-bots batch`،
  من نفس الخطة. فشل مصدر واحد لا يوقف الباقي، ولا يُفرض أي شيء حتى يطبّقه شيء ما.
- **تطبيق كل شيء** (`a`) يكتب ويعيد تحميل إعداد NGINX، ثم يكتب ويشغّل
  سكربت الجدار الناري. المستويان مستقلان: أيّهما فشل، يحصل الآخر على
  دوره، لأن مضيفًا مطبَّقًا جزئيًا أفضل من مضيف ترك فيه خطأ في صياغة NGINX
  الجدار الناري قديمًا أيضًا.
- **الوصول عبر الويب** (`w`) يهيّئ NGINX لخدمة وحدة التحكم نفسها — انظر
  [خلف NGINX](#behind-nginx-a-subdomain-or-a-path-prefix).

## كخدمة (Debian)```
sudo stop-bots install web

يكتب /etc/systemd/system/stop-bots-web.service، وينشئ /var/lib/stop-bots (0700 — فهو يحتفظ بتجزئة كلمة مرور وحدة التحكم) و /etc/stop-bots، ويولّد كلمة مرور إذا لم تكن هناك واحدة، ويمكّن الوحدة ويشغّلها.

--dry-run يطبع الخطة كاملة ولا يغيّر شيئًا. هذا هو الأمر الوحيد في المشروع الذي يبدأ خادمًا، لذا ابدأ من هناك. --prefix <dir> يكتب نفس الشجرة في مكان يمكنك قراءته دون صلاحيات الجذر. إذا كانت الوحدة موجودة بالفعل وقد حرّرتها، فإن المثبّت يتوقف ويخبرك بذلك بدلًا من استبدال تعديلك؛ استخدم --force إذا كنت تقصد ذلك.

تعمل الخدمة بصلاحيات الجذر، لأن وحدة التحكم تعيد كتابة /etc/nginx، وتكتب سكربت الجدار الناري، وتشغّل nginx -t و systemctl reload nginx. لا يوجد تقسيم غير مميّز بالصلاحيات يُبقي مجموعة الميزات سليمة. تحمل الوحدة التقوية التي تصمد أمام هذا الشرط وتعليقًا يوضّح أي تقوية تم تركها ولماذا.

عنوان الربط، وقائمة المضيفين المسموح بها، وبادئة المسار هي عمدًا ليست في الوحدة — إذ يعيد الخادم قيد التشغيل قراءتها من قاعدة البيانات، لذا فإن وضعها في ExecStart سيمنحها مصدرين للحقيقة. غيّرها باستخدام stop-bots web --save ... ثم أعد التشغيل.

هناك شيء واحد يتغيّر بمجرد تشغيل هذا بصلاحيات الجذر: مهمة RenderFirewall اليومية في cron الداخلي يمكنها الآن كتابة /etc/stop-bots/firewall.nft، وهو ما لم تكن تستطيعه عندما كنت تشغّل وحدة التحكم يدويًا بنفسك. لا شيء يطبّق ذلك السكربت — تشغيله لا يزال مسؤوليتك.

يتم التحقق من Debian فقط، لأن ذلك ما تم اختباره؛ الوحدة على الأرجح صحيحة على أي توزيعة تستخدم systemd، لكن مسار سجل SSH الذي تفترضه هو مسار Debian.

كشفه

ربط أي شيء غير loopback يتطلب علمًا ثانيًا متعمدًا، لأن وحدة التحكم هذه يمكنها إعادة كتابة الجدار الناري وإعداد NGINX للمضيف الذي تعمل عليه:``` stop-bots web --bind 0.0.0.0:8787 --expose --allowed-hosts admin.example.com --save

root@kitploit:~
`--allowed-hosts` ليس اختياريًا عمليًا: أي طلب يحمل اسم مضيف غير مُدرَج في القائمة يُرفض. هذا ما يجعل هجوم DNS rebinding ضد وحدة التحكم يفشل، ولهذا يحتاج الخادم المكشوف الذي يُوصَل إليه بالاسم إلى كتابة الاسم صراحةً.

ضعه خلف NGINX مع TLS — نفس NGINX الذي تحميه هذه الأداة. إذا فعلت ذلك، وكان الوكيل يضبط `X-Forwarded-For`، فأخبر وحدة التحكم بأنها قد تثق بهذا الترويسة، وإلا فلن تستطيع تحديد العنوان الذي جاء منه الطلب فعليًا:```
stop-bots web --bind 127.0.0.1:8787   # and set web:trust_forwarded_for

خلف TLS، اضبط أيضًا web:secure_cookie. بدونها سيرسل المتصفح ملف تعريف الجلسة إلى عنوان http:// لنفس المضيف أيضًا.

web:trust_forwarded_for مهم أكثر مما يبدو. بدونه يصل كل طلب خلف وكيل من 127.0.0.1، لذا لا تستطيع وحدة التحكم التمييز بين عميل وآخر — مما يعني أن سيلًا من محاولات تسجيل الدخول يتشارك نفس دلو التقييد معك، ولا يجد الحارس الذي يمنعك من حجب عنوانك الخاص شيئًا يقارن به. ومعه، يعمل كلاهما لكل عميل على حدة.

خلف NGINX: نطاق فرعي، أو بادئة مسار

يمكن لوحدة التحكم إعداد هذا نيابة عنك، وكذلك واجهة TUI (اضغط w في لوحة المعلومات). كلاهما يكتب إعداد NGINX، ويسجل بادئة المسار ويضيف اسم المضيف إلى قائمة السماح — وهي الأمور الثلاثة التي يجب أن تتوافق، لأن بادئة مفقودة تجعل كل رابط يغادر كتلة location واسم مضيف مفقود يجعل كل طلب 403. يتحقق كلاهما باستخدام nginx -t قبل أن يصبح الإعداد ساريًا، ويتراجع عنه إذا فشل ذلك، ويسجل العنوان الجديد فقط بعد التحقق من صحته.

وضعان، والمسار هو الافتراضي لسبب وجيه: فهو يضيف كتلة location إلى موقع لديك بالفعل، لذا ترث وحدة التحكم شهادة ذلك الموقع. أما النطاق الفرعي فيحتاج شهادته الخاصة، وإلى أن يتم تشغيل certbot --nginx -d <host>، يعبر نموذج كلمة المرور وملف تعريف الجلسة في وحدة التحكم هذه الشبكة دون تشفير.

ما تبقى من هذا القسم هو الشيء نفسه يدويًا، ويستحق القراءة مرة واحدة حتى لو استخدمت اللوحة — فمصيدة الشرطة المائلة اللاحقة أدناه هي الخطأ الذي وُجد هذا لمنعه.

النطاق الفرعي هو النشر الأبسط، وهو الخيار الذي يجب اختياره إن أمكنك ذلك:```nginx server { server_name stopbots.example.com; location / { proxy_pass http://127.0.0.1:8787; proxy_set_header Host $host; } }

root@kitploit:~
## ما الجديد في الإصدار 2.0.0

- **إعادة كتابة كاملة بلغة Go** — لم تعد هناك حاجة إلى Python أو pip. ملف تنفيذي واحد بدون تبعيات.
- **دعم بروتوكول SOCKS5** — يمكن الآن توجيه حركة المرور عبر أي وكيل SOCKS5.
- **دعم بروتوكول HTTP/2** — اكتشاف تلقائي للتفاوض عبر HTTP/2 عند توفره.
- **تحسين الأداء** — استخدام goroutines للتنفيذ المتوازي، مما أدى إلى تسريع كبير في عمليات الفحص.
- **تنسيق إخراج محسّن** — إخراج أكثر وضوحًا مع ألوان وملخصات أفضل.
- **دعم متغيرات البيئة** — يمكن الآن تكوين جميع الخيارات عبر متغيرات البيئة.
- **ملف تكوين** — دعم ملف تكوين YAML لعمليات الفحص المتكررة.
- **وضع الفحص الصامت** — خيار `--quiet` لتقليل الإخراج إلى الحد الأدنى.
- **تصدير النتائج** — تصدير النتائج بصيغ JSON وCSV وMarkdown.

## التثبيت

### من الإصدارات الجاهزة

قم بتنزيل أحدث إصدار من [صفحة الإصدارات](https://github.com/example/tool/releases).

```bash
# Linux (amd64)
curl -LO https://github.com/example/tool/releases/latest/download/tool_linux_amd64.tar.gz
tar -xzf tool_linux_amd64.tar.gz
sudo mv tool /usr/local/bin/

من المصدر

root@kitploit:~
git clone https://github.com/example/tool.git
cd tool
go build -o tool .

باستخدام Docker

root@kitploit:~
docker pull example/tool:latest
docker run --rm example/tool --help

الاستخدام

root@kitploit:~
tool [flags] <target>

الأعلام

أمثلة

root@kitploit:~
# فحص منافذ شائعة على هدف واحد
tool -t example.com -p 22,80,443,8080

# فحص نطاق منافذ مع زيادة التزامن
tool -t example.com -p 1-65535 -c 500

# استخدام وكيل SOCKS5
tool -t example.com --proxy socks5://127.0.0.1:1080

# تصدير النتائج إلى ملف JSON
tool -t example.com --output results.json --format json

# وضع الفحص الصامت
tool -t example.com -q

التكوين

يمكن تكوين الأداة عبر ملف تكوين YAML أو متغيرات البيئة أو أعلام سطر الأوامر. الأسبقية كالتالي:

  1. أعلام سطر الأوامر (الأعلى)
  2. متغيرات البيئة
  3. ملف التكوين
  4. القيم الافتراضية (الأدنى)

ملف التكوين

root@kitploit:~
target: example.com
ports: "1-1000"
concurrency: 100
timeout: 5
proxy: socks5://127.0.0.1:1080
output: results.json
format: json
quiet: false
verbose: false

متغيرات البيئة

التنسيقات المدعومة

JSON

root@kitploit:~
{
  "target": "example.com",
  "timestamp": "2024-01-15T10:30:00Z",
  "results": [
    {
      "port": 22,
      "state": "open",
      "service": "ssh",
      "banner": "SSH-2.0-OpenSSH_8.9p1"
    }
  ]
}

CSV

root@kitploit:~
port,state,service,banner
22,open,ssh,SSH-2.0-OpenSSH_8.9p1
80,open,http,nginx/1.24.0

Markdown

root@kitploit:~
| المنفذ | الحالة | الخدمة | البانر |
|--------|--------|--------|--------|
| 22 | مفتوح | ssh | SSH-2.0-OpenSSH_8.9p1 |
| 80 | مفتوح | http | nginx/1.24.0 |

الترخيص

هذا المشروع مرخص بموجب رخصة MIT — راجع ملف LICENSE للحصول على التفاصيل.

إخلاء المسؤولية

هذه الأداة مخصصة لأغراض الاختبار الأمني المصرح به والبحث الأكاديمي فقط. يجب عليك الحصول على إذن كتابي صريح قبل فحص أي هدف لا تملكه أو لا تملك تصريحًا صريحًا بفحصه. يتحمل المستخدم المسؤولية الكاملة عن أي إساءة استخدام أو أضرار ناتجة عن هذه الأداة. لا يتحمل المطورون أي مسؤولية عن الاستخدام غير المصرح به أو غير القانوني.``` stop-bots web --allowed-hosts stopbots.example.com --save

root@kitploit:~
**يعمل بادئة المسار أيضًا**، لكن يجب إخبار الطرفية بها — فهي بحاجة إلى
توليد كل رابط وإجراء نموذج وإعادة توجيه ومسار ملف تعريف ارتباط مع البادئة مضمّنة
فيها مسبقًا، ولا يمكنها التخمين:```
stop-bots web --base-path /stop-bots --allowed-hosts example.com --save

ما الجديد في الإصدار 2.0.0

  • إعادة كتابة كاملة بلغة Go — تمت إعادة كتابة الأداة بالكامل بلغة Go، مما أدى إلى تحسين الأداء بشكل كبير، وتقليل الاعتماديات، وتوزيع ثنائي واحد.
  • دعم بروتوكولات متعددة — دعم أصلي لـ HTTP/HTTPS، SOCKS4، SOCKS5، وبروكسيات Shadowsocks.
  • وضع الفحص السريع — فحص عالي التزامن مع تجميع اتصالات ذكي.
  • تصدير النتائج — تصدير البروكسيات الحية إلى JSON، CSV، أو نص عادي.
  • دعم ملفات التكوين — تكوين قابل للتخصيص عبر ملف YAML.
  • إشعارات Webhook — إشعارات فورية عبر Discord، Slack، أو Telegram عند العثور على بروكسيات حية.
  • دعم Docker — صور Docker رسمية لـ amd64 و arm64.
  • إصدارات متعددة المنصات — ثنائيات مُجمّعة مسبقًا لـ Linux، macOS، و Windows.

التثبيت

من المصدر

root@kitploit:~
git clone https://github.com/yourusername/proxy-checker.git
cd proxy-checker
go build -o proxy-checker .

باستخدام Docker

root@kitploit:~
docker pull yourusername/proxy-checker:latest
docker run --rm yourusername/proxy-checker -f proxies.txt

تنزيل ثنائي مُجمّع مسبقًا

قم بتنزيل أحدث إصدار من صفحة الإصدارات.

الاستخدام

root@kitploit:~
proxy-checker [flags]

Flags:
  -f, --file string       ملف الإدخال الذي يحتوي على البروكسيات (سطر واحد لكل بروكسي)
  -o, --output string     ملف الإخراج للبروكسيات الحية (افتراضي "alive.txt")
  -t, --threads int       عدد الخيوط المتزامنة (افتراضي 100)
  -T, --timeout int       مهلة الاتصال بالثواني (افتراضي 10)
  -u, --url string        عنوان URL الهدف للاختبار (افتراضي "http://httpbin.org/ip")
  -p, --protocol string   نوع البروتوكول: http, socks4, socks5, ss (افتراضي "http")
  -c, --config string     مسار ملف التكوين (YAML)
      --json              تصدير النتائج بصيغة JSON
      --csv               تصدير النتائج بصيغة CSV
      --webhook string    عنوان URL للـ Webhook للإشعارات
  -v, --verbose           تمكين الإخراج المفصل
  -h, --help              عرض المساعدة

أمثلة

فحص قائمة البروكسيات باستخدام الإعدادات الافتراضية:

root@kitploit:~
./proxy-checker -f proxies.txt

فحص بروكسيات SOCKS5 بـ 500 خيط:

root@kitploit:~
./proxy-checker -f proxies.txt -p socks5 -t 500

تصدير البروكسيات الحية إلى JSON:

root@kitploit:~
./proxy-checker -f proxies.txt --json -o alive.json

استخدام ملف تكوين:

root@kitploit:~
./proxy-checker -c config.yaml

التكوين

يمكن تخصيص الأداة عبر ملف تكوين YAML:

root@kitploit:~
# config.yaml
threads: 200
timeout: 15
protocol: socks5
target_url: "https://api.ipify.org?format=json"
output: "results.txt"
export_format: "json"
webhook: "https://discord.com/api/webhooks/..."
verbose: true

الترخيص

هذا المشروع مرخص بموجب رخصة MIT — راجع ملف LICENSE للتفاصيل.

إخلاء المسؤولية

هذه الأداة مخصصة لأغراض الاختبار الأمني والبحث التعليمي فقط. المستخدمون مسؤولون عن الامتثال لجميع القوانين واللوائح المعمول بها. لا يتحمل المؤلفون أي مسؤولية عن سوء الاستخدام أو الأضرار الناتجة عن استخدام هذه الأداة.```nginx location /stop-bots/ { proxy_pass http://127.0.0.1:8787; # NO trailing slash proxy_set_header Host $host; }

root@kitploit:~
**الشرطة المائلة اللاحقة في `proxy_pass` مهمة، وغيابها هو الحيلة بأكملها.**
بدونها، يمرر NGINX المسار الكامل ويرى `stop-bots` المسار
`/stop-bots/whatever`، وهو ما يخدمه ويولّده الآن. *مع* وجود شرطة مائلة
لاحقة، يزيل NGINX البادئة — وبعد ذلك يحل المتصفح الروابط في الصفحة
مقابل جذر النطاق، فيخرج خارج كتلة `location`، وكل شيء يعطي 404. لا
يمكن لأي قدر من العناية من جانب الخادم إصلاح ذلك، لذا يجب أن تبقى البادئة عبر
الوكيل.

لا شيء يفرض هذا من الخارج، لكن الفشل صارخ وليس خفيًا: مع
تكوين البادئة، يكون الطلب غير المسبوق بـ 404 صريحًا بدلًا من صفحة
تعمل جزئيًا.

## ما لن يفعله

هناك شيئان مفقودان عن قصد، وشاشة المساعدة تقول ذلك مع الأسباب:

- **لن يرفع الحظر عن شيء حظره قائمة تم تنزيلها** — التحديث التالي لتلك
  القائمة سيلغيه بصمت.
- **لن يغيّر كلمة مروره الخاصة.** استخدم `stop-bots web --set-password` على المضيف.

كما يرفض حظر العنوان الذي أنت متصل منه، وهو ما سيأخذ منك
الطرفية التي ستستخدمها للتراجع عن ذلك.

**كانت ثلاثة في السابق.** كان تطبيق سكربت الجدار الناري هو الثالث، على أساس أن
تشغيله هو العملية الوحيدة التي يمكن أن تُخرج المضيف من الشبكة. هذا متاح الآن —
"Apply everything" في لوحة التحكم (`a` في TUI)، أو مربع "run it after
writing" في لوحة الجدار الناري — لأن الحارس الذي يجعله آمنًا من cron يجعله آمنًا من
زر: يتم فحص القواعد مقابل العملاء المسجلين حاليًا عبر SSH، بالترتيب
الذي سيقيمها به السكربت نفسه، والقاعدة التي ستحظر أحدهم تكون
رفضًا وليس تحذيرًا. ابدأ الطرفية بـ `--no-apply` لاستعادة سلوك الكتابة فقط القديم.

محاولات تسجيل الدخول محدودة المعدل. ليس لأن كلمة المرور قابلة للتخمين — فهي مولّدة،
144 بت — بل لأن التحقق من واحدة يشغّل Argon2id، والسماح لمتصل غير موثّق
بتشغيل ذلك بأسرع ما يمكنه إرساله هو هجوم حجب خدمة على المضيف الذي يُفترض أن
تحميه هذه الأداة. عشر محاولات خاطئة مجانية؛ بعد ذلك يتراجع العميل
أسيًا، وسقف عام يحدّ من CPU بغض النظر عن عدد العناوين التي تأتي منها
المحاولات.

## تشغيل NGINX في حاوية

إذا كان NGINX في Docker وتكوينه على bind mount، فإن `systemctl reload nginx` لا يعيد
تحميل أي شيء. وجّه الأمرين إلى الحاوية بدلًا من ذلك — وهذا ينطبق على CLI و
TUI أيضًا:```
stop-bots set-nginx-commands \
  --test   "docker exec web nginx -t" \
  --reload "docker exec web nginx -s reload"

يتم تقسيم الأمر إلى كلمات وتشغيله مباشرة. لا يمر أبدًا عبر shell، لذا فإن ; و | و $VAR هي أحرف عادية وليست صيغة.

المساهمة

كيفية تنظيم الكود، وكيفية اختباره، والقواعد التي كُتب وفقًا لها موجودة في CONTRIBUTING.md. عملية الإصدار موجودة في RELEASING.md.

التواصل

يمكنك التواصل معي على [email protected].

الترخيص

حقوق النشر (C) 2026 Marko Ivankovic

هذا البرنامج برمجيات حرة: يمكنك إعادة توزيعه و/أو تعديله بموجب شروط رخصة GNU Affero General Public License كما نشرتها مؤسسة البرمجيات الحرة، إما الإصدار 3 من الرخصة، أو (حسب اختيارك) أي إصدار لاحق.

راجع ملف LICENSE للاطلاع على النص الكامل للرخصة.

لا يمكنك استخدام برمجيات AGPL؟

الترخيص البديل غير متاح.

تنزيل الأداة
STALE
  • الحماية الديناميكية: عرض حي وقابل للتنفيذ لما يضرب الخادم حالياً — "أعلى عناوين IP التي تحاول الاتصال عبر SSH" و"أعلى وكلاء المستخدم"، كل منها مرتّب حسب العدد وموسوم NOT BLOCKED/BLOCKED (يظهر بالأحمر). Tab/Shift+Tab تبدّل أي من اللوحتين تنطبق عليهما Up/Down؛ f يبدّل مرشحاً مشتركاً (الكل / غير المحظورة فقط / المحظورة فقط)؛ Enter يحجب الصف المحدد NOT BLOCKED، أو يرفع الحجب عنه إذا كان BLOCKED بالفعل. i يفحص العنوان المحدد: أي من خلاصات السمعة تسرده، وما إذا كان داخل نطاق زاحف منشور (وهو ما يفصل Googlebot الحقيقي عن وكيل مستخدم يدّعي ذلك فقط)، وإلى أي دولة ينتمي، وأي حسابات حاول تسجيل الدخول بها. كل ذلك من قوائم نزّلها هذا المضيف بالفعل — لا يوجد بحث عكسي DNS أو whois هنا، لأن سجل PTR يكتبه من يملك العنوان وسيكون نصاً مقدَّماً من المهاجم يُقرأ كأنه موثوق.
  • المساعدة: مرجع ارتباطات المفاتيح الكامل.
  • القاعدةتردّ، إلى جانب الروبوتات
    HTTP/1.0 و HTTP/1.1الزاحفات وعملاء API الذين لا يتحدثون HTTP/2
    لا ترويسة Acceptبعض عملاء API لا يرسلون أي منها
    لا Accept-Languageأدوات الخصوصية تحذفها
    User-Agent فارغ/غائبالسكربتات وفحوصات الصحة غالباً تحذفه
    Host عنوان IP مجرديعطّل الوصول إلى الموقع عبر IP
    TLS 1.0 / 1.1العملاء القديمة جداً فقط

    تنطبق ضمانتان على جميعها، ويُفرضان بدلاً من تركها لك:

    • القاعدتان المعتمدتان على TLS تُكتبان فقط في كتل server الخاصة بـ HTTPS. المتصفحات لا تستخدم HTTP/2 بدون TLS، لذا على كتلة listen 80 عادية كل طلب هو HTTP/1.1 — بما في ذلك إعادة التوجيه التي يجريها المتصفح في طريقه إلى HTTPS. كتلتا المنفذ 80 والمنفذ 443 لديك عادةً تتشاركان server_name، لذا يصل الإعداد إلى كليهما؛ فقط كتلة TLS تحصل على تلك القواعد. قواعد شكل الترويسة تعمل عبر HTTP العادي وتُكتب إلى كليهما.
    • /.well-known/ معفى دائماً بمجرد تشغيل أي قاعدة. هناك يجلب Let's Encrypt تحدّي HTTP-01 الخاص به، عبر HTTP/1.1 بدون Accept وغالباً بدون User-Agent — بدون الإعفاء تتوقف شهادتك عن التجديد بعد أسابيع.
    الخيارالغرض منه
    403 Forbidden (افتراضي)يقول إن الحجب كان متعمداً؛ الوحيد الذي يمكن لإنسان أُمسك به خطأً التصرف بناءً عليه
    404 Not Foundيخفي أن أي شيء قد حُجب على الإطلاق
    410 Goneيطلب من الزاحفات حسنة السلوك إسقاط الرابط نهائياً — فضّل هذا على 403 عندما تردّ الزاحفات بدلاً من المهاجمين
    429 Too Many Requestsيخبر عميلاً مهذباً بالتراجع وإعادة المحاولة
    418 I'm a teapotمزحة RFC 2324. إنها تعمل؛ لكنها غير مسجّلة لدى IANA، وNGINX يرسلها بجسم فارغ
    444 close connectionلا رد على الإطلاق؛ الأرخص، لكن لا يمكن تمييزه عن تعطّل الخادم
    Tarpitيجيب بـ 403 لكنه يرسل الجسم ببطء بمعدل بايت واحد في الثانية، فينتظر العميل بدلاً من المضي قدماً
    العلمالوصفالافتراضي
    -t, --targetالهدف المراد فحصه—
    -p, --portsالمنافذ المراد فحصها1-1000
    -c, --concurrencyعدد العمال المتزامنين100
    --timeoutمهلة الاتصال بالثواني5
    --proxyعنوان URL لوكيل SOCKS5—
    --outputملف الإخراج—
    --formatتنسيق الإخراج (json, csv, md)json
    -q, --quietوضع الفحص الصامتfalse
    -v, --verboseإخراج مطوّلfalse
    المتغيرالوصف
    TOOL_TARGETالهدف المراد فحصه
    TOOL_PORTSالمنافذ المراد فحصها
    TOOL_CONCURRENCYعدد العمال المتزامنين
    TOOL_TIMEOUTمهلة الاتصال بالثواني
    TOOL_PROXYعنوان URL لوكيل SOCKS5
    TOOL_OUTPUTملف الإخراج
    TOOL_FORMATتنسيق الإخراج
    TOOL_QUIETوضع الفحص الصامت
    TOOL_VERBOSEإخراج مطوّل