WP-Optimize ينفي مزاعم الغش في أدوات الأداء
نشرت: 2022-08-31بالأمس ، نشرنا مزاعم من Gijo Varghese ضد UpdraftPlus ، صانعي WP-Optimize. Varghese هو مؤسس FlyingProxy ، وهي شركة منافسة ، ويعرّف نفسه على أنه "متحمس للأداء". واتهم المكوّن الإضافي بـ "خداع Pagespeed والأدوات الأخرى" بإخفاء ملفات JavaScript من التحميل عندما يختبر المستخدمون مواقعهم من خلال أدوات اختبار الأداء الشائعة. يستخدم الكود مجموعة غريبة من الأسماء المبهمة لأدوات الاختبار ، الأمر الذي أثار شكوكه.
أهمل Varghese أن يذكر في تغريدته أن هذا هو ما يحدث عندما يتم تعيين أحد إعدادات المكون الإضافي ضمن Minify> JS على تأجيل JavaScript. هناك نوعان من إعدادات زر الاختيار ولكنهما محيران.
يتيح زر الاختيار الأول للمستخدمين تأجيل ملفات JavaScript المحددة. تقول أنه سيتم تحميل الملفات بشكل غير متزامن (ليس مثل التأجيل) ، ثم تنص أيضًا على أنه يجب على المستخدمين تحديد زر الاختيار الأول إذا كانوا يريدون استبعاد البرامج النصية من اختبارات سرعة الصفحة. ليس من الواضح كيف سيتم تحميل البرامج النصية للمستخدم أو لمواقع الاختبار. الاستبعاد ليس هو نفسه التأجيل ، لذلك في هذه الحالة تكون واجهة مستخدم الإعدادات مضللة إلى حد ما ويجب أن تكون أكثر وضوحًا.
خيار الراديو الثاني هو للمستخدمين الذين يتطلعون ببساطة إلى تأجيل جميع JavaScript. إذا حدد أحد "تأجيل استخدام JavaScript (استخدم هذه الطريقة إذا كنت تحتاج إلى دعم لمتصفحات أقدم) ، فيجب أن تفعل بالضبط ما يصفه في الرابط:
إذا تم تعيين السمة
defer
، فإنها تحدد أن البرنامج النصي يتم تنزيله بالتوازي مع تحليل الصفحة ، ويتم تنفيذه بعد انتهاء تحليل الصفحة.
على الرغم من أن واجهة المستخدم تقول إنها تؤجل جميع الملفات ، فإن WP-Optimize لا يقوم أبدًا بتحميل JavaScript لمواقع اختبار الأداء. في هذا الخيار الثاني ، يتم استبعاد مواقع الاختبار دون إذن المستخدمين. إذا أراد المستخدمون ذلك ، فسيختارون زر الاختيار السابق ويحددون بوضوح البرامج النصية التي سيتم استبعادها.
استبعد فارغيز بعض التفاصيل المهمة في تقريره الأصلي ، لكنها كانت دقيقة من حيث أن بعض الإعدادات مضللة بشأن ما يفعلونه بالفعل. لقد أوضح ذلك في فيديو متابعة حيث لا يوجد إدخال يدوي لأي نصوص لاستبعادها ويتم تحديد خيار الراديو الثاني.
قال فارغيز: "إنهم يوفرون خيارًا للمستخدمين لخداع أدوات الاختبار". "أيضًا ، استخدام أسماء مثل" ighth "لـ Lighthouse و" tmetr "لـ GTmetrix يظهر بوضوح ما يحاولون القيام به.
"يحاول معظم المستخدمين تعطيل وتمكين ميزات مختلفة لمعرفة أي منها يزيد السرعة / النتائج في أدوات الاختبار".
يؤكد فارغيز أنه لا توجد حاجة للقيام بالأشياء بشكل مختلف لاختبار الأدوات والبشر ، لأن هذا قد يكون مربكًا لأصحاب المواقع. تركت ادعاءاته تفاصيل مهمة وتلمح إلى أن كل هذا مخفي في القانون. إنه مخصص لأحد الإعدادات وليس للإعدادات الأخرى. تشير الواجهة إلى أنه يجب عليك إدخال البرامج النصية يدويًا لاستبعادها من الاختبار ، ولكن هذا أيضًا مضلل.
نشرت WP-Optimize ردًا علنيًا على الادعاءات اليوم ، لكنها لم تكشف عن أي من نتائج التحقيق في الكود الذي أكملوه. بدلاً من ذلك ، استشهدت الشركة بمقطع فيديو أنشأه Peter Wilkinson من Divi Engine ، والذي يدعي أنه يجب على المستخدمين إدخال البرامج النصية يدويًا لجعل مواقع الاختبار تستبعدهم.
نُقل عن ويلكنسون استنتاجه أن "Gijo Varghese استخدم الخداع للترويج للصفحات الطائرة والصحافة الطائرة" في لفت انتباه الجمهور إلى هذه المشكلة على Twitter.
قال ويلكينسون: "في الواقع (من بحثي) لا تقوم WP-Optimize" بخداع "أدوات Pagespeed عند تثبيت أو تصغير JavaScript الخاص بك".
"لخداع الأدوات ، تحتاج إلى إضافة ملفات JS التي تريد تحميلها غير متزامن يدويًا إلى إعداد يحمل بوضوح التسمية" استخدم هذا إذا كان لديك نص برمجي مستقل تمامًا أو كنت ترغب في استبعاد البرامج النصية من اختبارات سرعة الصفحة ( PageSpeed Insights ، GTMetrix ...) "
ليست هذه هي القضية. أسهل طريقة للاختبار هي تثبيت المكون الإضافي ، وتشغيل "تأجيل كل جافا سكريبت" ، ثم عرض المصدر لمعرفة أن أدوات الأداء مستبعدة.
نظرًا لأن استجابة WP-Optimize العامة للمسألة لم تتضمن أي شيء من تحقيق الكود الخاص بهم ، فقد اتصلت بهم مرة أخرى. لم يكن نائب قائدهم فينكات راج متاحًا للإجابة عن سبب قيام الإعدادات الأخرى في المكون الإضافي بإزالة JS بصمت لأدوات اختبار الأداء بنقرة زر اختيار. شارك جو مايلز ، رئيس الإستراتيجية في الشركة ، آخر المعلومات التي تلقاها بشأن المشكلة من فينكات راج:
"الإعداد المتقدم المستخدم في الادعاء مفيد في الواقع لمعرفة ما إذا كانت ملفات js / css الأساسية تؤدي بالفعل إلى إبطاء صفحة الويب أم لا. يتم افتراضيًا إيقاف تشغيل هذه الميزة ولا يتم تمكينها إلا بواسطة المستخدمين المتقدمين الذين يعرفون ما يفعلونه.
"يمكنك استخدام هذه الميزة إذا كان لديك نص برمجي مستقل تمامًا أو كنت ترغب في استبعاد البرامج النصية من اختبارات سرعة الصفحة (PageSpeed Insights و GTMetrix ...)
"النصوص المستقلة هي على سبيل المثال نصوص" تحليلات "أو" بكسل ". ليست مطلوبة حتى يعمل الموقع. " استخدم هذا إذا كان لديك ورقة أنماط مستقلة تمامًا أو كنت ترغب في استبعاد أوراق الأنماط من اختبارات سرعة الصفحة (PageSpeed Insights و GTMetrix ...) "
هذا ينطبق على زر الاختيار الأول. لا يحتوي الزر الثاني على أي إشارة إلى أنه سيتم إيقاف تشغيل جميع البرامج النصية عند استخدام أدوات الاختبار - ولا يبدو أن فريق WP-Optimize مدرك أنه متاح بنقرة زر اختيار.
لم يتمكن مايلز من تأكيد ما إذا كانت هذه هي الطريقة التي يُقصد بها العمل أو ما إذا كان خطأ. كما أنه لم يستطع تفسير سبب إخفاء أسماء مواقع الاختبار الشهيرة في الشفرة ، لكنه قال إن المطور الأصلي "لا يعمل معنا لأنه تم إعادة توجيه كود مفتوح المصدر من مكان آخر."
قال مايلز: "ومع ذلك ، نعتقد أن هذا يصرف الانتباه عن المزاعم الكاذبة ، والمهم هو أن واجهة المستخدم واضحة جدًا بالنسبة للإعدادات ، لذلك لا ينخدع المستخدمون".
قال راؤول بيكسوتو ، مؤلف Fast Velocity Minify (FVM) ، المكون الإضافي الذي نسخ WP-Optimize الرمز منه ، أنه يمكنه تأكيد أن هذا الرمز جزء من FVM لكنه قال إنه لم يتم استخدامه بنفس الطريقة:
كان الغرض من هذا الرمز على FVM مختلفًا تمامًا عن ذلك الموجود في WP Optimize ، علاوة على ذلك ، كان مطلوبًا من المستخدمين تمكين هذا الخيار يدويًا عبر wp-admin (تم تعطيله افتراضيًا).
كان الغرض من هذا الرمز هو اختبار تأثير البرامج النصية أو المكونات الإضافية الجديدة في الأداء بشكل انتقائي ، ومساعدة المطورين على تحديد ما إذا كان ينبغي عليهم إعادة تشكيل أو إزالة أو استبدال المكونات الإضافية أو البرامج النصية الثقيلة.
كان هذا موجودًا في FVM للإجابة على أسئلة مثل هذه:
"لدي موقع إنتاج وأدائي منخفض. ماذا سيكون الأداء إذا لم يكن هذا المكون الإضافي موجودًا هنا ، ولكن دون إزالته فعليًا من الموقع للمستخدمين العاديين حتى الآن؟ "
"ماذا سيكون الأداء إذا كان بإمكاني تأجيل جميع البرامج النصية ، أو نصوص برمجية محددة غير متوافقة حاليًا مع التأجيل ، قبل إجراء هذا التغيير فعليًا للجميع؟"
يتوفر شرح رسمي بشأن استخدامه على FVM في منتدى دعم المكون الإضافي اعتبارًا من صباح اليوم.
قال بيكسوتو: "أفترض أن المطورين الذين عينتهم WP Optimize لم يفهموا ما كان يفعله هذا على FVM أو تحت أي إعدادات ، أو ربما شعروا برغبة في استخدامه كاختراق".
"يجب أيضًا أن نتذكر جيدًا أنه في ذلك الوقت ، لم تكن هناك مقاييس حيوية للويب متاحة للجمهور ، لذا فإن استخدام شيء مثل هذا من شأنه أن يؤدي إلى نتائج" قابلة للقياس "أفضل ، وبالتالي تقديم ميزة المنتج".
قال Piexoto إنه "شعر بأنه مضطر" لإزالة هذا الرمز قبل عامين بسبب عدد المرات التي أسيء فيها مطورو البرامج الذين كانوا يغشون في الاختبارات لعملائهم:
تقدم سريعًا لبعض الوقت ، وأدركت أن بعض المطورين يستخدمون هذا بالفعل للغش في الاختبارات لعملائهم ، لذلك شعرت بأنني مضطر لاتخاذ القرار بشأن FVM 3 (أواخر عام 2020 بالفعل) لإزالة هذه الميزة ، والتي استوفيت من قبل الكثير من احتجاجات المطورين الغاضبين عندما بدأ عملاؤهم يشتكون من انخفاض درجاتهم.
حاولت في ذلك الوقت ، أن أوضح أن الحصول على درجة جيدة لا يعني وجود مقاييس جيدة لمؤشرات الويب الحيوية ، لكنني في النهاية تخلت عن ذلك ، حيث كان بعض الأشخاص يهتمون بنتائج الاختبار أكثر من الأداء الفعلي.
بعد إصدار FVM 3 ، أقوم بشكل أساسي بصيانته وإجراء إصلاحات صغيرة للأخطاء عند الإبلاغ عنها ، حيث يتعين علي التركيز على أشياء أخرى. لقد أزلت هذه الوظيفة وأصلحت بعض الأخطاء التي كانت معلقة في الإصدار 3.2.9 ودفعت التحديث ، لذا أشكرك على إحالة هذا إلي.
لأي سبب من الأسباب ، اختار UpdraftPlus دمج هذا الرمز في WP-Optimize في عام 2020 ، وكما ورد بالأمس ، لم يمس الرمز منذ ذلك الحين.
ما بدا أنه قضية أبيض وأسود بالأمس هو موقف أكثر دقة. تم توثيق تنفيذ WP-Optimize لكود FVM بشكل سيئ في واجهة المستخدم وهو مضلل حول كيفية تحميل البرامج النصية. يمكن أن يقود مالكي المواقع إلى تنشيطه دون أن يكونوا مستخدمين متقدمين ، وله تاريخياً احتمال كبير لإساءة الاستخدام. عندما اكتشفها فارغيز ، كشفها بطريقة ملتهبة ، وشعرت باليقين من أنه وجد خطأ بسبب التعتيم على الشفرة بشكل غير مفهوم. أدى هذا إلى تعقيد المشكلة ولكنه بدأ محادثة مهمة وواسعة النطاق.
هل يجب أن يكون لدى المستخدمين هذا النوع من الوصول السهل (نقرتان) لإيقاف تشغيل البرامج النصية لأدوات اختبار الأداء؟ كيف يمكن للمطورين في نفس الصناعة التواصل بشكل أفضل حول الأضرار المحتملة للمستخدمين التي يرونها في منتجات الآخرين؟ ما نوع متطلبات توثيق الكود التي يجب على الوكالات تنفيذها لمنع مثل هذا الموقف حيث يلزم التحقيق في الكود على مدى أيام من أجل معرفة ما هو المقصود به؟