الأسئلة الشائعة
أسئلة عامة
أسئلة شائعة حول تشويش JavaScript وكيفية عمله.
هناك أسباب كثيرة لحماية كودك: منع أي شخص من نسخ عملك ولصقه ببساطة (وهو أمر مهم بوجه خاص للمشاريع التي تعمل من جهة العميل مثل ألعاب HTML5)، وإزالة التعليقات والمسافات لجعل الكود أسرع في التحميل وأصعب في الفهم، وحماية عمل لم يُدفع ثمنه بعد لتتمكن من عرضه على العملاء دون منحهم الكود المصدري.
تشويش VM (الآلة الافتراضية) يحوّل كود JavaScript إلى بايت كود مخصص يعمل على مفسّر مضمّن. وعلى خلاف التشويش القياسي الذي ينتج كود JavaScript قابلًا للقراءة، يخفي تشويش VM بنية كودك الأصلية تمامًا. ولا تستطيع أدوات التحليل الساكن فهم المنطق دون إجراء هندسة عكسية كاملة للآلة الافتراضية أولًا. اعرف المزيد في دليل تشويش VM.
نعم! نوفّر خيارًا لتطبيق تشويش VM بشكل انتقائي على دوال أو توابع بعينها. ما عليك سوى وضع تعليق خاص فوق الدالة المستهدفة (/* javascript-obfuscator:vm */)، وعندها ستُعالَج تلك الدالة وحدها عبر مشوِّش VM. وهذا مثالي لحماية أكثر خوارزمياتك حساسية فقط مع إبقاء بقية كودك بتشويش قياسي أو دون تغيير، ما يقلل العبء على الأداء.
لا. يجب ألا تُخزَّن مفاتيح API والأسرار وبيانات الاعتماد إطلاقًا في كود الواجهة الأمامية. فحتى مع أعلى مستويات التشويش، يستطيع مهاجم مصمّم استخراج أي بيانات موجودة في كود JavaScript العامل من جهة العميل. التشويش يجعل الهندسة العكسية أصعب، لكنه ليس تشفيرًا ولا ينبغي الاعتماد عليه لتأمين الأسرار. وبدلًا من ذلك، خزّن الأسرار على خادمك الخلفي، واستخدم متغيرات البيئة على جانب الخادم، ومرّر استدعاءات API عبر خادمك الخلفي لإخفاء المفاتيح، أو استخدم رموزًا قصيرة الأجل يصدرها خادمك.
ما من تشويش محكم بنسبة 100% — فكود JavaScript يعمل في نهاية المطاف داخل بيئة يتحكم بها المهاجم، سواء المتصفح أو Node.js، وفحص الذاكرة أثناء التشغيل ممكن هناك دائمًا. ولا يستطيع أي تشويش لـ JavaScript إغلاق هذا الباب؛ وما يستطيعه هو رفع كلفة الوصول إليه. ولا توجد حاليًا أي خدمات آلية على الإنترنت لفك تشويش الكود المحمي بـ VM — إذ تترجم كل عملية تشويش الكود إلى بايت كود مخصص بآلة افتراضية فريدة، ما يجعل بناء أدوات عامة أمرًا مستحيلًا. أما التشويش القياسي فالتغلب عليه أسهل بكثير: إذ يمكن عكسه جزئيًا في كثير من الأحيان باستخدام أدوات آلية وأدوات تجميل الكود. في المقابل يتطلب تشويش VM هندسة عكسية كاملة للآلة الافتراضية، وفك تشفير بايت كودها وفك ترميزه، وفهم مجموعة تعليماتها، وتتبع التنفيذ — وهي عملية قد تستغرق أسابيع من الجهد المتواصل. فبدون الدفاع الذاتي لـ VM، تستطيع وكلاء ذكاء اصطناعي قوية (مثل Claude Opus 4.7) تتبّع البايت كود وإعادة بناء الكود الأصلي تقريبيًا في قواعد الكود الصغيرة. أما مع تفعيل الدفاع الذاتي لـ VM، فإن الدفاعات المتعددة الطبقات ضد نماذج LLM — مقاومة الاعتراض، والتحقق من السلامة عبر النطاقات المستقلة، وفحوصات أصالة البايت كود — تعطّل الأساليب الديناميكية التي يستخدمها الوكيل لفهم البايت كود: أدوات القياس، والاعتراض، والتنفيذ في بيئة معزولة. وتبقى القراءة الساكنة للملف ممكنة لكنها لا تكشف سوى بايت كود مبهم، وكل محاولة لمراقبة بيئة التشغيل التي تفسّره تُفعّل فحص سلامة. ومن الملف وحده، يصبح فك التشويش الآلي بالذكاء الاصطناعي غير عملي. ولتعزيز حماية كودك أكثر: غلّف الدوال الحساسة داخل IIFE لتتحول أسماؤها بالكامل، وفعّل خيارات التقوية مثل تشفير البايت كود. اعرف المزيد عن كيف تحوّل VM الكود.
تشويش VM تقنية معقّدة، وقد لا تكون بعض الحالات الحدّية مدعومة بالكامل. وإذا تعطّل كودك بعد تشويش VM، فيمكنك تضييق نطاق المشكلة باستخدام vmTargetFunctionsMode: 'comment' لتشويش دوال بعينها بشكل انتقائي. راجع دليل استكشاف الأخطاء للاطلاع على تعليمات خطوة بخطوة حول تحديد الكود المسبب للمشكلة والإبلاغ عنها.
يضيف المشوِّش كودًا جديدًا للحماية من التنقيح والهندسة العكسية. وتُحوَّل النصوص إلى الصيغة الست عشرية، ومع تشويش VM يُضم مفسّر آلة افتراضية كامل إلى بايت كودك. لا تقلق كثيرًا بشأن الحجم — فالكود المشوَّش يُضغط جيدًا للغاية باستخدام GZIP الذي تفعّله معظم الخوادم افتراضيًا.
لكل تشويش تأثير ما على الأداء. التشويش القياسي عبؤه ضئيل. أما تشويش VM فتأثيره أكبر بكثير، وهو يعتمد اعتمادًا كبيرًا على الكود - فمثلًا، سيكون الكود المترجم إلى بايت كود والمعتمد على العودية أبطأ بوضوح. وفي المتوسط، يضيف الإعداد المسبق low تأثيرًا يقارب 10 أضعاف، بينما يكون الإعداد المسبق المضاد لنماذج LLM مع الدفاع الذاتي والحماية من التنقيح أبطأ بنحو 12 ضعفًا. ويمكنك ضبط التوازن بدقة عبر تعديل الخيارات أو بتطبيق تشويش VM بشكل انتقائي على أقسام الكود الحساسة فقط. راجع دليل أفضل الممارسات للاطلاع على نصائح التحسين.
لا، هذا غير موصى به وقد يعطّل الكود في بعض الحالات (خصوصًا إذا فعّلت الدفاع الذاتي). لكن يمكنك تمرير كودك عبر أداة تصغير قبل التشويش.
بالنسبة للملفات الأصغر من 4.4 ميجابايت، يُعالَج الكود المصدري بالكامل في الذاكرة ويُعاد فورًا كناتج مشوَّش. أما الملفات الأكبر (خطتا Team وBusiness)، فنرفعها مؤقتًا إلى تخزين آمن ونحذفها فور اكتمال التشويش. وكإجراء وقائي إضافي، تعمل مهمة تنظيف كل 5 دقائق لإزالة أي ملفات مضى على وجودها أكثر من 5 دقائق. ولا يُحتفظ بكودك أبدًا.
لا، من المستحيل إعادة الكود المشوَّش إلى كودك الأصلي، لذا احتفظ بالنسخة الأصلية في مكان آمن.
نعم. يمكنك اختيار "Node" كهدف في خيارات التشويش لتحسين الناتج لبيئات Node.js.
ندعم ES2015 (ES6) وجميع مزايا JavaScript الحديثة بما في ذلك صياغة ES2022+ وحقول الأصناف الخاصة وasync/await والتسلسل الاختياري والمزيد. ويجب ترجمة TypeScript وJSX إلى JavaScript قبل التشويش. ومع خطة مدفوعة، يمكنك أيضًا تشويش ملفات HTML — أضف السمة data-javascript-obfuscator إلى أي وسوم <script> تريد حمايتها، وسيجري تشويشها كل على حدة مع الحفاظ على بنية HTML. ولاحظ أن الكود في كل سكربت مُعلَّم يجب أن يكون مكتفيًا ذاتيًا (دون إشارات إلى سكربتات أخرى)، وأن سكربتات وحدات ES يجري تخطيها.
الناتج المشوَّش — بما في ذلك مفسّر الآلة الافتراضية وطبقة الدفاع الذاتي — مدعوم ومُختبَر بفاعلية على متصفحات سطح المكتب دائمة التحديث وعلى iOS 16 فأحدث (أي آخر 3 سنوات تقريبًا). أما المتصفحات الأقدم فتعمل على أساس بذل أفضل جهد ممكن نزولًا إلى حد أدنى صارم هو دعم وحدات ES2015؛ وكل ما دون ذلك، بما في ذلك Internet Explorer، خارج نطاق الدعم.
اطّلع على خطط الأسعار للحصول على حماية VM، أو جرّب ساحة التجربة المجانية على الإنترنت للتشويش القياسي. واقرأ دليل البدء للاطلاع على شرح كامل.
الأسعار والحساب
أسئلة حول الخطط والفوترة وحدود الاستخدام.
pricing.faq.usageMeasured.answer
pricing.faq.exceedLimit.answer
pricing.faq.upgradeDowngrade.answer
pricing.faq.cancel.answer
pricing.faq.paymentMethods.answer
