Google 앱 광고에 220달러 썼더니… 설치 60%가 봇이었다
퍼즐 앱 Dayzle를 운영하는 개발자 Nick Abe가 Google Ads 캠페인에 220달러를 쓴 뒤 남긴 분석 글을 LinkedIn에 공개했다. 결론은 청구된 설치의 상당수가 사람이 아니었다는 것이다.
그는 안드로이드용 Google Ads 캠페인을 하루 CA$40 예산, 목표를 '설치'로 설정해 켰다. 목표 설치당 비용(CPI)은 1.50달러로 잡았는데, 첫 며칠간 Google은 그 가격에 설치를 찾아내지 못했다. 그래서 목표를 제거했더니 곧바로 하루 예산의 두 배인 CA$80를 소진하며 설치 21건을 보고했다. 그러나 앱 관리자 패널에는 1건만 찍혔다.
불일치의 원인은 구버전 앱이 설치 날짜를 보고하지 않는다는 점이었다. 원시 분석 데이터를 열어보니 그날 신규 안드로이드 기기가 21대였고, 그중 20대가 Play 스토어가 이미 며칠 전부터 제공을 중단한 구버전 앱을 실행하고 있었다. Play에서는 구버전을 받을 수 없으므로 이 기기들은 다른 경로로 앱을 설치한 셈인데, 정작 모든 기기가 설치자를 'Google Play'로 표기했다. 20대 모두 앱을 한 번 열고 어떤 화면에서도 0초를 머물렀으며 다시 돌아오지 않았다. 28개 기종, 19개 주에 걸쳐 분포했는데, 똑같은 동작을 한 기기 20대치고는 지나치게 다양했다.
2주 전체를 집계하면 청구된 설치 56건 중 33건이 이 패턴이었고, 캠페인 타깃이 아닌 국가에서 온 설치가 7건 더 있었다. 실제 사람은 13명이었고, 이들이 92개의 퍼즐 게임을 완료했다.
그가 추정하는 봇팜의 수법은 이렇다. 광고 그룹에서 가장 짧은 동영상을 시청하고, 클릭은 하지 않으며, 스토어 대신 저장해 둔 앱 파일 사본으로 설치한다. 스토어를 거치지 않는 편이 빠르고 Play의 감지도 피할 수 있기 때문이다. Google은 동영상 조회 뒤 이어진 설치를 전환으로 집계한다. 결과적으로 봇팜이 앱을 '설치'할수록 Google 알고리즘에는 성과가 좋아 보였고, 알고리즘은 광고를 봇팜에 더 많이 배분했고, 봇팜은 더 많이 설치했다. 광고비가 확실히 낭비되도록 보장하는 루프가 완성된 셈이다.
현재 그는 Google의 무효 트래픽 신고 양식에 대한 답변을 기다리고 있다. 캠페인 목표는 '앱 열기'에서 '퍼즐 풀기'로 바꿨다. 스크립트로 앱을 열고 화면을 클릭하게 만드는 것은 저렴하지만, 스도쿠를 풀게 만드는 것은 훨씬 비싸다. 다른 앱보다 자신을 파밍하기 어렵게 만들어 봇팜의 비용을 높이자는 발상이다. 그는 자기 규모의 앱에는 이 정도가 나름의 방어가 될 것으로 본다. 규모가 큰 앱은 파밍할 가치가 더 크기 때문에, 아마 자신들이 아는 것보다 훨씬 많은 피해를 겪고 있을 것이라고 덧붙였다.
이 글은 환불 결과가 나오면 다시 공유하겠다고 예고하며 끝난다. 다만 이는 어디까지나 한 개발자의 분석과 추정이며, Google의 공식 입장이나 검증된 결론은 아니다. Google Ads의 설치 수는 실제 집계값이지만, 그 안을 들여다볼 가치는 충분하다는 것이 그의 요지다. 작은 광고 예산을 봇팜이 찾아낸다면, 다른 예산도 마찬가지로 찾아낼 수 있다는 것이다.