WP-Optimize Plugin المتهم بالغش في PageSpeed ​​وأدوات اختبار الأداء الأخرى

نشرت: 2022-08-30

صدم Gijo Varghese ، المطور الذي يطلق على نفسه "متحمسًا لأداء الويب" ، مستخدمي WordPress حول العالم خلال عطلة نهاية الأسبوع عندما قام بالتغريد على لقطة شاشة توضح كيف تمنع WP-Optimize صراحةً تحميل ملفات JavaScript محددة عندما يختبر المستخدمون مواقعهم من خلال الأداء الشائع أدوات الاختبار.

قال فارغيز: "عندما يتم تحميل موقع ما ، يتم تحميل ملفات جافا سكريبت فقط عندما يكون وكيل المستخدم / المتصفح ليس Lighthouse / GTmetrix / Headless Chrome / Pingdom". "لا يوجد JS = درجات عالية. ولكن بالنسبة للمستخدمين الحقيقيين ، يتم تحميل ملفات JS هذه! "

أكد فارغيز أنه كان يختبر النسخة المجانية من WP-Optimize ، والتي يتم استخدامها على أكثر من مليون موقع WordPress. استحوذت UpdraftPlus على WP-Optimize في عام 2016 وتزعم أن الأداة "تحتوي على كل ما تحتاجه للحفاظ على سرعة موقعك على الويب وتحسينه تمامًا". يتم أيضًا الترويج لنسخة تجارية من خلال البرنامج المساعد المجاني الذي يتم استضافته على WordPress.org.

"أخبرني ، UpdraftPlus ، كيف من المفترض أن أستمر في الوثوق بشركتك من خلال النسخ الاحتياطية لعملائي عند استخدام هذه الممارسات الخادعة والاحتيالية؟" قال أحد العملاء ، آدم لوي ، ردًا على اكتشاف فارغيز للمكوِّن الإضافي بعدم تحميل JS لأدوات الأداء.

قال مالك وكالة WordPress ومطورها بريان جاكسون: "رائع ، كل ما يمكنني قوله هو خيبة أمل مطلقة".

يشبه هذا النوع من الخداع بشكل مخيف عملية احتيال أبلغ عنها شخص تعاقد مع مترجم أداء مستقل في Upwork والذي تلاعب بشكل مصطنع بنتائج Google Pagespeed. قارن آخرون المشاركون في المناقشة على Twitter ذلك بفضيحة انبعاثات فولكسفاغن حيث وُجد أن صانع السيارات ينشط ضوابط الانبعاثات الخاصة به فقط أثناء الاختبارات المعملية من أجل تلبية متطلبات وكالة حماية البيئة بعد انتهاك. تنبعث من المركبات على الطريق ما يصل إلى 40 ضعفًا من أكاسيد النيتروجين أثناء القيادة ، مقارنةً بكيفية أدائها في الاختبارات المعملية المزيفة.

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

حتى عند التركيز على تجارب المستخدم الحقيقية ، غالبًا ما يعتمد مالكو المواقع على الاختبارات لتشخيص المشكلات ومعرفة كيف يمكن تحسين أداء الموقع. لا يتوقعون أن يقوم المكون الإضافي بإخفاء ملفات JS من أدوات الأداء. أدى خداع الاختبارات إلى تآكل مصداقية WP-Optimize.

"رائع. قال جوناثون ويليام ، أحد عملاء UpdraftPlus ، إذا كان هذا صحيحًا ، فهو قصير النظر كما لا يمكن تبريره. "وهذا يجعلني أتساءل عما إذا كان بإمكاني الوثوق بمنتجهم الآخر ، UpdraftPlus ، والذي أستخدمه لإجراء نسخ احتياطي للعديد من مواقع العملاء."

اتصلت بـ UpdraftPlus وقال المطور الرئيسي ديفيد أندرسون إن الشركة لم تكن على علم بالمشكلة المتعلقة بالشفرة ولكنها تتعلق ببعض الخلفية الدرامية. أجرى UpdraftPlus محادثات لفترة وجيزة مع مؤلف المكون الإضافي Fast Velocity Minify حول إمكانية الجمع بين القوى ، حيث سيحافظ على وحدة التصغير داخل WP-Optimize واكتساب المزيد من المستخدمين. في النهاية لم يتمكنوا من التوصل إلى اتفاق ، ولكن خلال ذلك الوقت ، قام مطورو WP-Optimize بتقسيم وتكييف Fast Velocity Minify بموجب GPL. لم يعد المطورون الذين عملوا على هذا التكيف مع الشركة.

قال أندرسون: "في الالتزام بمستودع المصدر الخاص بنا ، منذ 2.5 عام (كانون الثاني (يناير) 2020) ، تم تسمية الالتزام" حل "إضافة كود CSS و JS Minification GPL من" Fast Velocity Minify "- الجزء 6". "جزء من سلسلة من عمليات الدمج الأولية للتعليمات البرمجية التي تمت إعادة تحليلها لتصبح أكثر وضوحًا وتستخدم تفضيلات أسلوب الترميز الخاصة بنا (ولكن دون تغيير أي وظيفة). لذا فإن النية الواضحة لدمج هذه السطور كانت لإحضار كود معاد بناءه دون إجراء أي تغييرات في تلك المرحلة.

"وفقًا لسجل الالتزام (أي وظيفة" git blame ") لم يتم إجراء أي تغييرات على هذا الرمز منذ ذلك الحين ، أي أنه تم استيراده. (محفوظات WP Optimize عامة في WordPress SVN أيضًا). "

بعد فحص سريع للرمز ، خلص أندرسون إلى أن فريقه قد يحتاج إلى إعادة فحصه ، لأنهم لم يكونوا على علم بما تمت إضافته قبل عامين.

"بينما أحاول تتبع هذه الوظيفة من خلال الكود داخل المكونات الإضافية ، يبدو أن النية في ظاهرها هي أنه إذا كان زائر الموقع" روبوتًا "، فلن يتم تنفيذ التعليمات البرمجية التي لا معنى لها للروبوتات ، " هو قال.

"ومع ذلك ، بعد قولي هذا ، 1) يبدو أن أسماء الروبوتات غامضة / منقحة بشدة ، وهذا أمر غريب (لماذا؟) ، و 2) هناك الكثير من برامج الروبوت الأكثر وضوحًا غير المدرجة هناك ، مثل Googlebot نفسه. إذا تم عرض هذه الوظيفة أمامي للمراجعة اليوم ، فسأكون بالتأكيد أتساءل عن سبب ذلك. لا يمكنني قراءة نفسي مرة أخرى قبل 32 شهرًا ، لكنني أتذكر أنها سلسلة طويلة من التصحيحات الكبيرة ، لذلك لم يتم تحليلها عن كثب على أساس سطر بسطر. كنا نعلم أننا حددنا FVM كمكوِّن إضافي جيد وانصب تركيزنا الرئيسي على تكييفه مع هيكلنا وأسلوبنا ، وكانت تلك هي الأشياء التي كنت أبحث عنها شخصيًا بصفتي المراجع النهائي ".

باختصار ، لم يكن فريق التطوير في UpdraftPlus على علم بهذا الرمز حتى تم نشر سلسلة محادثات Twitter خلال عطلة نهاية الأسبوع.

قال أندرسون: "أنا سعيد بالتأكيد لجلبها إلى نيتنا". "تعليق الكود المرتبط على جزء ذي صلة في مصدره الأصلي يقصد به منع الطلبات غير الضرورية للروبوتات ، ولكن عند الفحص الدقيق عما حصل عليه هذا السطر في ذلك الوقت ، هذا شيء نريد أن ننظر إليه ، كما هو الحال مشكوك فيه / غريب ، وسنفعل ذلك من خلال تخصيصه لأحد أعضاء الفريق وهو خبيرنا في تحسينات JavaScript ".

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

في غضون ذلك ، نشر UpdraftPlus إشعارًا في منتدى دعم المكون الإضافي لإبلاغ المستخدمين أن الكود قيد التحقيق حاليًا.

قال أندرسون: "لكي نكون واضحين وتريح أذهان المستخدمين: الكود المعني ليس خطيرًا ، أو فيروسًا ، أو عدوى ، أو مفيدًا للقراصنة ، أو أي شيء من هذا النوع". "الادعاء هو أن الغرض الوحيد من وجوده هو الغش في اختبارات السرعة بشكل فعال. هذا الرمز ، إذا كان الأمر كذلك ، لا ينتمي إلى WP Optimize وسنقوم بإزالته بإصدار جديد. إن نزاهة منتجاتنا وثقة عملائنا أمران أساسيان بالنسبة لنا (ووضع الأشياء عمدًا في كود مفتوح المصدر يؤدي إلى المساومة وهذا ، بصراحة ، شيء غبي يجب القيام به). "