Gijo Varghese是一位自称“网络性能爱好者”的开发人员,他在推特上发布了一张截图,说明WP-Optimize如何在用户通过流行的性能测试工具,测试他们的网站时明确阻止加载选定的 JavaScript 文件,这让全世界的 WordPress 用户感到震惊。
“加载站点时,仅当用户代理/浏览器不是 Lighthouse/GTmetrix/Headless Chrome/Pingdom 时才加载 JavaScript 文件,”Varghese 说。“没有 JS = 高分。但是对于真正的用户来说,这些 JS 文件是被加载的!”
Varghese 证实他正在测试 WP-Optimize 的免费版本,该版本已在超过一百万个 WordPress 网站上使用。UpdraftPlus 在 2016 年收购了 WP-Optimize,并声称该工具“拥有保持网站快速和彻底优化所需的一切”。商业版本也通过托管在 WordPress.org 上的免费插件进行推广。
“告诉我,UpdraftPlus,当你使用这些欺骗性和欺诈性做法时,我应该如何继续信任你的公司并提供我客户的备份?” 一位客户 Adam Lowe在回应 Varghese 发现该插件未加载 JS 以获取性能工具时表示。
“哇,我只能说太令人失望了,”WordPress 机构所有者和开发人员布赖恩杰克逊说。
这种类型的欺骗与某人报告的骗局非常相似,该人在 Upwork 上与一名绩效自由职业者签约,人为地操纵了 Google Pagespeed 结果。参与 Twitter 讨论的其他人将其与大众汽车排放丑闻进行了比较,在该丑闻中,该汽车制造商被发现仅在实验室测试期间激活其排放控制,以便在违规后满足 EPA 的要求。与在装配式实验室测试中的表现相比,道路上的车辆在驾驶时排放的氮氧化物高达 40 倍。
Varghese 和对话中的其他几位参与者得出结论,这就是为什么网站所有者应该关注真实世界用户的体验,而不是性能工具测试分数。
即使专注于真实的用户体验,网站所有者也经常依赖测试来诊断问题并了解如何改进网站的性能。他们不希望插件会从性能工具中隐藏 JS 文件。欺骗测试已经侵蚀了 WP-Optimize 的可信度。
“哇。如果属实,这既是短视的,也是不可原谅的,”UpdraftPlus 客户 Johnathon William说。“这让我想知道我是否可以信任他们的另一个产品 UpdraftPlus,我用它来备份多个客户站点。”
我联系了 UpdraftPlus,首席开发人员 David Anderson 说公司不知道代码存在问题,但与一些背景故事有关。UpdraftPlus 与Fast Velocity Minify插件的作者就联合力量的可能性进行了简短的讨论,他将在 WP-Optimize 中维护缩小模块并获得更多用户。最终他们无法达成协议,但在那段时间 WP-Optimize 的开发人员在 GPL 下分叉和改编了 Fast Velocity Minify。从事该改编工作的开发人员不再在公司工作。
“在 2.5 年前(2020 年 1 月)对我们自己的源存储库的提交中,该提交被标记为‘解决’添加来自‘Fast Velocity Minify’ – 第 6 部分的 CSS 和 JS 缩小 GPL 代码,”安德森说。“一系列初始代码合并的一部分,经过重构以更简洁并使用我们的编码风格偏好(但不改变任何功能)。因此,合并这些行的明显目的是在不进行任何更改的情况下引入重构的代码。
“根据提交历史记录(即’git blame’函数),此后没有对该代码进行任何更改,即它是导入时的。(WP Optimize 的历史也在 WordPress SVN 中公开)。”
在对代码进行粗略检查后,安德森得出结论,他的团队可能需要重新检查它,因为他们不知道两年前添加了什么。
“当我尝试通过插件中的代码跟踪该功能时, 表面上的意图 似乎是,如果网站访问者是“机器人”,那么对机器人毫无意义的代码将不会执行, “ 他说。
“但是话虽如此,1)机器人名称看起来被严重混淆/编辑,这很奇怪(为什么?),以及 2)还有很多更明显的机器人没有在此处列出,例如 Googlebot 本身。如果今天将该功能提交给我进行审查,我当然会质疑为什么会这样。我无法在 32 个月前回想自己,但是,我记得它是一长串大补丁,因此没有逐行仔细分析。我们知道我们已经将 FVM 确定为一个很好的插件,我们的主要重点是使其适应我们的结构和风格,而这些正是我个人作为最终审阅者所关注的东西。”
总而言之,UpdraftPlus 的开发团队直到周末发布 Twitter 帖子才知道此代码。
“我当然很高兴将它带到我们的意图中,”安德森说。“相关代码在其原始源代码中对相关片段进行了注释,它旨在防止对机器人的不必要请求,但在比当时得到的那条线更仔细的检查后,这是我们想要查看的内容,因为它确实看起来有问题/奇怪,我们将把它分配给我们在 JavaScript 优化方面的专家团队成员来做到这一点。”
Anderson 还表示,如果 JavaScript 优化专家无法找到代码的任何合法用途,“它肯定会被删除”,并清楚明确地披露其背后的原因。
与此同时,UpdraftPlus 在插件的支持论坛上发布了通知,通知用户该代码目前正在调查中。
“要明确并让用户放心:有问题的代码不是危险的、病毒、感染、对黑客有用或任何类似的东西,”安德森说。“指控是它存在的唯一目的是有效地在速度测试中作弊。如果是这样的代码,则不属于 WP Optimize,我们将在新版本中将其删除。我们产品的完整性和客户的信任对我们来说至关重要(并且故意将一些东西放入开源代码中,坦率地说,这是一种愚蠢的做法)。”