الأسئلة الشائعة
أسئلة عامة
أسئلة شائعة حول تشويش JavaScript وكيفية عمله.
هناك أسباب كثيرة لحماية كودك: منع أي شخص من نسخ عملك ببساطة (وهو أمر مهم بوجه خاص للمشاريع التي تعمل من جهة العميل مثل ألعاب HTML5)، وجعل الكود أصعب في الفهم والتعديل، وحماية عمل لم يُدفع ثمنه بعد لتتمكن من عرض نسخة عاملة منه على العملاء دون تسليمهم الكود المصدري.
يعيد التشويش القياسي كتابة JavaScript لديك إلى JavaScript أصعب قراءة: تُستبدل الأسماء، وتُنقل النصوص وتُرمَّز، ويُعاد هيكلة تدفق التحكم، لكن النتيجة تظل JavaScript يستطيع المنقِّح تتبّعه خطوة بخطوة. أما تشويش VM (الآلة الافتراضية) فيترجم أجسام دوالك إلى بايت كود مخصص ويشحن معه مفسّرًا مضمَّنًا يشغّله، فلا يعود المنطق المحمي موجودًا بصورة JavaScript. راجع تشويش VM لمعرفة الدوال المشمولة وكيفية اختيارها.
نعم. اضبط vmTargetFunctionsMode على comment، ثم علّم كل دالة تريد حمايتها بالتعليق /* javascript-obfuscator:vm */. احتفظ بهذه التعليقات عبر أي خطوة بناء تسبق التشويش. راجع استهداف دوال بعينها.
لا. يجب ألا تُخزَّن مفاتيح API والأسرار وبيانات الاعتماد إطلاقًا في كود الواجهة الأمامية. فحتى مع أعلى مستويات التشويش، يستطيع مهاجم مصمّم استخراج أي بيانات موجودة في كود JavaScript العامل من جهة العميل. التشويش يجعل الهندسة العكسية أصعب، لكنه ليس تشفيرًا ولا ينبغي الاعتماد عليه لتأمين الأسرار. وبدلًا من ذلك، خزّن الأسرار على خادمك الخلفي، واستخدم متغيرات البيئة على جانب الخادم، ومرّر استدعاءات API عبر خادمك الخلفي لإخفاء المفاتيح، أو استخدم رموزًا قصيرة الأجل يصدرها خادمك.
يزيد التشويش الجهد اللازم لفهم الكود وتعديله، سواء أجرى التحليلَ شخصٌ أو أداةٌ أو مساعدُ ذكاء اصطناعي؛ لكنه لا يضمن استحالة الهندسة العكسية. يظل وقت التشغيل قابلاً للمراقبة في بيئة يتحكم بها المهاجم. احتفظ بالأسرار وقرارات الأمان النهائية على الخادم. كيف تحوّل VM الكود.
استبعد أولًا دفاعات وقت التشغيل. تتعمّد VM Self Defending وVM Debug Protection إيقاف التنفيذ تحت أدوات الأتمتة والمتصفحات بلا واجهة والمنقِّحات، وعندما لا يطابق target بيئة التشغيل الفعلية، لذا شغّل الاختبارات الوظيفية على بناء اختبار منفصل تكون فيه معطّلة. إذا ظل ذلك البناء معطوبًا، فضيّق نطاق المشكلة باستخدام vmTargetFunctionsMode: 'comment' لتحويل دالة واحدة في كل مرة إلى الآلة الافتراضية. يشرح دليل استكشاف الأخطاء وإصلاحها كل خطوة وما يجب تضمينه في تقرير الخطأ.
يضيف المشوِّش كودًا: تحصل المعرِّفات على أسماء مولَّدة، وتنتقل النصوص إلى مصفوفة نصوص مع دوال للوصول إليها (مرمَّزة اختياريًا)، ومع تشويش VM يُضم مفسّر آلة افتراضية كامل إلى بايت كودك. لا تقلق كثيرًا بشأن الحجم - فالكود المشوَّش يُضغط جيدًا باستخدام gzip أو Brotli، اللذين تفعّلهما معظم الخوادم افتراضيًا.
قد تزيد الإعدادات المسبقة الأثقل حجم الناتج ووقت التنفيذ. قِس وقت البدء والمسارات المتكررة وحجم الحزمة المضغوطة لكودك بدل الاعتماد على معاملات تباطؤ ثابتة. مرجع الخيارات · أفضل الممارسات
لا. قد تؤدي إعادة كتابة الناتج إلى تعطيله، خصوصًا مع خيار Self Defending أو VM Self Defending، إذ يكتشفان التغييرات في الكود. يمكنك تشغيل أداة تصغير قبل التشويش، بشرط أن تُبقي تعليقات javascript-obfuscator مثل /* javascript-obfuscator:vm */.
لا نحتفظ بكودك المصدري. يعمل التشويش الأساسي لكود JavaScript داخل متصفحك. أما تشويش VM وHTML فيرسلان المصدر إلى خوادمنا التي تعالجه ثم تتخلص منه؛ وعندما يتجاوز الطلب 4.4 MB، ترفعه خطتا Team وBusiness إلى تخزين مؤقت يُحذف بعد المعالجة. ولأغراض معالجة إساءة الاستخدام وتحليل الاستخدام نحتفظ لمدة ثلاثة أشهر ببصمة SHA-256 لكل ناتج مشوَّش وببعض الإعدادات المستخدمة (مثل الإعداد المسبق والبيئة المستهدفة ودفاعات VM)، ولا نحتفظ أبدًا بالكود نفسه أو بأي محتوى منه. يُخزَّن سجل لوحة التحكم في متصفحك فقط؛ ويمكنك إدارته من السجل.
لا. لا يحتفظ المشوِّش بأسمائك الأصلية ولا بتعليقاتك ولا بتنسيقك، لذا لا يمكن تحويل الناتج مرة أخرى إلى كودك المصدري. وهذا ليس ضمانًا أمنيًا (راجع السؤال عن فك التشويش أعلاه)، لكنه يعني أن عليك الاحتفاظ بالنسخة الأصلية في مكان آمن.
نعم. يمكنك اختيار "Node" قيمةً لخيار Target في خيارات التشويش لتحسين الناتج لبيئات Node.js.
يشمل الدعم صياغة ES2015+ وasync/await والتسلسل الاختياري وحقول الأصناف الخاصة؛ واختبر الصياغة الأحدث على إصدار المشوِّش الذي تختاره. جمّع TypeScript وJSX وأنشئ حزمة تطبيقك قبل التشويش - راجع توافق بيئة التشغيل. ملفات HTML مدعومة عبر parseHtml؛ راجع تشويش HTML.
الناتج المشوَّش - بما في ذلك مفسّر الآلة الافتراضية وطبقة Self Defending - مدعوم ومُختبَر بفاعلية على متصفحات سطح المكتب دائمة التحديث وعلى iOS 16 فأحدث (أي آخر 4 سنوات تقريبًا). أما المتصفحات الأقدم فتعمل على أساس بذل أفضل جهد ممكن نزولًا إلى حد أدنى صارم هو دعم وحدات ES2015؛ وكل ما دون ذلك، بما في ذلك Internet Explorer، خارج نطاق الدعم.
اطّلع على خطط الأسعار للحصول على حماية VM، أو جرّب ساحة التجربة المجانية على الإنترنت للتشويش القياسي. واقرأ دليل البدء للاطلاع على شرح كامل.
الأسعار والحساب
أسئلة حول الخطط والفوترة وحدود الاستخدام.
يُقاس الاستهلاك بحجم الكود المصدري المُدخل بالبايت. ولكل مهمة تشويش حد أدنى للاحتساب يبلغ 0.1 ميجابايت (102,400 بايت) لضمان توزيع عادل للموارد. فمثلًا، إذا شوّشت ملفًا بحجم 50 كيلوبايت، فسيُحتسب على أنه 0.1 ميجابايت من حصتك. أما الملفات الأكبر من 0.1 ميجابايت فتُحتسب بحجمها الفعلي.
بمجرد بلوغك حد تشويش VM، يمكنك متابعة استخدام التشويش القياسي (داخل المتصفح) مجانًا وبلا حدود. وبالنسبة للخطط المدفوعة، تُعاد تهيئة حصة VM كل شهر في الذكرى الشهرية لبدء اشتراكك، بما في ذلك في الخطط السنوية. أما خطة Free فلها حد مدى الحياة لا يُعاد تعيينه. والخطط التي لها حد يومي لتشويش VM يمكنها التشويش باستخدام VM مجددًا في اليوم التالي بعد بلوغ هذا الحد. ويمكنك ترقية خطتك في أي وقت للحصول على حصة أكبر من تشويش VM.
نعم، يمكنك ترقية خطتك أو خفضها في أي وقت. وعند الترقية، تُحتسب عليك قيمة تناسبية عن الفترة المتبقية من دورة الفوترة. وعند الخفض، يبدأ سريان السعر الجديد اعتبارًا من دورة الفوترة التالية.
يمكنك إلغاء اشتراكك في أي وقت. وستحتفظ بإمكانية الوصول إلى خطتك حتى نهاية دورة الفوترة الحالية. يرجى ملاحظة أننا لا نقدّم مبالغ مستردة عن فترات فوترة جزئية أو عن وقت غير مستخدم.
نقبل جميع بطاقات الائتمان الرئيسية (Visa وMastercard وAmerican Express) وبطاقات الخصم عبر معالج الدفع الآمن Stripe. وجميع المعاملات مشفَّرة ومتوافقة مع معيار PCI.
