WP-Optimize Menolak Tuduhan Alat Kinerja Kecurangan

Diterbitkan: 2022-08-31

Kemarin, kami menerbitkan tuduhan dari Gijo Varghese terhadap UpdraftPlus, pembuat WP-Optimize. Varghese adalah pendiri FlyingProxy, perusahaan pesaing, dan mengidentifikasi dirinya sebagai "penggemar kinerja." Dia menuduh plugin "menipu Pagespeed dan alat lainnya" dengan menyembunyikan file JavaScript dari pemuatan ketika pengguna menguji situs mereka melalui alat pengujian kinerja populer. Kode tersebut menggunakan serangkaian nama aneh yang dikaburkan untuk alat pengujian, yang menarik kecurigaannya.

Varghese lupa menyebutkan dalam tweetnya bahwa inilah yang terjadi ketika salah satu pengaturan plugin di bawah Minify > JS diatur untuk menunda JavaScript. Ada dua pengaturan tombol radio tetapi membingungkan.

Tombol radio pertama memungkinkan pengguna untuk menunda file JavaScript yang dipilih. Dikatakan file akan dimuat secara tidak sinkron (tidak sama dengan penangguhan), dan kemudian juga mengatakan bahwa pengguna harus memilih tombol radio pertama jika mereka ingin mengecualikan skrip dari tes kecepatan halaman. Tidak jelas bagaimana skrip akan dimuat untuk pengguna atau untuk situs pengujian. Mengecualikan tidak sama dengan menunda, jadi dalam hal ini pengaturan UI agak menyesatkan dan harus lebih jelas.

Opsi radio kedua adalah untuk pengguna yang hanya ingin menunda semua JavaScript. Jika seseorang memilih "Tunda menggunakan JavaScript (Gunakan metode ini jika Anda memerlukan dukungan untuk browser lama)," itu harus melakukan persis seperti yang dijelaskan di tautan:

Jika atribut defer disetel, ini menentukan bahwa skrip diunduh secara paralel untuk menguraikan halaman, dan dijalankan setelah halaman selesai diurai.

Meskipun UI mengatakan itu menunda semua file, WP-Optimize tidak pernah memuat JavaScript untuk situs pengujian kinerja. Dalam opsi kedua ini, pengecualian situs pengujian terjadi tanpa izin pengguna. Jika pengguna menginginkan itu, mereka akan memilih tombol radio sebelumnya dan secara eksplisit mengidentifikasi skrip mana yang akan dikecualikan.

Varghese mengabaikan beberapa detail penting dalam laporan aslinya, tetapi akurat karena pengaturan tertentu menyesatkan tentang apa yang sebenarnya mereka lakukan. Dia menunjukkan ini dalam video tindak lanjut di mana tidak ada entri manual dari skrip apa pun untuk dikecualikan dan opsi radio kedua dicentang.

“Mereka menyediakan opsi bagi pengguna untuk menipu alat pengujian,” kata Varghese. “Juga, menggunakan nama seperti 'ighth' untuk Lighthouse dan 'tmetr' untuk GTmetrix jelas menunjukkan apa yang mereka coba lakukan.

“Sebagian besar pengguna mencoba menonaktifkan dan mengaktifkan fitur yang berbeda untuk melihat mana yang meningkatkan kecepatan/skor dalam alat pengujian.”

Varghese berpendapat tidak perlu melakukan hal yang berbeda untuk alat pengujian dan manusia, karena ini dapat membingungkan pemilik situs. Tuduhannya meninggalkan detail penting dan menyiratkan bahwa semua ini tersembunyi dalam kode. Ini untuk salah satu pengaturan tetapi tidak untuk yang lain. Antarmuka menyiratkan bahwa Anda harus memasukkan skrip secara manual untuk dikecualikan dari pengujian, tetapi ini juga menyesatkan.

WP-Optimize menerbitkan tanggapan publik atas tuduhan hari ini, tetapi belum mengungkapkan hasil apa pun dari investigasi kode yang mereka selesaikan. Sebagai gantinya, perusahaan mengutip video yang dibuat oleh Peter Wilkinson dari Divi Engine, yang mengklaim bahwa pengguna harus memasukkan skrip secara manual untuk membuat situs pengujian mengecualikannya.

Wilkinson dikutip menyimpulkan bahwa "Gijo Varghese telah menggunakan penipuan untuk mempromosikan Halaman Terbang dan Pers Terbang" dalam membawa masalah ini ke perhatian publik di Twitter.

“Pada kenyataannya (dari penelitian saya) WP-Optimize tidak 'menipu' alat Pagespeed saat Anda menginstal atau mengecilkan JavaScript Anda,” kata Wilkinson.

“Untuk 'menipu' alat, Anda perlu secara manual menambahkan file JS yang ingin Anda muat asinkron ke pengaturan yang jelas memiliki label 'Gunakan ini jika Anda memiliki skrip yang sepenuhnya independen atau ingin mengecualikan skrip dari pengujian kecepatan halaman ( Wawasan PageSpeed, GTMetrix…)'”

Ini bukan kasusnya. Cara termudah untuk menguji adalah menginstal plugin, aktifkan "tunda semua JavaScript", lalu lihat sumbernya untuk melihat bahwa alat kinerja dikecualikan.

Karena tanggapan publik WP-Optimize terhadap masalah ini tidak mencakup apa pun dari penyelidikan kode mereka, saya menghubungi mereka lagi. Wakil pemimpin mereka Venkat Raj tidak tersedia untuk menjawab mengapa pengaturan lain di plugin secara diam-diam menghapus JS untuk alat pengujian kinerja dengan mengklik tombol radio. Joe Miles, kepala strategi perusahaan, membagikan informasi terakhir yang dia terima tentang masalah ini dari Venkat Raj:

“Pengaturan lanjutan yang digunakan dalam tuduhan sebenarnya berguna untuk mengetahui apakah file js/css yang penting benar-benar memperlambat halaman web atau tidak. Fitur ini secara default, 'dinonaktifkan' dan hanya diaktifkan oleh pengguna tingkat lanjut yang tahu apa yang mereka lakukan.

“Anda dapat menggunakan fitur ini jika Anda memiliki skrip yang sepenuhnya independen atau ingin mengecualikan skrip dari pengujian kecepatan halaman (PageSpeed ​​Insights, GTMetrix…)

“Skrip independen misalnya skrip 'analitik' atau 'piksel'. Mereka tidak diperlukan agar situs web berfungsi. ' Gunakan ini jika Anda memiliki stylesheet yang sepenuhnya independen atau ingin mengecualikan stylesheet dari pengujian kecepatan halaman (PageSpeed ​​Insights, GTMetrix…) '

Ini berlaku untuk tombol radio pertama. Tombol kedua tidak memiliki indikasi bahwa itu akan mematikan semua skrip saat menggunakan alat pengujian – tim WP-Optimize juga tampaknya tidak menyadari bahwa itu tersedia dengan mengklik tombol radio.

Miles tidak dapat mengonfirmasi apakah ini dimaksudkan untuk berfungsi atau apakah itu bug. Dia juga tidak dapat menjelaskan mengapa nama-nama situs pengujian populer dikaburkan dalam kode, tetapi mengatakan pengembang asli "tidak bekerja untuk kami karena kode sumber terbuka itu digunakan kembali dari tempat lain."

“Namun, kami percaya ini adalah pengalihan dari tuduhan palsu, dan yang penting adalah bahwa UI sangat jelas untuk pengaturannya, sehingga pengguna tidak tertipu,” kata Miles.

Raul Peixoto, penulis Fast Velocity Minify (FVM), plugin tempat WP-Optimize menyalin kode, mengatakan dia dapat mengonfirmasi bahwa kode ini adalah bagian dari FVM tetapi mengatakan itu tidak digunakan dengan cara yang sama:

Tujuan dari kode tersebut pada FVM benar-benar berbeda dari yang ada di WP Optimize dan selanjutnya mengharuskan pengguna untuk mengaktifkan opsi ini secara manual melalui wp-admin (dinonaktifkan secara default).

Tujuan dari kode itu adalah untuk secara selektif menguji dampak skrip atau plugin baru dalam kinerja, dan membantu pengembang memutuskan apakah mereka harus memfaktorkan ulang, menghapus, atau mengganti plugin atau skrip yang berat.

Ini ada di FVM untuk menjawab pertanyaan seperti ini:
“Saya memiliki tempat produksi dan kinerja saya rendah. Bagaimana kinerjanya jika plugin ini tidak ada di sini, tetapi tanpa benar-benar menghapusnya dari situs untuk pengguna biasa?”
“Bagaimana kinerjanya jika saya dapat menunda semua skrip, atau skrip tertentu yang saat ini tidak kompatibel dengan penangguhan, sebelum benar-benar melakukan perubahan itu untuk semua orang?”

Penjelasan resmi mengenai penggunaannya di FVM tersedia di forum dukungan plugin mulai pagi ini.

“Saya kira para pengembang yang disewa oleh WP Optimize tidak mengerti apa yang dilakukan ini di FVM atau di bawah pengaturan apa, atau mungkin, mereka mungkin merasa tergoda untuk menggunakannya sebagai peretasan,” kata Peixoto.

“Kita juga harus hati-hati mengingat bahwa pada saat itu, masih belum ada metrik vital web yang tersedia untuk umum, jadi menggunakan sesuatu seperti ini akan memberikan hasil 'terukur' yang lebih baik, sehingga menawarkan keunggulan produk.”

Piexoto mengatakan bahwa dia “merasa terdorong” untuk menghapus kode ini dua tahun lalu karena seringnya kode ini disalahgunakan oleh pengembang yang mencurangi pengujian untuk klien mereka:

Maju cepat beberapa waktu, dan saya menyadari bahwa beberapa pengembang sebenarnya menggunakan ini untuk menipu tes untuk klien mereka, jadi saya merasa terdorong untuk membuat keputusan pada FVM 3 (sudah akhir 2020) untuk menghapus fitur ini, yang dipenuhi oleh banyak protes dari pengembang yang marah ketika klien mereka mulai mengeluh bahwa skor mereka turun.

Saya mencoba pada waktu itu, untuk menjelaskan bahwa memiliki skor yang baik tidak sama dengan memiliki metrik web vitals yang baik, tetapi akhirnya saya menyerah, karena beberapa orang lebih peduli dengan hasil tes daripada kinerja sebenarnya.

Setelah rilis FVM 3, pada dasarnya saya hanya memeliharanya dan melakukan perbaikan bug kecil ketika dilaporkan, karena saya harus fokus pada hal-hal lain. Saya telah menghapus fungsi itu dan memperbaiki beberapa bug yang tertunda pada versi 3.2.9 dan mendorong pembaruan, jadi terima kasih telah merujuk ini kepada saya.

Untuk alasan apa pun, UpdraftPlus memilih untuk menggabungkan kode ini ke WP-Optimize pada tahun 2020 dan, seperti yang dilaporkan kemarin, belum menyentuh kode tersebut.

Apa yang tampaknya menjadi masalah hitam putih kemarin adalah situasi yang lebih bernuansa. Implementasi WP-Optimize dari kode FVM didokumentasikan dengan buruk di UI dan menyesatkan tentang bagaimana skrip dimuat. Ini dapat mengarahkan pemilik situs untuk mengaktifkannya tanpa menjadi pengguna tingkat lanjut, dan secara historis memiliki potensi penyalahgunaan yang tinggi. Ketika Varghese menemukannya, dia mengeksposnya dengan cara yang menghasut, merasa yakin dia telah menemukan kesalahan karena betapa membingungkannya kode itu. Ini memperumit masalah tetapi memulai percakapan yang lebih luas dan penting.

Haruskah pengguna memiliki akses mudah semacam ini (dua klik) untuk mematikan skrip untuk alat pengujian kinerja? Bagaimana pengembang di industri yang sama dapat berkomunikasi dengan lebih baik tentang potensi bahaya bagi pengguna yang mereka lihat di produk orang lain? Persyaratan dokumentasi kode seperti apa yang harus diterapkan oleh lembaga untuk mencegah situasi seperti ini di mana kode perlu diselidiki selama beberapa hari untuk mengetahui apa yang dimaksudkan untuk dilakukan?