PageSpeed 및 기타 성능 테스트 도구를 부정하는 WP-Optimize 플러그인
게시 됨: 2022-08-30스스로를 "웹 성능 매니아"라고 부르는 개발자 Gijo Varghese는 주말에 WP-Optimize가 사용자가 인기 있는 성능을 통해 사이트를 테스트할 때 특정 JavaScript 파일이 로드되지 않도록 명시적으로 방지하는 방법에 대한 스크린샷을 트윗하여 전 세계 WordPress 사용자에게 충격을 주었습니다. 테스트 도구.
Varghese는 "사이트가 로드되면 사용자 에이전트/브라우저가 Lighthouse/GTmetrix/Headless Chrome/Pingdom이 아닌 경우에만 JavaScript 파일이 로드됩니다."라고 말했습니다. "JS 없음 = 높은 점수. 하지만 실제 사용자의 경우 이러한 JS 파일이 로드됩니다!”
Varghese는 백만 개 이상의 WordPress 사이트에서 사용되는 WP-Optimize 무료 버전을 테스트하고 있음을 확인했습니다. UpdraftPlus는 2016년에 WP-Optimize를 인수했으며 이 도구는 "웹사이트를 빠르고 철저하게 최적화하는 데 필요한 모든 것을 갖추고 있다"고 주장합니다. 상용 버전은 WordPress.org에서 호스팅되는 무료 플러그인을 통해서도 홍보됩니다.
"UpdraftPlus, 이러한 기만적이고 사기적인 관행을 사용할 때 내 고객의 백업으로 귀사를 계속 신뢰해야 합니까?" 한 고객 Adam Lowe는 Varghese가 성능 도구용 JS를 로드하지 않는 플러그인을 발견한 것에 대한 응답으로 말했습니다.
WordPress 대행사 소유주이자 개발자인 Brian Jackson은 "와우, 정말 실망스럽다는 말밖에 할 수 없습니다.
이러한 유형의 속임수는 Google Pagespeed 결과를 인위적으로 조작한 Upwork의 성과 프리랜서와 계약한 누군가가 보고한 사기와 섬뜩할 정도로 유사합니다. 트위터에서 토론에 참여한 다른 사람들은 이를 자동차 제조업체가 위반 후 EPA의 요구 사항을 충족하기 위해 실험실 테스트 중에만 배기 가스 제어를 활성화한 것으로 밝혀진 폭스바겐 배기 가스 스캔들과 비교했습니다. 도로 위의 차량은 조작된 실험실 테스트에서 수행한 성능과 비교하여 운전하는 동안 최대 40배 더 많은 질소 산화물을 배출했습니다.
Varghese와 대화에 참여한 다른 여러 참가자는 이것이 사이트 소유자가 성능 도구 테스트 점수 대신 실제 사용자가 경험하는 것에 집중해야 하는 이유라고 결론지었습니다.
실제 사용자 경험에 중점을 둘 때도 사이트 소유자는 종종 테스트에 의존하여 문제를 진단하고 사이트 성능을 개선할 수 있는 방법을 확인합니다. 그들은 플러그인이 성능 도구에서 JS 파일을 숨길 것이라고 기대하지 않습니다. 테스트를 속여서 WP-Optimize의 신뢰성을 떨어뜨렸습니다.
"우와. 사실이라면 변명의 여지가 없을 정도로 근시안적입니다.”라고 UpdraftPlus 고객인 Johnathon William은 말했습니다. "그리고 여러 클라이언트 사이트를 백업하는 데 사용하는 다른 제품인 UpdraftPlus를 신뢰할 수 있는지 궁금합니다."
나는 UpdraftPlus에 연락했고 수석 개발자인 David Anderson은 회사가 코드의 문제를 인식하지 못했지만 일부 배경 이야기와 관련이 있다고 말했습니다. UpdraftPlus는 WP-Optimize 내에서 축소 모듈을 유지하고 더 많은 사용자를 확보하기 위해 힘을 결합할 가능성에 대해 Fast Velocity Minify 플러그인 작성자와 간략하게 대화했습니다. 궁극적으로 그들은 합의에 이르지 못했지만 그 동안 WP-Optimize의 개발자는 GPL에 따라 Fast Velocity Minify를 분기하고 적용했습니다. 해당 적응 작업을 수행한 개발자는 더 이상 회사에 없습니다.
Anderson은 "2.5년 전(2020년 1월) 자체 소스 리포지토리에 대한 커밋에서 커밋에는 'Resolve 'Add CSS and JS Minification GPL code from 'Fast Velocity Minify' – Part 6'이라는 레이블이 붙었습니다. "더 깨끗하고 코딩 스타일 기본 설정을 사용하도록 리팩터링된 일련의 초기 코드 병합의 일부입니다(그러나 기능은 변경하지 않음). 따라서 이러한 행을 병합하려는 명백한 의도는 해당 단계에서 변경하지 않고 리팩토링된 코드를 가져오는 것이었습니다.
“커밋 히스토리(즉, 'git 비난' 기능)에 따르면 그 이후로 코드가 변경되지 않았습니다. 즉, 가져온 그대로입니다. (WP Optimize의 기록은 WordPress SVN에서도 공개됩니다).”
코드를 대충 조사한 후 Anderson은 2년 전에 추가된 내용을 알지 못했기 때문에 그의 팀이 코드를 다시 조사해야 할 수도 있다고 결론지었습니다.
“플러그인 내의 코드를 통해 해당 기능을 추적하려고 하면 웹사이트 방문자가 '봇'이면 봇에게 무의미한 코드가 실행되지 않고, "라고 말했다.
"하지만 1) 봇 이름이 심하게 난독화/수정된 것 같습니다. 이는 이상합니다(왜?), 2) Googlebot 자체와 같이 목록에 없는 더 명백한 봇이 훨씬 많습니다. 만약 그 기능이 오늘 검토를 위해 내 앞에 놓여 있었다면, 나는 확실히 그것이 왜 그런 것인지 의문을 가질 것입니다. 32개월 전의 나 자신을 기억할 수는 없지만, 대규모 패치의 긴 시리즈였던 것으로 기억합니다. 그래서 한 줄씩 자세히 분석되지 않았습니다. 우리는 FVM을 좋은 플러그인으로 식별했고 우리의 주요 초점은 그것을 우리의 구조와 스타일에 적응시키는 데 있다는 것을 알고 있었고 개인적으로 최종 검토자로서 고려하고 있었던 것이었습니다."
요약하면, UpdraftPlus의 개발 팀은 주말에 Twitter 스레드가 게시될 때까지 이 코드를 알지 못했습니다.
Anderson은 "우리의 의도를 실현하게 되어 매우 기쁩니다."라고 말했습니다. "봇에 대한 불필요한 요청을 방지하기 위한 원래 소스의 관련 조각에 대한 관련 코드 주석이지만 당시 해당 행보다 더 면밀히 조사하면 우리가 보고 싶은 것입니다. 의심스럽거나 이상합니다. JavaScript 최적화 전문가인 팀원에게 할당하여 이를 수행할 것입니다.”
Anderson은 또한 JavaScript 최적화 전문가가 코드에 대한 합법적인 목적을 찾지 못하면 "확실히 제거될 것"이라고 말했습니다.
한편, UpdraftPlus는 플러그인의 지원 포럼에 사용자에게 코드가 현재 조사 중임을 알리는 공지를 게시했습니다.
앤더슨은 "사용자의 마음을 안정시키고 명확하게 하기 위해 문제의 코드는 위험하지 않거나 바이러스, 감염, 해커에게 유용하지 않다"고 말했다. “현재 존재하는 유일한 목적은 속도 테스트를 효과적으로 속이기 위한 것이라는 주장입니다. 그러한 코드는 WP Optimize에 속하지 않으며 새 릴리스에서 제거할 것입니다. 우리 제품의 무결성과 고객의 신뢰는 우리에게 필수적입니다(솔직히 말하면 어리석은 일입니다.