fork download
  1. const net = require("net");
  2.  
  3. /**
  4.  * فحص منفذ معين على عنوان IP أو موقع
  5.  * @param {string} host - عنوان الموقع أو IP
  6.  * @param {number} port - رقم المنفذ المطلوب فحصه
  7.  * @returns {Promise<boolean>} - إرجاع true إذا كان المنفذ مفتوحًا، وإلا false
  8.  */
  9. function checkPort(host, port) {
  10. return new Promise((resolve) => {
  11. const socket = new net.Socket();
  12. socket.setTimeout(2000); // تعيين مهلة الاتصال 2 ثانية
  13.  
  14. socket.on("connect", () => {
  15. console.log(`✅ المنفذ ${port} مفتوح على ${host}`);
  16. socket.destroy();
  17. resolve(true);
  18. });
  19.  
  20. socket.on("timeout", () => {
  21. console.log(`❌ المنفذ ${port} مغلق على ${host} (Timeout)`);
  22. socket.destroy();
  23. resolve(false);
  24. });
  25.  
  26. socket.on("error", () => {
  27. console.log(`❌ المنفذ ${port} مغلق على ${host}`);
  28. resolve(false);
  29. });
  30.  
  31. socket.connect(port, host);
  32. });
  33. }
  34.  
  35. /**
  36.  * فحص عدة منافذ على موقع معين
  37.  * @param {string} host - عنوان الموقع أو IP
  38.  * @param {number[]} ports - قائمة المنافذ المطلوب فحصها
  39.  */
  40. async function scanPorts(host, ports) {
  41. console.log(`🔍 بدء فحص ${host} على المنافذ: ${ports.join(", ")}`);
  42. for (const port of ports) {
  43. await checkPort(host, port);
  44. }
  45. }
  46.  
  47. // تشغيل التطبيق على موقع معين
  48. const targetHost = "example.com"; // قم بتغيير هذا إلى الموقع المطلوب
  49. const portsToCheck = [21, 22, 23, 25, 53, 80, 443, 8080]; // قائمة المنافذ الشائعة
  50.  
  51. scanPorts(targetHost, portsToCheck);
Success #stdin #stdout 0.11s 36352KB
stdin
Standard input is empty
stdout
🔍 بدء فحص example.com على المنافذ: 21, 22, 23, 25, 53, 80, 443, 8080
❌ المنفذ 21 مغلق على example.com
❌ المنفذ 22 مغلق على example.com
❌ المنفذ 23 مغلق على example.com
❌ المنفذ 25 مغلق على example.com
❌ المنفذ 53 مغلق على example.com
❌ المنفذ 80 مغلق على example.com
❌ المنفذ 443 مغلق على example.com
❌ المنفذ 8080 مغلق على example.com