Globalny rynek reklam cyfrowych przekroczył 600 miliardów dolarów rocznie, a według szacunków Association of National Advertisers, nawet 23% wydatków programatycznych trafia w „piekło cyfrowe” — niewidoczne reklamy, boty, domeny-szablony i sfałszowane geolokacje. Dla dużych reklamodawców to nie jest problem statystyczny. To realne 100 milionów dolarów strat rocznie dla pojedynczego enterprise'u.
Weryfikacja reklam — sprawdzanie, czy wykupione impresje faktycznie dotarły do ludzi, w odpowiednim miejscu i czasie — stała się krytyczną funkcją trust & safety. A żeby ją wykonać, potrzebujesz czegoś, co wielu pomija: residential proxies rozłożone geograficznie.
Ten artykuł wyjaśnia, jak działają ad verification proxies, dlaczego dostawcy tacy jak IAS, DoubleVerify czy MOAT polegają na nich każdego dnia, i jak możesz zbudować własny pipeline weryfikacji reklam — lub lepiej ocenić zewnętrznego dostawcę.
Czym jest ad fraud i dlaczego to problem na 100 miliardów dolarów?
Ad fraud to celowe manipulowanie ekosystemem reklamowym w celu wyłudzenia pieniędzy od reklamodawców. Nie chodzi o „nieefektywność” — to systematyczne, zorganizowane działania grup przestępczych i nieetycznych wydawców.
Główne typy oszustw reklamowych
- Invalid Traffic (IVT) — ruch generowany przez boty, farmy kliknięciowe, lub „hijacked devices”. Według WhiteOps, boty generują około 40% całego ruchu internetowego na niektórych segmentach.
- Domain Spoofing — impresje sprzedawane jako pochodzące z premium publisherów (np. forsythe.pl), ale faktycznie wyświetlane na niskiej jakości stronach lub w ukrytych iframe'ach.
- Geo-fraud — reklamy sprzedawane jako „targetowane na Polskę”, ale faktycznie wyświetlane w innych krajach, gdzie CPM jest niższe, a różnicę kieszonkuje pośrednik.
- Ad stacking & pixel stuffing — wiele reklam nałożonych na siebie w jednym miejscu, lub reklamy w pikselu 1×1, „widoczne” technicznie, ale nie dla człowieka.
- Click injection — fałszywe kliknięcia generowane na urządzeniach mobilnych, fałszujące dane o konwersji.
Według raportu Juniper Research, globalne straty z tytułu ad fraud mają osiągnąć 100 miliardów dolarów do 2026 roku. Dla brandów to bezpośredni uszczerbek na ROI, ale też ryzyko reputacyjne — reklamy wyświetlane w nieodpowiednim kontekście, obok treści nielegalnych, lub na stronach z malware.
Jak dostawcy ad verification używają residential proxies
Ad verification to proces sprawdzania, czy reklamy zostały faktycznie wyświetlone w deklarowanych warunkach. Dostawcy tacy jak Integral Ad Science (IAS), DoubleVerify (DV) czy MOAT muszą „zobaczyć to, co widzi użytkownik” — z perspektywy jego lokalizacji, urządzenia i kontekstu.
Tu wchodzą residential proxies:
- Geo-dystrybucja — aby sprawdzić, czy reklama targetowana na Polskę faktycznie wyświetla się w Polsce, vendorzy używają proxy z polskich adresów IP. To pozwala symulować lokalny użytkownik.
- Obejście blokad — oszuści często blokują znane IP verification vendorów. Residential proxies z prawdziwych adresów domowych trudniej zidentyfikować jako „audytorów”.
- Realistyczne warunki — mobile proxies pozwalają sprawdzić, czy reklamy na smartfonach faktycznie renderują się poprawnie, w odpowiednich aplikacjach i kontekście.
Bez residential proxies, verification vendorzy widzieliby tylko to, co chcą pokazać oszuści — albo nic, jeśli ich IP są zablokowane.
Kluczowa zasada: Ad verification wymaga patrzenia z perspektywy użytkownika końcowego. Datacenter IP są łatwe do zidentyfikowania i zablokowania. Residential IP — znacznie trudniej.
Techniczne podejście do ad verification z residential proxies
Podstawowy pipeline ad verification składa się z trzech elementów:
- Proxy layer — residential proxies z targetowanych lokalizacji, z rotacją IP dla każdego żądania lub sticky sessions dla dłuższych sesji.
- Headless browser — Puppeteer, Playwright lub Selenium do renderowania strony i sprawdzania, co faktycznie się wyświetla.
- Rules engine — logika wykrywania anomalii: niewłaściwa domena, niewłaściwa geolokacja, brak widoczności, podejrzany kontekst.
Konfiguracja ProxyHat dla ad verification
ProxyHat oferuje residential proxies z geo-targetingiem. Przykładowa konfiguracja dla weryfikacji reklam w Polsce:
# HTTP proxy dla Polski
export HTTP_PROXY="http://user-country-PL:PASSWORD@gate.proxyhat.com:8080"
# HTTP proxy dla konkretnego miasta (Warszawa)
export HTTP_PROXY="http://user-country-PL-city-warsaw:PASSWORD@gate.proxyhat.com:8080"
# Sticky session (przydatne przy wielokrokowej weryfikacji)
export HTTP_PROXY="http://user-country-PL-session-verify001:PASSWORD@gate.proxyhat.com:8080"
Dla weryfikacji reklam mobilnych, użyj mobile proxies:
# Mobile proxy dla Polski (realne urządzenia mobilne)
export HTTP_PROXY="http://user-country-PL-mobile:PASSWORD@gate.proxyhat.com:8080"
Przykładowy skrypt weryfikacji w Pythonie
import requests
from playwright.sync_api import sync_playwright
def verify_ad_placement(url, expected_domain, expected_country, proxy_config):
"""
Weryfikuje, czy reklama na danej stronie faktycznie wyświetla się
w oczekiwanym kontekście.
"""
results = {
'url': url,
'expected_domain': expected_domain,
'actual_domain': None,
'domain_spoofing': False,
'expected_country': expected_country,
'actual_country': None,
'geo_fraud': False,
'ad_visible': False,
'issues': []
}
with sync_playwright() as p:
browser = p.chromium.launch(
proxy={'server': proxy_config},
headless=True
)
page = browser.new_page()
try:
page.goto(url, timeout=30000)
# Sprawdź faktyczną domenę
actual_domain = page.evaluate('window.location.hostname')
results['actual_domain'] = actual_domain
if actual_domain != expected_domain:
results['domain_spoofing'] = True
results['issues'].append(
f'Domain mismatch: expected {expected_domain}, got {actual_domain}'
)
# Sprawdź czy reklama jest widoczna
ad_element = page.query_selector('[data-ad-slot]')
if ad_element:
box = ad_element.bounding_box()
if box and box['width'] > 1 and box['height'] > 1:
results['ad_visible'] = True
# Pobierz geolokację z zewnętrznego serwisu
geo_response = requests.get(
'https://ipinfo.io/json',
proxies={'http': proxy_config, 'https': proxy_config}
)
geo_data = geo_response.json()
results['actual_country'] = geo_data.get('country')
if results['actual_country'] != expected_country:
results['geo_fraud'] = True
results['issues'].append(
f"Geo mismatch: expected {expected_country}, proxy shows {results['actual_country']}"
)
except Exception as e:
results['issues'].append(f'Error: {str(e)}')
finally:
browser.close()
return results
# Przykładowe użycie
proxy_url = 'http://user-country-PL:PASSWORD@gate.proxyhat.com:8080'
result = verify_ad_placement(
url='https://publisher-site.com/article',
expected_domain='publisher-site.com',
expected_country='PL',
proxy_config=proxy_url
)
print(result)
Wykrywanie dwóch sygnatur fraudu: praktyczne przykłady
1. Domain Spoofing — gdy impresje „kradną” tożsamość
Domain spoofing to sytuacja, w której SSP lub wydawca deklaruje, że reklama wyświetla się na premium domenie (np. newsweek.pl), ale faktycznie jest serwowana na niskiej jakości stronie z automatycznymi treściami.
Jak to wykryć?
- Pobierz URL z raportu programatycznego lub ad server logów.
- Załadowaj stronę przez residential proxy w docelowej geolokacji.
- Sprawdź
window.location.hostnamei porównaj z deklarowaną domeną. - Sprawdź czy reklama faktycznie renderuje się na stronie.
- Zweryfikuj kontekst — czy strona nie jest „made for advertising”.
Sygnatury domain spoofingu:
- Deklarowana domena to znany brand, ale faktyczna to wariacja typu „newsweek-pl.com” lub „newsweek-articles.net”.
- Strona ładuje się bardzo szybko, z minimalną treścią i dużą ilością reklam.
- Brak śladów w cache Google, brak ruchu organicznego.
- Domena zarejestrowana niedawno, z ukrytym WHOIS.
2. Invalid Geo — reklamy poza targetowanym rynkiem
Geo-fraud występuje, gdy DSP lub SSP sprzedaje impresje jako „Polska” lub „Warszawa”, ale faktycznie serwuje je w krajach o niższym CPM (np. Ukraina, Rumunia) i kieszonkuje różnicę.
Jak to wykryć?
- Użyj residential proxy z deklarowanej lokalizacji (np. Polska, Warszawa).
- Zweryfikuj, że proxy faktycznie wychodzi z polskiego IP (użyj ipinfo.io lub podobnego serwisu).
- Załadowaj stronę i sprawdź, czy reklama targetowana na Polskę faktycznie się wyświetla.
- Powtórz test z proxy z innej lokalizacji — jeśli reklama wyświetla się też tam, gdzie nie powinna, to sygnał o problemie.
Sygnatury geo-fraud:
- Wysoka rozbieżność między deklarowanym a faktycznym geolocation w logach verification.
- Reklamy targetowane na premium rynki wyświetlają się w krajach tier-2 i tier-3.
- Różnica między lokalizacją IP a deklarowanym w bid request geo.
Budowa wewnętrznego pipeline'u ad verification
Dla wielu enterprise'ów, szczególnie z dużym budżetem mediowym, sensowne jest zbudowanie własnego, choćby podstawowego systemu weryfikacji. Pozwala to na głębszą analitykę, integrację z wewnętrznymi systemami i uniknięcie vendor lock-in.
Architektura pipeline'u
| Komponent | Funkcja | Technologie |
|---|---|---|
| Proxy Pool | Residential IP w targetowanych lokalizacjach | ProxyHat, Luminati, Smartproxy |
| Job Queue | Kolejka URL do weryfikacji | Redis, RabbitMQ, AWS SQS |
| Worker Pool | Headless browsers wykonujące weryfikację | Playwright, Puppeteer, Selenium Grid |
| Rules Engine | Logika detekcji anomalii | Python, custom rules, ML models |
| Data Store | Wyniki weryfikacji, historyczne dane | PostgreSQL, BigQuery, Snowflake |
| Alerting | Powiadomienia o wykrytych fraudach | PagerDuty, Slack, email |
Przykładowa reguła detekcji domain spoofingu
DOMAIN_WHITELIST = {
'newsweek.pl', 'onet.pl', 'wp.pl', 'interia.pl',
'gazeta.pl', 'polityka.pl', 'wyborcza.pl'
}
SPOOFING_INDICATORS = [
lambda d: d.count('-') > 2, # newsweek-articles-pl.com
lambda d: d.endswith('.xyz') or d.endswith('.top'),
lambda d: len(d.split('.')) > 3, # subdomain abuse
lambda d: any(x in d for x in ['article', 'news', 'story']),
]
def check_domain_spoofing(declared_domain, actual_domain):
"""
Zwraca True jeśli wykryto domain spoofing.
"""
if actual_domain in DOMAIN_WHITELIST:
return False # OK
if declared_domain in DOMAIN_WHITELIST and actual_domain != declared_domain:
return True # Spoofing!
for indicator in SPOOFING_INDICATORS:
if indicator(actual_domain):
return True
return False
Kosztorys in-house vs vendor
Przy założeniu 10 milionów weryfikacji miesięcznie:
| Kategoria | In-house (rocznie) | Vendor (rocznie) |
|---|---|---|
| Infrastruktura proxy | $30,000 – $60,000 | Wliczone w licencję |
| Serwery i compute | $20,000 – $40,000 | $0 (SaaS) |
| Development i maintenance | $100,000 – $200,000 | $0 |
| Licencja vendor | $0 | $150,000 – $500,000 |
| RAZEM | $150,000 – $300,000 | $150,000 – $500,000 |
In-house może być opłacalne dla bardzo dużych reklamodawców, którzy potrzebują głębokiej kontroli i niestandardowych reguł. Dla większości, hybryda — vendor do standardowej weryfikacji + in-house do customowych przypadków — jest optymalna.
Vendor vs In-house: jak wybrać?
Decyzja między zewnętrznym dostawcą a budową własnego rozwiązania zależy od kilku czynników:
Kiedy wybrać vendora (IAS, DV, MOAT)?
- Mały / średni zespół ad ops — nie masz zasobów na development i maintenance.
- Standardowe wymagania — wystarczy Ci viewability, brand safety, basic fraud detection.
- Integracje z DSP/SSP — vendorzy mają pre-built integracje z głównymi platformami.
- Certyfikacja — potrzebujesz akredytacji MRC dla viewability metrics.
- Szybki time-to-value — chcesz zacząć w tydzień, nie w kwartał.
Kiedy budować in-house?
- Duży budżet mediowy — powyżej $50M rocznie, custom verification zwraca się w oszczędnościach na fraudzie.
- Niestandardowe reguły — potrzebujesz detekcji specyficznej dla Twojego brandu lub rynku.
- Pełna kontrola nad danymi — nie chcesz, by vendorzy mieli wgląd w Twoje dane reklamowe.
- Integracja z internal tools — chcesz łączyć verification z własnym BI, data warehouse.
- Specyficzne rynki — działasz w regionach, gdzie vendorzy mają słabe pokrycie.
Checklista ewaluacji vendora ad verification
- Pokrycie geograficzne — czy vendor ma residential proxies w wszystkich Twoich targetowanych krajach?
- Typ proxy — czy używają residential/mobile, czy tylko datacenter?
- Metodologia — jak mierzą viewability? Czy są akredytowani przez MRC?
- Latencja — jak szybko dostajesz wyniki weryfikacji?
- API i integracje — czy integrują się z Twoim ad serverem, DSP, BI?
- Custom rules — czy możesz definiować własne reguły detekcji?
- Raportowanie — jak szczegółowe są raporty? Czy masz dostęp do raw data?
- Cena — jaki jest model cenowy? CPM-based czy flat fee?
- Wsparcie — czy masz dedykowany account team?
- Reputacja — referencje od podobnych klientów.
Najlepsze praktyki dla ad verification z residential proxies
- Używaj sticky sessions dla wielokrokowej weryfikacji — pozwala to na zachowanie tego samego IP przez całą sesję browsera.
- Rotacja IP per request dla masowych skanów — unikasz blokad i rate limitów.
- Geo-targeting na poziomie miasta dla kampanii lokalnych — „Warszawa” vs „cała Polska” to różnica w detekcji.
- Mobile proxies dla weryfikacji in-app — reklamy mobilne wymagają realnych urządzeń mobilnych.
- Monitoruj wskaźniki — success rate, latencja, block rate. Nagły wzrost blokad może oznaczać, że oszuści wykryli Twoje IP.
- Dokumentuj baseline — zanim zaczniesz, ustal co jest „normalne” dla Twoich kampanii. Anomalie są łatwiejsze do wykrycia na tle baseline'u.
- Integruj z ad server logs — porównuj deklaracje z wynikami weryfikacji. Duże rozbieżności = sygnał alarmowy.
Kluczowe wnioski
- Ad fraud to problem na 100 miliardów dolarów — nie można go ignorować, szczególnie przy dużych budżetach programatycznych.
- Residential proxies są niezbędne do realnej weryfikacji reklam — datacenter IP są łatwe do zablokowania.
- Domain spoofing i geo-fraud to główne wektory — oba wymagają weryfikacji „z perspektywy użytkownika”.
- Vendorzy (IAS, DV, MOAT) to dobry start dla większości organizacji — ale in-house daje większą kontrolę przy dużym budżecie.
- Hybrydowe podejście często jest optymalne — vendor do standardowej weryfikacji, in-house do customowych reguł i głębokiej analityki.
- ProxyHat oferuje residential i mobile proxies z geo-targetingiem, odpowiednie do budowy własnego pipeline'u ad verification.
Dla zespołów ad ops i trust & safety, ad verification to nie „nice-to-have” — to konieczność. Każdy milion zaoszczędzony na fraudzie to milion, który może iść w realne dotarcie do klientów. Residential proxies to fundament tego procesu.
Sprawdź cennik ProxyHat i dostępne lokalizacje, aby zacząć budować swój system ad verification już dziś.






