광고 사기는 대개 발견되지 않는다. 사기를 당하고 있는 바로 그 시스템에 의해 보고될 뿐이며, 그때는 이미 예산이 소진된 뒤다. 구조적인 문제는 광고를 게재하는 플랫폼과 네트워크가 동시에 당신이 그것들을 판단하는 데 쓰는 수치의 출처이기도 하다는 점이다. 그래서 그 루프 안에서 잘못되는 모든 것은 루프 안에서는 보이지 않는다.
독립적인 탐지란 실제 장소의 실제 사용자가 페이지를 로드할 때 실제로 일어나는 일을 확인하는 것이며, 그것을 분기별 감사가 아니라 지속적으로 수행하는 것을 의미한다. 실제로 이것이 무엇을 수반하는지 살펴보자.
무엇을 찾아야 하는가
사기는 여러 형태를 취하며, 각각 다른 흔적을 남긴다. 이는 탐지가 올바른 대상을 찾고 있어야 하기 때문에 중요하다.
도메인 스푸핑은 광고가 실제로 게재된 위치를 허위로 표시하여, 프리미엄 퍼블리셔에게 청구된 노출이 실제로는 저품질 사이트에서 제공된다. 그 흔적은 보고된 게재 위치와 자체 확인으로 발견한 페이지 사이의 불일치다.
광고 스태킹과 픽셀 스터핑은 여러 광고를 서로 겹쳐 숨기거나 보이지 않을 정도로 작은 공간에 렌더링해서, 사람이 볼 수 없었던 광고에 대해 노출이 집계되도록 한다. 그 흔적은 기하학적이다. 보고서상으로는 실제 크기를 가진 요소가 페이지에서는 사실상 크기가 없는 것이다.
지리적 허위 표시는 실제로 오지 않은 시장에서 온 것처럼 트래픽을 청구하며, 그 시장에 프리미엄을 지불한 경우 중요한 문제가 된다. 그 흔적은 해당 시장 내부에서 확인해야만 드러난다.
무효 트래픽은 사람인 것처럼 위장된 기계 생성 노출과 클릭이다. 그 흔적은 어느 한 번의 확인으로 보이는 것이 아니라 행동적이고 통계적이다.
크리에이티브 및 랜딩 페이지 문제는 명백한 사기와 나란히 존재한다: 잘못된 크리에이티브, 만료된 오퍼, 깨진 랜딩 페이지, 또는 독점 슬롯에 노출된 경쟁사 광고. 법적 의미의 사기는 아니지만 같은 돈이 낭비되며, 같은 메커니즘으로 탐지된다.
탐지에 실제 관측 지점이 필요한 이유
핵심 메커니즘은 간단히 말할 수 있다. 광고 게재는 타겟팅되므로, 무엇이 게재되는지는 요청하는 것처럼 보이는 대상, 즉 국가와 도시, 기기, 언어, 그리고 종종 겉으로 드러나는 이력에 따라 달라진다. 상파울루의 휴대전화 사용자가 보는 것을 보려면, 요청이 그 사람에게서 온 것처럼 보여야 한다.
이것이 데이터센터 트래픽으로는 이 작업을 할 수 없는 이유다. 광고 플랫폼과 사기 운영자 모두 알려진 호스팅 대역을 다르게 취급하므로, 클라우드 리전에서의 확인은 사기가 실제 사용자에게는 계속되는 동안 깨끗하고 일반적인 버전의 페이지를 받거나, 아예 차단당할 수 있다. 그 결과 모든 것이 괜찮다고 보고하는 검증 시스템이 만들어진다.
레지덴셜 종료점은 각 확인을 확인 대상 시장의 일반 방문자처럼 보이게 만들며, 이것이 ad verification proxies라는 카테고리 전체의 근거다. 주소 선택은 지리적 위치만큼이나 중요한데, 플래그가 붙었거나 데이터센터에 인접한 주소는 다른 경험을 받기 때문이다. what IP reputation is와 spotting datacenter IPs sold as residential를 참고하라.
여러 시장에 걸친 커버리지
여러 국가에서 구매한다면 여러 국가에서 확인해야 하며, 정직하게 말하자면 커버리지는 전역적이 아니라 시장별이라는 제약이 있다. 195개국에 걸친 네트워크는 이를 구성의 문제로 만들며, 실질적인 작업은 어디를 얼마나 자주 샘플링할지 결정하는 것이다. 모든 곳을 지속적으로 확인하는 것은 필요하지도 않고 감당할 수도 없기 때문이다.
합리적인 배분은 세 가지에 가중치를 둔다: 지출, 즉 예산을 가장 많이 차지하는 시장이 가장 많은 확인을 받아야 한다는 것; 위험, 즉 불일치 이력이 있는 시장이나 파트너는 더 많은 확인을 받아야 한다는 것; 그리고 변화, 즉 새로운 캠페인과 새로운 게재 위치는 출시 시점에 집중적으로 샘플링한 뒤 점차 줄여야 한다는 것. 캠페인이 도시 단위로 타겟팅된 경우, 확인도 그래야 한다. city-level targeting을 참고하라. 가용성은 시장마다 다르며, 전역 커버리지를 약속하기 전에 알아둘 가치가 있다. country availability를 참고하라.
여기서 “실시간”이 실제로 의미하는 것
이 맥락에서 실시간은 초 단위 미만을 의미하지 않는다. 이는 지출이 문제가 되기 전에 멈출 수 있을 만큼 충분히 빠르게 루프가 닫힌다는 것을 의미하며, 대부분의 프로그램에서는 다음 월간 보고서가 아니라 몇 분에서 몇 시간 정도다.
이를 달성할지 여부는 네 가지가 결정한다.
샘플링 빈도는 지배적인 요인이다. 게재 위치의 로테이션 세트를 지속적으로 샘플링하는 것이 하루에 한 번 전체를 훑는 것보다 낫다. 문제가 얼마나 오래 발견되지 않은 채 지속될 수 있는지를 제한하기 때문이다.
탐지 지연, 즉 확인이 완료되고 평가되는 속도. 레지덴셜 요청은 데이터센터 요청보다 느리므로, 이를 예산에 반영하고 확인을 가볍게 유지해야 한다. reducing latency를 참고하라.
평가는 자동화되어야 한다. 아무도 보지 않는 스크린샷은 탐지가 아니다. 기대치와의 비교는 코드로 실행되어야 한다.
조치. 대시보드에서 끝나는 탐지는 모니터링이고, 게재를 중단시키거나 티켓을 여는 탐지는 통제다. 어떤 발견이 어떤 대응을 촉발하는지 미리 결정하라.
루프 구축하기
규모와 관계없이 형태는 동일하다.
기대치에서 시작하라. 기대치 없이는 불일치를 탐지할 수 없기 때문이다. 각 게재 위치에 대해, 실행되어야 하는 도메인, 렌더링되어야 하는 크리에이티브, 타겟팅된 시장, 도달해야 하는 랜딩 페이지를 알고 있어야 한다.
그런 다음 해당 시장에서 확인하며, 조치를 취할 수 있을 만큼 충분한 증거를 수집한다: 해석된 페이지, 광고 요소와 실제 렌더링된 크기, 크리에이티브, 리다이렉트 후의 랜딩 URL, 그리고 스크린샷. 증거가 중요한 이유는 이 시스템의 결과물이 종종 돈에 관한 파트너와의 대화이기 때문이며, 캡처 없는 주장은 의견에 불과하다.
def check_placement(placement, country, city=None):
ctx = browser_context(country=country, city=city) # residential exit
page = ctx.new_page()
page.goto(placement["url"], wait_until="networkidle")
ad = page.query_selector(placement["selector"])
box = ad.bounding_box() if ad else None
return {
"found": ad is not None,
"visible": bool(box and box["width"] > 1 and box["height"] > 1),
"dimensions": box,
"creative": ad.get_attribute("src") if ad else None,
"final_url": page.url,
"screenshot": page.screenshot(),
"market": {"country": country, "city": city},
"checked_at": now(),
}
그런 다음 기대치와 비교하여 분류한다: 광고 없음, 광고는 있지만 사실상 보이지 않음, 잘못된 크리에이티브, 잘못된 도메인, 잘못된 시장, 또는 랜딩 페이지 오류. 각각은 다른 대응으로 매핑되며, 이 분류가 알림을 소음이 아니라 실행 가능하게 만드는 요소다.
마지막으로, 자체 수집 상태를 감시하라. 조용히 결과를 반환하지 않게 된 시장은 문제가 없는 시장과 정확히 똑같아 보이기 때문이다. 그 구별이 검증 시스템과 잘못된 안도감의 차이이며, monitoring proxy health at scale에서 다루는 원칙이다.
정직함을 유지하기
명시적으로 짚을 가치가 있는 두 가지 제약이 있다.
이것은 측정이지 개입이 아니다. 검증이란 게재되는 것을 관찰하는 것을 의미하며, 광고를 테스트하기 위해 클릭하거나, 노출을 발생시키거나, 게재나 지출 자체를 왜곡시킬 수 있는 어떤 행위도 하지 않는 것이다. 확인 작업이 검증 대상인 퍼블리셔에게 부담이 되기보다 실제 트래픽에 비해 오차 범위 수준이 되도록 정중하게 속도를 조절하라.
그리고 발견 사항을 판결이 아니라 검토해야 할 증거로 다뤄라. 누락된 광고는 정당하게 채워지지 않은 슬롯일 수 있고, 지리적 불일치는 아무도 알려주지 않은 타겟팅 변경일 수 있으며, 잘못된 크리에이티브는 순환된 플라이트일 수 있다. 가치는 패턴과 캡처에 있으며, 이것이 파트너와의 대화를 생산적으로 만드는 요소다.
결론
보고하는 시스템 내부에서는 광고 사기를 탐지할 수 없다. 따라서 탐지란 구매하는 시장의 실제 사용자 관측 지점에서 이루어지는 독립적인 확인을 의미한다. 각 사기 유형이 어떤 모습인지 알아야 한다. 확인이 올바른 흔적을 찾고 있어야 하기 때문이다: 도메인 불일치, 실제 크기가 없는 요소, 일치하지 않는 시장, 있어서는 안 될 크리에이티브. 모든 것을 확인하려 하기보다, 지출, 위험, 최신성에 따라 가중치를 두어 지속적으로 샘플링하고 커버리지를 배분하라. 결과물이 대개 돈에 관한 대화이기 때문에 증거를 수집하라. 비교를 자동화하고 각 분류에 조치를 연결하며, 조용한 시장이 깨끗한 시장으로 오인되지 않도록 자체 수집 상태를 모니터링하라.
즉흥적으로 만들어낼 수 없는 부분이 바로 관측 지점이다: ad verification proxies는 각 확인을 그것이 속한 시장 안에 위치시키며, 국가 및 도시 타겟팅과 지속적인 샘플링 프로그램에 적합한 per-GB pricing을 갖춘 residential proxies 위에서 실행된다.