Плагин WP-Optimize обвиняют в мошенничестве с PageSpeed ​​и другими инструментами тестирования производительности

Опубликовано: 2022-08-30

Гиджо Варгезе, разработчик, который называет себя «энтузиастом веб-производительности», шокировал пользователей WordPress по всему миру на выходных, когда он опубликовал в Твиттере скриншот того, как WP-Optimize явно предотвращает загрузку выбранных файлов JavaScript, когда пользователи тестируют свои сайты с помощью популярной производительности. инструменты тестирования.

«При загрузке сайта файлы JavaScript загружаются только в том случае, если пользовательский агент/браузер не является Lighthouse/GTmetrix/Headless Chrome/Pingdom», — сказал Варгезе. «Нет JS = высокие баллы. Но для реальных пользователей эти файлы JS загружаются!»

Варгезе подтвердил, что тестировал бесплатную версию WP-Optimize, которая используется более чем на миллионе сайтов WordPress. UpdraftPlus приобрела WP-Optimize в 2016 году и утверждает, что этот инструмент «имеет все необходимое для быстрой и тщательной оптимизации вашего сайта». Коммерческая версия также продвигается через бесплатный плагин, размещенный на WordPress.org.

«Скажите мне, UpdraftPlus, как я могу продолжать доверять вашей компании резервные копии моих клиентов, когда вы используете эти обманные и мошеннические методы?» — сказал один клиент Адам Лоу в ответ на то, что Варгезе обнаружил, что плагин не загружает JS для инструментов повышения производительности.

«Вау, все, что я могу сказать, это полное разочарование», — сказал владелец и разработчик агентства WordPress Брайан Джексон.

Этот тип обмана очень похож на мошенничество, о котором сообщил кто-то, кто нанял фрилансера на Upwork, который искусственно манипулировал результатами Google Pagespeed. Другие, участвовавшие в обсуждении в Твиттере, сравнили это со скандалом с выбросами Volkswagen, когда было обнаружено, что автопроизводитель активировал свои средства контроля выбросов только во время лабораторных испытаний, чтобы соответствовать требованиям EPA после нарушения. Транспортные средства на дороге выбрасывают до 40 раз больше оксидов азота во время вождения по сравнению с тем, как они показали себя в сфальсифицированных лабораторных испытаниях.

Варгезе и несколько других участников беседы пришли к выводу, что именно поэтому владельцы сайтов должны сосредоточиться на том, что испытывают пользователи в реальном мире, а не на результатах тестов инструментов производительности.

Даже ориентируясь на реальный пользовательский опыт, владельцы сайтов часто полагаются на тесты, чтобы диагностировать проблемы и посмотреть, как можно улучшить производительность сайта. Они не ожидают, что плагин будет скрывать JS-файлы от инструментов повышения производительности. Обман тестов подорвал доверие к WP-Optimize.

"Ух ты. Если это правда, то это столь же недальновидно, сколь и непростительно», — сказал клиент UpdraftPlus Джонатон Уильям. «И это заставляет меня задуматься, могу ли я доверять другому их продукту, UpdraftPlus, который я использую для резервного копирования нескольких клиентских сайтов».

Я связался с UpdraftPlus, и ведущий разработчик Дэвид Андерсон сказал, что компания не знает о проблеме с кодом, но рассказала некоторую предысторию. UpdraftPlus кратко вел переговоры с автором плагина Fast Velocity Minify о возможности объединения усилий, при котором он будет поддерживать модуль минификации в WP-Optimize и получать больше пользователей. В конечном итоге они не смогли прийти к соглашению, но за это время разработчики WP-Optimize разветвили и адаптировали Fast Velocity Minify под GPL. Разработчики, работавшие над этой адаптацией, больше не работают в компании.

«В фиксации в нашем собственном исходном репозитории 2,5 года назад (январь 2020 г.) фиксация была помечена как «Решить», «Добавить GPL-код CSS и JS Minification из Fast Velocity Minify — часть 6», — сказал Андерсон. «Часть серии первоначальных слияний кода, который был реорганизован, чтобы стать чище и использовать наши предпочтения стиля кодирования (но без изменения какой-либо функциональности). Таким образом, очевидное намерение слияния этих строк состояло в том, чтобы перенести рефакторинговый код без внесения каких-либо изменений на этом этапе.

«Согласно истории коммитов (т. е. функции «git виноват»), с тех пор в этот код не было внесено никаких изменений, т. е. он был импортирован. (История WP Optimize также общедоступна в WordPress SVN)».

После беглого изучения кода Андерсон пришел к выводу, что его команде, возможно, придется пересмотреть его, поскольку они не знали, что было добавлено два года назад.

«Когда я пытаюсь проследить эту функцию с помощью кода в плагинах, на первый взгляд кажется, что намерение состоит в том, что если посетитель веб-сайта является «ботом», то код, который не имеет смысла для ботов, не будет выполняться, " он сказал.

«Однако, сказав это, 1) имена ботов выглядят сильно запутанными/отредактированными, что странно (почему?), и 2) есть много более очевидных ботов, которые не перечислены там, например, сам Googlebot. Если бы эта функция была предложена мне для обзора сегодня, я бы, конечно, спросил, почему это так. Я не могу читать свои мысли на 32 месяца назад, но я помню, что это была длинная серия больших патчей, поэтому она не анализировалась построчно. Мы знали, что определили FVM как хороший плагин, и наше основное внимание было сосредоточено на его адаптации к нашей структуре и стилю, и это были вещи, на которые я лично смотрел как окончательный рецензент».

Таким образом, команда разработчиков UpdraftPlus не знала об этом коде, пока на выходных не была опубликована ветка Twitter.

«Я, безусловно, рад, что это доведено до наших целей», — сказал Андерсон. «Связанный код комментирует связанный фрагмент в его исходном коде, который предназначен для предотвращения ненужных запросов для ботов, но при более внимательном рассмотрении, чем эта строка в то время, это то, на что мы хотим взглянуть, как это выглядит сомнительно/странно, и мы сделаем это, назначив его члену команды, который является нашим экспертом по оптимизации JavaScript».

Андерсон также сказал, что, если эксперты по оптимизации JavaScript не смогут найти какую-либо законную цель для кода, «он обязательно будет удален» с четким и недвусмысленным раскрытием причин, лежащих в его основе.

Тем временем UpdraftPlus опубликовал уведомление на форуме поддержки плагина, чтобы проинформировать пользователей о том, что код в настоящее время исследуется.

«Чтобы внести ясность и успокоить пользователей: код, о котором идет речь, не опасен, не является вирусом, инфекцией, полезен для хакеров или что-то в этом роде», — сказал Андерсон. «Утверждение состоит в том, что единственной целью его существования является обман на тестах скорости. Такой код, если это так, не принадлежит WP Optimize, и мы удалим его в новом выпуске. Честность наших продуктов и доверие наших клиентов очень важны для нас (и преднамеренно помещать вещи в открытый исходный код, который ставит под угрозу это, честно говоря, глупо)».