From d952db8ef8fe3bf5a418b9b156c0e19c2a899cd1 Mon Sep 17 00:00:00 2001 From: Karim shoair Date: Sun, 12 Apr 2026 17:59:00 +0200 Subject: [PATCH] feat(browsers): add a new feature to block ads This is working by aborting all requests to known ads domains. --- scrapling/cli.py | 11 + scrapling/core/_shell_signatures.py | 2 + scrapling/engines/_browsers/_types.py | 1 + scrapling/engines/_browsers/_validators.py | 9 + scrapling/engines/toolbelt/ad_domains.py | 3537 ++++++++++++++++++++ scrapling/engines/toolbelt/navigation.py | 29 +- scrapling/fetchers/chrome.py | 2 + scrapling/fetchers/stealth_chrome.py | 2 + tests/fetchers/test_utils.py | 126 +- 9 files changed, 3688 insertions(+), 31 deletions(-) create mode 100644 scrapling/engines/toolbelt/ad_domains.py diff --git a/scrapling/cli.py b/scrapling/cli.py index 8ecee2d..9ca0dd4 100644 --- a/scrapling/cli.py +++ b/scrapling/cli.py @@ -309,6 +309,11 @@ def _common_browser_options(f): default=True, help="Run browser in headless mode (default: True)", ), + option( + "--block-ads/--no-block-ads", + default=False, + help="Block requests to known ad and tracker domains (default: False)", + ), ] for decorator in decorators: f = decorator(f) @@ -498,6 +503,7 @@ def __build_browser_kwargs( real_chrome, proxy, parsed_headers, + block_ads, ) -> Dict[str, Any]: """Build shared kwargs dict for browser-based commands.""" kwargs: Dict[str, Any] = { @@ -507,6 +513,7 @@ def __build_browser_kwargs( "timeout": timeout, "locale": locale, "real_chrome": real_chrome, + "block_ads": block_ads, } if wait > 0: kwargs["wait"] = wait @@ -538,6 +545,7 @@ def fetch( proxy, extra_headers, ai_targeted, + block_ads, ): """Opens up a browser and fetch content using DynamicFetcher.""" parsed_headers, _ = _ParseHeaders(extra_headers, False) @@ -552,6 +560,7 @@ def fetch( real_chrome, proxy, parsed_headers, + block_ads, ) from scrapling.fetchers import DynamicFetcher @@ -597,6 +606,7 @@ def stealthy_fetch( allow_webgl, hide_canvas, ai_targeted, + block_ads, ): """Opens up a browser with advanced stealth features and fetch content using StealthyFetcher.""" parsed_headers, _ = _ParseHeaders(extra_headers, False) @@ -611,6 +621,7 @@ def stealthy_fetch( real_chrome, proxy, parsed_headers, + block_ads, ) kwargs.update( { diff --git a/scrapling/core/_shell_signatures.py b/scrapling/core/_shell_signatures.py index 9778318..ce509b6 100644 --- a/scrapling/core/_shell_signatures.py +++ b/scrapling/core/_shell_signatures.py @@ -58,6 +58,7 @@ _FETCH_PARAMS = { "cdp_url": Optional[str], "useragent": Optional[str], "extra_flags": Optional[List[str]], + "block_ads": bool, } _STEALTHY_FETCH_PARAMS = { @@ -84,6 +85,7 @@ _STEALTHY_FETCH_PARAMS = { "cdp_url": Optional[str], "useragent": Optional[str], "extra_flags": Optional[List[str]], + "block_ads": bool, "allow_webgl": bool, "hide_canvas": bool, "block_webrtc": bool, diff --git a/scrapling/engines/_browsers/_types.py b/scrapling/engines/_browsers/_types.py index 2741407..932b2e2 100644 --- a/scrapling/engines/_browsers/_types.py +++ b/scrapling/engines/_browsers/_types.py @@ -88,6 +88,7 @@ class PlaywrightSession(TypedDict, total=False): useragent: Optional[str] extra_flags: Optional[List[str]] blocked_domains: Optional[Set[str]] + block_ads: bool retries: int retry_delay: int | float capture_xhr: str | None diff --git a/scrapling/engines/_browsers/_validators.py b/scrapling/engines/_browsers/_validators.py index 69b3766..8d47061 100644 --- a/scrapling/engines/_browsers/_validators.py +++ b/scrapling/engines/_browsers/_validators.py @@ -85,6 +85,7 @@ class PlaywrightConfig(Struct, kw_only=True, frozen=False, weakref=True): useragent: Optional[str] = None extra_flags: Optional[List[str]] = None blocked_domains: Optional[Set[str]] = None + block_ads: bool = False retries: RetriesCount = 3 retry_delay: Seconds = 1 capture_xhr: str | None = None @@ -127,6 +128,14 @@ class PlaywrightConfig(Struct, kw_only=True, frozen=False, weakref=True): if validation_msg: raise ValueError(validation_msg) + if self.block_ads: + from scrapling.engines.toolbelt.ad_domains import AD_DOMAINS + + if self.blocked_domains: + self.blocked_domains = self.blocked_domains | set(AD_DOMAINS) + else: + self.blocked_domains = set(AD_DOMAINS) + class StealthConfig(PlaywrightConfig, kw_only=True, frozen=False, weakref=True): allow_webgl: bool = True diff --git a/scrapling/engines/toolbelt/ad_domains.py b/scrapling/engines/toolbelt/ad_domains.py new file mode 100644 index 0000000..026a936 --- /dev/null +++ b/scrapling/engines/toolbelt/ad_domains.py @@ -0,0 +1,3537 @@ +""" +Built-in ad/tracker domain list for use with block_ads=True. + +Source: Peter Lowe's ad and tracking server list https://pgl.yoyo.org/adservers/ +Used config: https://pgl.yoyo.org/adservers/serverlist.php?hostformat=plain&showintro=0&startyear=2000&mimetype=plaintext +""" + +AD_DOMAINS: frozenset = frozenset( + { + "101com.com", + "180hits.de", + "180searchassistant.com", + "1rx.io", + "2020mustang.com", + "207.net", + "247media.com", + "24log.com", + "24pm-affiliation.com", + "2linkpath.com", + "2mdn.net", + "2o7.net", + "2znp09oa.com", + "30ads.com", + "3337723.com", + "33across.com", + "360yield.com", + "3lift.com", + "3o9s.short.gy", + "4d5.net", + "4info.com", + "4jnzhl0d0.com", + "50websads.com", + "518ad.com", + "6sc.co", + "777partner.com", + "77tracking.com", + "7bpeople.com", + "7cnq.net", + "82o9v830.com", + "a-ads.com", + "a.mktw.net", + "a.muloqot.uz", + "a.sakh.com", + "a.ucoz.net", + "a.ucoz.ru", + "a.vartoken.com", + "a.vdo.ai", + "a.vfghd.com", + "a.vfgtb.com", + "a.xanga.com", + "a11.click", + "a135.wftv.com", + "a5.overclockers.ua", + "aa-metrics.beauty.hotpepper.jp", + "aa-metrics.recruit-card.jp", + "aa-metrics.trip-ai.jp", + "aaddzz.com", + "aax-eu-dub.amazon.com", + "aaxads.com", + "abacho.net", + "abc-ads.com", + "ablink.comms.trainline.com", + "ablink.info.wise.com", + "ablink.news.emails-puregym.com", + "ablinks.mail.hinge.co", + "aboardlevel.com", + "absolutering.com", + "absorbingband.com", + "abstractedauthority.com", + "abtasty.com", + "ac.rnm.ca", + "accountsdoor.com", + "acebunny.com", + "acemlnb.com", + "acobt.tech", + "acridtwist.com", + "actionsplash.com", + "actonsoftware.com", + "actualdeals.com", + "actuallysheep.com", + "actuallysnake.com", + "acuityads.com", + "acuityplatform.com", + "acustomizedgift.com", + "ad-balancer.at", + "ad-balancer.net", + "ad-cupid.com", + "ad-delivery.net", + "ad-pay.de", + "ad-rotator.com", + "ad-score.com", + "ad-server.gulasidorna.se", + "ad-space.net", + "ad-up.com", + "ad.71i.de", + "ad.a8.net", + "ad.abcnews.com", + "ad.abctv.com", + "ad.aboutwebservices.com", + "ad.abum.com", + "ad.admitad.com", + "ad.allboxing.ru", + "ad.altervista.org", + "ad.amgdgt.com", + "ad.anuntis.com", + "ad.auditude.com", + "ad.bitmedia.io", + "ad.bizo.com", + "ad.bondage.com", + "ad.centrum.cz", + "ad.cgi.cz", + "ad.choiceradio.com", + "ad.cooks.com", + "ad.digitallook.com", + "ad.dnoticias.pt", + "ad.domainfactory.de", + "ad.exyws.org", + "ad.grafika.cz", + "ad.gt", + "ad.hbv.de", + "ad.hyena.cz", + "ad.iinfo.cz", + "ad.infoseek.com", + "ad.intl.xiaomi.com", + "ad.jetsoftware.com", + "ad.keenspace.com", + "ad.lgappstv.com", + "ad.liveinternet.ru", + "ad.lupa.cz", + "ad.mediastorm.hu", + "ad.mg", + "ad.missena.io", + "ad.musicmatch.com", + "ad.myapple.pl", + "ad.mynetreklam.com.streamprovider.net", + "ad.nachtagenten.de", + "ad.nettvservices.com", + "ad.nttnavi.co.jp", + "ad.nwt.cz", + "ad.period-calendar.com", + "ad.profiwin.de", + "ad.prv.pl", + "ad.reachlocal.com", + "ad.simgames.net", + "ad.style", + "ad.technoratimedia.com", + "ad.tv2.no", + "ad.universcine.com", + "ad.usatoday.com", + "ad.virtual-nights.com", + "ad.wavu.hu", + "ad.weatherbug.com", + "ad.wsod.com", + "ad.wz.cz", + "ad.xiaomi.com", + "ad.xmovies8.si", + "ad.xrea.com", + "ad.ztylez.com", + "ad0.bigmir.net", + "ad01.mediacorpsingapore.com", + "ad1.emule-project.org", + "ad1.kde.cz", + "ad2.iinfo.cz", + "ad2.lupa.cz", + "ad2.netriota.hu", + "ad2.nmm.de", + "ad2.xrea.com", + "ad3.iinfo.cz", + "ad3.xrea.com", + "ad4game.com", + "ad4mat.com", + "ad4mat.de", + "ad4mat.net", + "adabra.com", + "adaction.de", + "adadvisor.net", + "adalliance.io", + "adap.tv", + "adapt.tv", + "adbilty.me", + "adblade.com", + "adblade.org", + "adblockanalytics.com", + "adbooth.net", + "adbot.com", + "adbrite.com", + "adbroker.de", + "adbutler.com", + "adbuyer3.lycos.com", + "adcampo.com", + "adcannyads.com", + "adcash.com", + "adcast.deviantart.com", + "adcel.co", + "adcell.de", + "adcenter.net", + "adclick.com", + "adclient1.tucows.com", + "adclixx.net", + "adcolony.com", + "adcomplete.com", + "adconion.com", + "adcontent.gamespy.com", + "adcovery.com", + "adcycle.com", + "add.newmedia.cz", + "addfreestats.com", + "addme.com", + "addressfriend.com", + "ade.clmbtech.com", + "adecn.com", + "adeimptrck.com", + "ademails.com", + "adengage.com", + "adetracking.com", + "adexchangegate.com", + "adexchangeprediction.com", + "adexpose.com", + "adext.inkclub.com", + "adf.ly", + "adfeed.marchex.com", + "adflight.com", + "adforce.com", + "adform.com", + "adform.net", + "adformdsp.net", + "adhaven.com", + "adhese.be", + "adhese.com", + "adhigh.net", + "adhub.media", + "adhunter.media", + "adimage.guardian.co.uk", + "adimages.been.com", + "adimages.carsoup.com", + "adimages.go.com", + "adimages.homestore.com", + "adimages.omroepzeeland.nl", + "adimages.sanomawsoy.fi", + "adimg.com.com", + "adimg.uimserv.net", + "adimg1.chosun.com", + "adimgs.sapo.pt", + "adingo.jp", + "adinjector.net", + "adinterax.com", + "adisfy.com", + "adition.com", + "adition.de", + "adition.net", + "adizio.com", + "adjix.com", + "adjug.com", + "adjuggler.com", + "adjuggler.yourdictionary.com", + "adjust.com", + "adjustnetwork.com", + "adk2.com", + "adland.ru", + "adlegend.com", + "adlightning.com", + "adlog.com.com", + "adloox.com", + "adlooxtracking.com", + "adlure.net", + "adm.fwmrm.net", + "admailtiser.com", + "adman.gr", + "adman.otenet.gr", + "admanagement.ch", + "admanager.btopenworld.com", + "admanager.carsoup.com", + "admanmedia.com", + "admantx.com", + "admarketplace.net", + "admarvel.com", + "admaster.com.cn", + "admatchly.com", + "admedia.com", + "admeld.com", + "admeridianads.com", + "admex.com", + "admidadsp.com", + "adminder.com", + "adminshop.com", + "admixer.net", + "admized.com", + "admob.com", + "admonitor.com", + "adn.lrb.co.uk", + "adnami.io", + "adnet.asahi.com", + "adnet.biz", + "adnet.de", + "adnet.ru", + "adnetasia.com", + "adnetwork.net", + "adnetworkperformance.com", + "adnews.maddog2000.de", + "adnium.com", + "adnxs-simple.com", + "adnxs.com", + "adocean.pl", + "adonspot.com", + "adopsboost.com", + "adoptum.net", + "adoric-om.com", + "adorigin.com", + "adotmob.com", + "adpepper.dk", + "adpepper.nl", + "adperium.com", + "adpia.vn", + "adplxmd.com", + "adprofits.ru", + "adpushup.com", + "adrazzi.com", + "adreactor.com", + "adrecover.com", + "adrecreate.com", + "adremedy.com", + "adreporting.com", + "adrevolver.com", + "adriver.ru", + "adrolays.de", + "adrotate.de", + "adrotic.girlonthenet.com", + "adrta.com", + "ads-backend.chaincliq.com", + "ads-bilek.com", + "ads-dev.pinterest.com", + "ads-game-187f4.firebaseapp.com", + "ads-img.mozilla.org", + "ads-portal-cdn.vidaatv.net", + "ads-twitter.com", + "ads.365.mk", + "ads.5ci.lt", + "ads.73dpi.com", + "ads.aavv.com", + "ads.abovetopsecret.com", + "ads.aceweb.net", + "ads.acpc.cat", + "ads.acrosspf.com", + "ads.activestate.com", + "ads.adfox.ru", + "ads.administrator.de", + "ads.adred.de", + "ads.adstream.com.ro", + "ads.adultfriendfinder.com", + "ads.advance.net", + "ads.adverline.com", + "ads.alive.com", + "ads.alt.com", + "ads.amdmb.com", + "ads.amigos.com", + "ads.annabac.com", + "ads.apn.co.nz", + "ads.appsgeyser.com", + "ads.as4x.tmcs.net", + "ads.as4x.tmcs.ticketmaster.com", + "ads.asiafriendfinder.com", + "ads.avazu.net", + "ads.bb59.ru", + "ads.betfair.com", + "ads.bigchurch.com", + "ads.bigfoot.com", + "ads.bing.com", + "ads.bittorrent.com", + "ads.blog.com", + "ads.bluemountain.com", + "ads.boerding.com", + "ads.boylesports.com", + "ads.canalblog.com", + "ads.casinocity.com", + "ads.casumoaffiliates.com", + "ads.cbc.ca", + "ads.cc", + "ads.cc-dt.com", + "ads.centraliprom.com", + "ads.channel4.com", + "ads.cheabit.com", + "ads.citymagazine.si", + "ads.clasificadox.com", + "ads.co.com", + "ads.colombiaonline.com", + "ads.com.com", + "ads.comeon.com", + "ads.creative-serving.com", + "ads.cybersales.cz", + "ads.dada.it", + "ads.dailycamera.com", + "ads.deltha.hu", + "ads.dennisnet.co.uk", + "ads.desmoinesregister.com", + "ads.deviantart.com", + "ads.devmates.com", + "ads.digital-digest.com", + "ads.digitalmedianet.com", + "ads.digitalpoint.com", + "ads.doit.com.cn", + "ads.domeus.com", + "ads.eagletribune.com", + "ads.easy-forex.com", + "ads.economist.com", + "ads.elcarado.com", + "ads.electrocelt.com", + "ads.elitetrader.com", + "ads.emdee.ca", + "ads.emirates.net.ae", + "ads.epi.sk", + "ads.epltalk.com", + "ads.eu.msn.com", + "ads.fairfax.com.au", + "ads.fastcomgroup.it", + "ads.femmefab.nl", + "ads.ferianc.com", + "ads.filmup.com", + "ads.financialcontent.com", + "ads.flooble.com", + "ads.fool.com", + "ads.footymad.net", + "ads.forbes.net", + "ads.formit.cz", + "ads.fortunecity.com", + "ads.fotosidan.se", + "ads.friendfinder.com", + "ads.gamecity.net", + "ads.gamespyid.com", + "ads.gamigo.de", + "ads.gaming-universe.de", + "ads.gaming1.com", + "ads.getlucky.com", + "ads.gld.dk", + "ads.gmodules.com", + "ads.goyk.com", + "ads.gradfinder.com", + "ads.grindinggears.com", + "ads.gsm-exchange.com", + "ads.gsmexchange.com", + "ads.guardian.co.uk", + "ads.guardianunlimited.co.uk", + "ads.hbv.de", + "ads.hearstmags.com", + "ads.heartlight.org", + "ads.hollywood.com", + "ads.horsehero.com", + "ads.hsoub.com", + "ads.ibest.com.br", + "ads.ibryte.com", + "ads.icq.com", + "ads.ign.com", + "ads.imagistica.com", + "ads.imgur.com", + "ads.independent.com.mt", + "ads.infi.net", + "ads.internic.co.il", + "ads.ipowerweb.com", + "ads.itv.com", + "ads.jewishfriendfinder.com", + "ads.jobsite.co.uk", + "ads.justhungry.com", + "ads.kabooaffiliates.com", + "ads.kaktuz.net", + "ads.kelbymediagroup.com", + "ads.kinxxx.com", + "ads.kompass.com", + "ads.krawall.de", + "ads.leovegas.com", + "ads.lesbianpersonals.com", + "ads.liberte.pl", + "ads.linkedin.com", + "ads.livenation.com", + "ads.ma7.tv", + "ads.mail.bg", + "ads.massinfra.nl", + "ads.mcafee.com", + "ads.mediaodyssey.com", + "ads.mediasmart.es", + "ads.medienhaus.de", + "ads.meetcelebs.com", + "ads.mgnetwork.com", + "ads.miarroba.com", + "ads.mic.com", + "ads.mmania.com", + "ads.mobilebet.com", + "ads.mozilla.org", + "ads.msn.com", + "ads.multimania.lycos.fr", + "ads.muslimehelfen.org", + "ads.mvscoelho.com", + "ads.myadv.org", + "ads.ndtv1.com", + "ads.networksolutions.com", + "ads.newgrounds.com", + "ads.newmedia.cz", + "ads.newsint.co.uk", + "ads.newsquest.co.uk", + "ads.nj.com", + "ads.nola.com", + "ads.nordichardware.com", + "ads.nordichardware.se", + "ads.nyi.net", + "ads.nytimes.com", + "ads.nyx.cz", + "ads.nzcity.co.nz", + "ads.o2.pl", + "ads.oddschecker.com", + "ads.okcimg.com", + "ads.ole.com", + "ads.oneplace.com", + "ads.opensubtitles.org", + "ads.optusnet.com.au", + "ads.outpersonals.com", + "ads.oxyshop.cz", + "ads.passion.com", + "ads.paymonex.net", + "ads.pexi.nl", + "ads.pfl.ua", + "ads.phpclasses.org", + "ads.pinterest.com", + "ads.planet.nl", + "ads.pni.com", + "ads.pof.com", + "ads.powweb.com", + "ads.printscr.com", + "ads.prisacom.com", + "ads.prod.webservices.mozgcp.net", + "ads.program3.com", + "ads.psd2html.com", + "ads.pubmatic.com", + "ads.quoka.de", + "ads.radio1.lv", + "ads.recoletos.es", + "ads.rediff.com", + "ads.redlightcenter.com", + "ads.revjet.com", + "ads.reward-hunt.com", + "ads.samsung.com", + "ads.saymedia.com", + "ads.schmoozecom.net", + "ads.scifi.com", + "ads.seniorfriendfinder.com", + "ads.servebom.com", + "ads.shizmoo.com", + "ads.shopstyle.com", + "ads.sift.co.uk", + "ads.sjon.info", + "ads.smartclick.com", + "ads.socialtheater.com", + "ads.soft32.com", + "ads.soweb.gr", + "ads.space.com", + "ads.sun.com", + "ads.suomiautomaatti.com", + "ads.supplyframe.com", + "ads.syscdn.de", + "ads.themovienation.com", + "ads.thestar.com", + "ads.thrillsaffiliates.com", + "ads.tiktok.com", + "ads.tmcs.net", + "ads.todoti.com.br", + "ads.toplayaffiliates.com", + "ads.townhall.com", + "ads.travelaudience.com", + "ads.trinitymirror.co.uk", + "ads.tripod.com", + "ads.tripod.lycos.co.uk", + "ads.tripod.lycos.es", + "ads.tripod.lycos.it", + "ads.tripod.lycos.nl", + "ads.tso.dennisnet.co.uk", + "ads.twitter.com", + "ads.twojatv.info", + "ads.ultimate-guitar.com", + "ads.uncrate.com", + "ads.unison.bg", + "ads.usatoday.com", + "ads.uxs.at", + "ads.v-lazer.com", + "ads.verticalresponse.com", + "ads.vgchartz.com", + "ads.virtual-nights.com", + "ads.virtuopolitan.com", + "ads.vnumedia.com", + "ads.walkiberia.com", + "ads.watson.ch", + "ads.weather.ca", + "ads.web.de", + "ads.webinak.sk", + "ads.webmasterpoint.org", + "ads.whoishostingthis.com", + "ads.wiezoekje.nl", + "ads.wikia.nocookie.net", + "ads.wineenthusiast.com", + "ads.wwe.biz", + "ads.xhamster.com", + "ads.xtra.co.nz", + "ads.yahoo.com", + "ads.yimg.com", + "ads.yldmgrimg.net", + "ads.youtube.com", + "ads.yumenetworks.com", + "ads1-adnow.com", + "ads1.msn.com", + "ads1.virtual-nights.com", + "ads10.speedbit.com", + "ads180.com", + "ads2.brazzers.com", + "ads2.contentabc.com", + "ads2.femmefab.nl", + "ads2.gamecity.net", + "ads2.hsoub.com", + "ads2.virtual-nights.com", + "ads2.xnet.cz", + "ads2004.treiberupdate.de", + "ads24h.net", + "ads3-adnow.com", + "ads3.contentabc.com", + "ads3.gamecity.net", + "ads3.virtual-nights.com", + "ads4.gamecity.net", + "ads4.virtual-nights.com", + "ads4homes.com", + "ads5.virtual-nights.com", + "ads6.gamecity.net", + "ads7.gamecity.net", + "adsafeprotected.com", + "adsatt.abc.starwave.com", + "adsatt.abcnews.starwave.com", + "adsatt.espn.go.com", + "adsatt.espn.starwave.com", + "adsatt.go.starwave.com", + "adsby.bidtheatre.com", + "adsbydelema.com", + "adscale.de", + "adscholar.com", + "adscience.nl", + "adsco.re", + "adscpm.com", + "adsdaq.com", + "adsdk.yandex.ru", + "adsend.de", + "adsensecustomsearchads.com", + "adserve.ams.rhythmxchange.com", + "adserve.gkeurope.de", + "adserve.io", + "adserve.jbs.org", + "adserver.71i.de", + "adserver.adultfriendfinder.com", + "adserver.adverty.com", + "adserver.anawe.cz", + "adserver.ariase.org", + "adserver.bdoce.cl", + "adserver.betandwin.de", + "adserver.bing.com", + "adserver.bizedge.com", + "adserver.bizhat.com", + "adserver.break-even.it", + "adserver.cams.com", + "adserver.cdnstream.com", + "adserver.cherryfind.co.uk", + "adserver.com", + "adserver.diariodosertao.com.br", + "adserver.digitoday.com", + "adserver.echdk.pl", + "adserver.friendfinder.com", + "adserver.generationiron.com", + "adserver.hwupgrade.it", + "adserver.ilango.de", + "adserver.industryarena.com", + "adserver.info7.mx", + "adserver.irishwebmasterforum.com", + "adserver.janes.com", + "adserver.kontent.com", + "adserver.mobi", + "adserver.news.com.au", + "adserver.nydailynews.com", + "adserver.o2.pl", + "adserver.oddschecker.com", + "adserver.omroepzeeland.nl", + "adserver.otthonom.hu", + "adserver.pampa.com.br", + "adserver.piksel.mk", + "adserver.pl", + "adserver.portugalmail.net", + "adserver.pressboard.ca", + "adserver.sanomawsoy.fi", + "adserver.sciflicks.com", + "adserver.scr.sk", + "adserver.smgfiles.com", + "adserver.trojaner-info.de", + "adserver.tupolska.com", + "adserver.twitpic.com", + "adserver.virginmedia.com", + "adserver.waggonerguide.com", + "adserver01.de", + "adserverplus.com", + "adserverpub.com", + "adserversolutions.com", + "adserverxxl.de", + "adservice.google.com", + "adservice.google.com.mt", + "adserving.unibet.com", + "adservingfront.com", + "adservrs.com", + "adservrs.com.edgekey.net", + "adsfac.eu", + "adsfac.net", + "adsfac.us", + "adsflowprime.top", + "adshrink.it", + "adside.com", + "adsiduous.com", + "adskeeper.co.uk", + "adskeeper.com", + "adsklick.de", + "adsmart.net", + "adsmartracker.com", + "adsmetadata.startappservice.com", + "adsmogo.com", + "adsnative.com", + "adsoftware.com", + "adsolut.in", + "adspeed.net", + "adspirit.de", + "adsponse.de", + "adspredictiv.com", + "adspsp.com", + "adsroller.com", + "adsrv.deviantart.com", + "adsrv.eacdn.com", + "adsrv.iol.co.za", + "adsrv.kobi.tv", + "adsrv.moebelmarkt.tv", + "adsrv2.swidnica24.pl", + "adsrvr.org", + "adstacks.in", + "adstanding.com", + "adstat.4u.pl", + "adstest.weather.com", + "adstub.net", + "adsupply.com", + "adswizz.com", + "adsxyz.com", + "adsynergy.com", + "adsys.townnews.com", + "adsystem.simplemachines.org", + "adt598.com", + "adtech.com", + "adtech.de", + "adtechjp.com", + "adtechus.com", + "adtegrity.net", + "adthis.com", + "adthrive.com", + "adtiger.de", + "adtilt.com", + "adtng.com", + "adtology.com", + "adtoma.com", + "adtrace.org", + "adtrack.voicestar.com", + "adtraction.com", + "adtrade.net", + "adultadvertising.com", + "adv-adserver.com", + "adv.donejty.pl", + "adv.freeonline.it", + "adv.hwupgrade.it", + "adv.mpvc.it", + "adv.nexthardware.com", + "adv.webmd.com", + "adv.wp.pl", + "adv.yo.cz", + "advangelists.com", + "advariant.com", + "adventory.com", + "adventurousamount.com", + "advert.bayarea.com", + "advert.dyna.ultraweb.hu", + "adverticum.com", + "adverticum.net", + "advertipros.com", + "advertise.com", + "advertiserurl.com", + "advertising.com", + "advertisingbanners.com", + "advertisingbox.com", + "advertmarket.com", + "advertmedia.de", + "advertpro.ya.com", + "advertserve.com", + "advertwizard.com", + "advideo.uimserv.net", + "adview.com", + "advisormedia.cz", + "adviva.net", + "advnt.com", + "adwebone.com", + "adwhirl.com", + "adworldnetwork.com", + "adworx.at", + "adworx.nl", + "adx.gayboy.at", + "adxpansion.com", + "adxpose.com", + "adyoulike.com", + "adz.rashflash.com", + "adzbazar.com", + "adzerk.net", + "adzerk.s3.amazonaws.com", + "adzestocp.com", + "aerialapps.com", + "aerserv.com", + "af-ad.co.uk", + "affec.tv", + "affectionknit.com", + "affili.net", + "affiliate.1800flowers.com", + "affiliate.dtiserv.com", + "affiliate.travelnow.com", + "affiliate.treated.com", + "affiliatefuture.com", + "affiliates.allposters.com", + "affiliates.babylon.com", + "affiliates.globat.com", + "affiliates.streamray.com", + "affiliates.thinkhost.net", + "affiliates.thrixxx.com", + "affiliates.ultrahosting.com", + "affiliatetracking.com", + "affiliatetracking.net", + "affiliatewindow.com", + "afflnx.com", + "afftracking.justanswer.com", + "afraidlanguage.com", + "agencysignals.com", + "agkn.com", + "ah-ha.com", + "ahalogy.com", + "aheadday.com", + "aim4media.com", + "airplanecoffee.com", + "airpush.com", + "aistat.net", + "ak0gsh40.com", + "alchemist.go2cloud.org", + "alclick.com", + "alenty.com", + "alexa-sitestats.s3.amazonaws.com", + "algorix.co", + "aliasanvil.com", + "alikeaddition.com", + "alipromo.com", + "alluringbucket.com", + "aloofmetal.com", + "aloofvest.com", + "alphonso.tv", + "als-svc.nytimes.com", + "amazingcounters.com", + "amazon-adsystem.com", + "americash.com", + "amidsttruly.com", + "amung.us", + "analytics-production.hapyak.com", + "analytics.adpost.org", + "analytics.algoepico.net", + "analytics.bitrix.info", + "analytics.cloudron.io", + "analytics.ext.go-tellm.com", + "analytics.google.com", + "analytics.htmedia.in", + "analytics.icons8.com", + "analytics.inlinemanual.com", + "analytics.jst.ai", + "analytics.justuno.com", + "analytics.lucid.app", + "analytics.mailmunch.co", + "analytics.mobile.yandex.net", + "analytics.momentum-institut.at", + "analytics.myfinance.com", + "analytics.ostr.io", + "analytics.phando.com", + "analytics.picsart.com", + "analytics.pinterest.com", + "analytics.pointdrive.linkedin.com", + "analytics.poolshool.com", + "analytics.posttv.com", + "analytics.santander.co.uk", + "analytics.swiggy.com", + "analytics.tiktok.com", + "analytics.xelondigital.com", + "analytics.yahoo.com", + "analyticsapi.happypancake.net", + "ancientact.com", + "androiddownload.net", + "aniview.com", + "annonser.dagbladet.no", + "annoyedairport.com", + "annoyingacoustics.com", + "anrdoezrs.net", + "anstrex.com", + "anxiousapples.com", + "api.affiliations.site", + "api.amplitude.com", + "api.appmetrica.yandex.ru", + "api.eu.amplitude.com", + "api.intensifier.de", + "api.iterable.com", + "api.kameleoon.com", + "api.lab.amplitude.com", + "api.rudderlabs.com", + "api.swetrix.com", + "api2.amplitude.com", + "apolloprogram.io", + "app-analytics-v2.snapchat.com", + "app-analytics.snapchat.com", + "app-measurement.com", + "app.pendo.io", + "app2.salesmanago.pl", + "appboycdn.com", + "applovin.com", + "appsflyer.com", + "aps.hearstnp.com", + "apsalar.com", + "aptabase.com", + "apture.com", + "apu.samsungelectronics.com", + "aquaticowl.com", + "aralego.com", + "arc1.msn.com", + "archswimming.com", + "ard.xxxblackbook.com", + "aromamirror.com", + "as.webmd.com", + "as2.adserverhd.com", + "aserv.motorsgate.com", + "asewlfjqwlflkew.com", + "askdriver.com", + "aso1.net", + "assets1.exgfnetwork.com", + "assoc-amazon.com", + "aswpapius.com", + "aswpsdkus.com", + "async.gsyndication.com", + "at-adserver.alltop.com", + "at-o.net", + "atdmt.com", + "athena-ads.wikia.com", + "ato.mx", + "attractionbanana.com", + "attribution.report", + "atwola.com", + "auctionads.com", + "auctionads.net", + "aud.pubmatic.com", + "audience.media", + "audience2media.com", + "audienceinsights.com", + "audio.ad", + "audit.median.hu", + "audit.webinform.hu", + "augur.io", + "auto-bannertausch.de", + "avalonalbum.com", + "avazutracking.net", + "avenuea.com", + "avocet.io", + "awempire.com", + "awin1.com", + "awstrack.me", + "awzbijw.com", + "axonix.com", + "ay.delivery", + "ayads.co", + "b-s.tercept.com", + "b.videoamp.com", + "b3.videoamp.com", + "ba.afl.rakuten.co.jp", + "backbeatmedia.com", + "bagsurprise.com", + "banik.redigy.cz", + "banner.ambercoastcasino.com", + "banner.buempliz-online.ch", + "banner.cotedazurpalace.com", + "banner.easyspace.com", + "banner.elisa.net", + "banner.finzoom.ro", + "banner.goldenpalace.com", + "banner.inyourpocket.com", + "banner.linux.se", + "banner.media-system.de", + "banner.nixnet.cz", + "banner.noblepoker.com", + "banner.northsky.com", + "banner.reinstil.de", + "banner.tanto.de", + "banner.titan-dsl.de", + "banner10.zetasystem.dk", + "bannerads.de", + "bannerboxes.com", + "bannerconnect.com", + "bannerconnect.net", + "bannergrabber.internet.gr", + "bannerimage.com", + "bannermall.com", + "bannermanager.bnr.bg", + "bannerpower.com", + "banners.adultfriendfinder.com", + "banners.amigos.com", + "banners.asiafriendfinder.com", + "banners.babylon-x.com", + "banners.bol.com.br", + "banners.cams.com", + "banners.czi.cz", + "banners.dine.com", + "banners.direction-x.com", + "banners.freett.com", + "banners.friendfinder.com", + "banners.getiton.com", + "banners.iq.pl", + "banners.passion.com", + "banners.payserve.com", + "banners.resultonline.com", + "banners.sys-con.com", + "banners.thomsonlocal.com", + "banners.virtuagirlhd.com", + "bannerserver.com", + "bannershotlink.perfectgonzo.com", + "bannersng.yell.com", + "bannerspace.com", + "bannerswap.com", + "bannertrack.net", + "bannery.cz", + "bannieres.wdmedia.net", + "bans.bride.ru", + "baremetrics.com", + "barnesandnoble.bfast.com", + "basebanner.com", + "basketballbelieve.com", + "baskettexture.com", + "bastingart.com", + "bat.bing.com", + "bbelements.com", + "bbn.img.com.ua", + "beachfront.com", + "beacon.gu-web.net", + "beacon.netflix.com", + "beacons.gcp.gvt2.com", + "beacons.gvt2.com", + "bebi.com", + "beemray.com", + "begun.ru", + "behavioralengine.com", + "belstat.com", + "belstat.nl", + "benefits.sovendus.com", + "benfly.net", + "berp.com", + "bespoke.iln8.net", + "bestboundary.com", + "bestbuy.7tiv.net", + "bewilderedblade.com", + "bfmio.com", + "bhcumsc.com", + "bid.pubmatic.com", + "bidbarrel.cbsnews.com", + "bidclix.com", + "bidclix.net", + "bidpapers.com", + "bidr.io", + "bidsopt.com", + "bidswitch.net", + "bidtellect.com", + "bidvertiser.com", + "big-bang-ads.com", + "bigbangmedia.com", + "bigclicks.com", + "bigfishapparel.com", + "bigreal.org", + "bigworldfashion.com", + "billboard.cz", + "billtable.com", + "birthdaybelief.com", + "bitmedianetwork.com", + "bizible.com", + "bizographics.com", + "bizrate.com", + "bizzclick.com", + "bkrtx.com", + "bleachbubble.com", + "blingbucks.com", + "blis.com", + "blockadblock.com", + "blogads.com", + "blogcounter.de", + "blogherads.com", + "blogtoplist.se", + "blogtopsites.com", + "blueconic.com", + "blueconic.net", + "bluekai.com", + "bluelithium.com", + "bluenest.net", + "bluewhaleweb.com", + "blushingbeast.com", + "blushingbread.com", + "bm.annonce.cz", + "bn.bfast.com", + "bnrs.ilm.ee", + "boffoadsapi.com", + "boilingbeetle.com", + "boilingmadsoup.com", + "bongacash.com", + "boomads.com", + "boomtrain.com", + "boredcrown.com", + "boudja.com", + "bounceads.net", + "bounceexchange.com", + "bowie-cdn.fathomdns.com", + "box.anchorfree.net", + "bpath.com", + "bpu.samsungelectronics.com", + "braincash.com", + "brand-display.com", + "brandreachsys.com", + "brandybison.com", + "braze.eu", + "breadbalance.com", + "breakableinsurance.com", + "breaktime.com.tw", + "brealtime.com", + "bridgetrack.com", + "brightcom.com", + "brightinfo.com", + "brightmountainmedia.com", + "broadcastbed.com", + "broadstreetads.com", + "browser-http-intake.logs.datadoghq.com", + "browser-http-intake.logs.datadoghq.eu", + "bs.yandex.ru", + "btglss.net", + "btrll.com", + "bttrack.com", + "bubblyaction.com", + "buddycanvas.com", + "buysellads.com", + "buzzonclick.com", + "bwp.download.com", + "c.bigmir.net", + "c1exchange.com", + "c212.net", + "cakesdrum.com", + "calculatingcircle.com", + "calculatorstatement.com", + "call-ad-network-api.marchex.com", + "callousbrake.com", + "callrail.com", + "calmcactus.com", + "calypsocapsule.com", + "campaign.bharatmatrimony.com", + "caniamedia.com", + "capriciouscorn.com", + "captainbicycle.com", + "captainstick.com", + "carambo.la", + "carbonads.com", + "carbonads.net", + "cardmethod.com", + "caringcast.com", + "carsarace.com", + "cartstack.com", + "carvecakes.com", + "casalemedia.com", + "casalmedia.com", + "cash4members.com", + "cash4popup.de", + "cashcrate.com", + "cashengines.com", + "cashfiesta.com", + "cashpartner.com", + "cashstaging.me", + "casinopays.com", + "casinorewards.com", + "casinotraffic.com", + "cattlecommittee.com", + "causecherry.com", + "cautiouscredit.com", + "cbanners.virtuagirlhd.com", + "cbzxy.com", + "cdn.bannerflow.com", + "cdn.branch.io", + "cdn.freshmarketer.com", + "cdn.heapanalytics.com", + "cdn.keywee.co", + "cdn.mouseflow.com", + "cdn.onesignal.com", + "cdn.scarabresearch.com", + "cdn.segment.com", + "cdnondemand.org", + "cedato.com", + "celtra.com", + "centerpointmedia.com", + "cetrk.com", + "cgicounter.puretec.de", + "chairscrack.com", + "channelintelligence.com", + "chargecracker.com", + "chart.dk", + "chartbeat.com", + "chartbeat.net", + "chartboost.com", + "checkstat.nl", + "cherriescare.com", + "childlikecrowd.com", + "chubbycreature.com", + "citrusad.net", + "cityads.telus.net", + "cj.com", + "cjbmanagement.com", + "cjlog.com", + "cl.turkishairlines.com", + "cl0udh0st1ng.com", + "clck.ru", + "clevernt.com", + "click-1.pl", + "click.airmalta-mail.com", + "click.aliexpress.com", + "click.allkeyshop.com", + "click.bkdpt.com", + "click.cartsguru.io", + "click.ccg.nintendo.com", + "click.cision.com", + "click.classmates.com", + "click.comm.rcibank.co.uk", + "click.crm.ba.com", + "click.digital.metaquestmail.com", + "click.discord.com", + "click.e.bbcmail.co.uk", + "click.e.progressive.com", + "click.e.zoom.us", + "click.em.blizzard.com", + "click.email.bbc.com", + "click.email.lhh.com", + "click.email.microsoftemail.com", + "click.email.sonos.com", + "click.emails.argos.co.uk", + "click.emails.tuclothing.sainsburys.co.uk", + "click.fool.com", + "click.hookupinyourcity.com", + "click.hooligapps.com", + "click.i.southwesternrailway.com", + "click.infoblox.com", + "click.justwatch.com", + "click.kmindex.ru", + "click.liftoff.io", + "click.mail.hotels.com", + "click.mail.salesforce.com", + "click.mailing.ticketmaster.com", + "click.mkt.grab.com", + "click.news.vans.com", + "click.nl.npr.org", + "click.nvgaming.nvidia.com", + "click.redditmail.com", + "click.uber.com", + "click.v.visionlab.es", + "click2freemoney.com", + "click360v2-ingest.azurewebsites.net", + "click4.pro", + "clickadddilla.com", + "clickadz.com", + "clickagents.com", + "clickbank.com", + "clickbooth.com", + "clickboothlnk.com", + "clickbrokers.com", + "clickcease.com", + "clickcompare.co.uk", + "clickdensity.com", + "clickedyclick.com", + "clickfuse.com", + "clickhereforcellphones.com", + "clickngo.pro", + "clickngo.top", + "clickonometrics.pl", + "clicks.checkatrade.com", + "clicks.deliveroo.co.uk", + "clicks.equantum.com", + "clicks.eventbrite.com", + "clicks.monzo.com", + "clickserve.cc-dt.com", + "clicksinfo.thefork.co.uk", + "clicktag.de", + "clickthruserver.com", + "clickthrutraffic.com", + "clicktrack.pubmatic.com", + "clicktrack.ziyu.net", + "clicktracks.com", + "clicktrade.com", + "clickxchange.com", + "clickyab.com", + "clickz.com", + "clientgear.com", + "clientmetrics-pa.googleapis.com", + "clikerz.net", + "cliksolution.com", + "clixgalore.com", + "clk1005.com", + "clk1011.com", + "clk1015.com", + "clkrev.com", + "clksite.com", + "cloudflareinsights.com", + "cloudguppy.com", + "clrstm.com", + "cluster.adultworld.com", + "clustrmaps.com", + "cmp.dmgmediaprivacy.co.uk", + "cmvrclicks000.com", + "cnomy.com", + "cnt1.pocitadlo.cz", + "cnvlink.com", + "cny.yoyo.org", + "codeadnetwork.com", + "cognitiv.ai", + "cointraffic.io", + "coldbalance.com", + "collector-dev.cdp-dev.cnn.com", + "collector.cdp.cnn.com", + "colonize.com", + "colorfulpet.com", + "coloroptimizer.com", + "comfortablecheese.com", + "commissionmonster.com", + "communications.melitaltd.com", + "compactbanner.com", + "comparereaction.com", + "compilework.com", + "comprabanner.it", + "conditionchange.com", + "conductrics.com", + "confiant-integrations.net", + "confidencetalks.com", + "configv2.unityads.unity3d.com", + "connatix.com", + "connectad.io", + "connextra.com", + "consciouscheese.com", + "consensad.com", + "consensu.org", + "contadores.miarroba.com", + "content.acc-hd.de", + "content.ad", + "content22.online.citi.com", + "contextweb.com", + "contrack.link", + "converge-digital.com", + "conversantmedia.com", + "conversionbet.com", + "conversionruler.com", + "convertingtraffic.com", + "convrse.media", + "cookies.cmpnet.com", + "coolkidsdistrict.com", + "cootlogix.com", + "copperstills.net", + "copycarpenter.com", + "copyrightaccesscontrols.com", + "coremetrics.com", + "cosmosjackson.com", + "count.rin.ru", + "count.west263.com", + "counted.com", + "counter.bloke.com", + "counter.cnw.cz", + "counter.cz", + "counter.dreamhost.com", + "counter.mirohost.net", + "counter.mojgorod.ru", + "counter.rambler.ru", + "counter.search.bg", + "counter.snackly.co", + "counting.kmindex.ru", + "coupling-media.de", + "cowbelltime.com", + "coxmt.com", + "cozyhillside.com", + "cpalead.com", + "cpays.com", + "cpmstar.com", + "cpu.samsungelectronics.com", + "cpx.to", + "cpxinteractive.com", + "cqcounter.com", + "crabbychin.com", + "craktraffic.com", + "crashchance.com", + "crashlytics.com", + "crashlyticsreports-pa.googleapis.com", + "cratecamera.com", + "crawlability.com", + "crazyegg.com", + "crazypopups.com", + "creatives.livejasmin.com", + "creatopy.net", + "crimsonmeadow.com", + "criteo.com", + "criteo.net", + "critictruck.com", + "crowdedmass.com", + "crowdgravity.com", + "crsspxl.com", + "crta.dailymail.co.uk", + "crtv.mate1.com", + "crwdcntrl.net", + "crypto-loot.org", + "crystalboulevard.com", + "cs.co", + "curbminers.com", + "curiousmetal.com", + "curtaincows.com", + "curveshore.com", + "cushiondrum.com", + "customad.cnn.com", + "customads.co", + "customerevents.netflix.com", + "customers.kameleoon.com", + "cutechin.com", + "cxense.com", + "cyberbounty.com", + "cyclinghere.com", + "d-collect.jennifersoft.com", + "d-collector.jennifersoft.com", + "d.adroll.com", + "d1f0tbk1v3e25u.cloudfront.net", + "d2cmedia.ca", + "d81mfvml8p5ml.cloudfront.net", + "dabiaozhi.com", + "dacdn.visualwebsiteoptimizer.com", + "dacdn.vwo.com", + "dakic-ia-300.com", + "damageddistance.com", + "damdoor.com", + "dapper.net", + "data.namesakeoscilloscopemarquis.com", + "datapickles.com", + "datenow.link", + "daybreaklights.com", + "dc-storm.com", + "de17a.com", + "dealdotcom.com", + "decenterads.com", + "decisivebase.com", + "decisivedrawer.com", + "decknetwork.net", + "deepintent.com", + "delicatecascade.com", + "deloo.de", + "demandbase.com", + "demdex.net", + "deployads.com", + "desertgates.com", + "desiredirt.com", + "detailedgovernment.com", + "detectdiscovery.com", + "dev.visualwebsiteoptimizer.com", + "dewdroplagoon.com", + "dianomi.com", + "dicecandies.com", + "didtheyreadit.com", + "digestiondrawer.com", + "digital-ads.s3.amazonaws.com", + "direct-events-collector.spot.im", + "direct-promo.pro", + "directaclick.com", + "directorym.com", + "discountclick.com", + "discreetfield.com", + "displayvertising.com", + "disqusads.com", + "dist.belnk.com", + "distillery.wistia.com", + "districtm.ca", + "districtm.io", + "dmp.mall.tv", + "dmtracker.com", + "dmtracking.alibaba.com", + "dmtracking2.alibaba.com", + "dnsdelegation.io", + "do-global.com", + "dockdigestion.com", + "dogcollarfavourbluff.com", + "domaining.in", + "domdex.com", + "dotmetrics.net", + "dotomi.com", + "doubleclick.com", + "doubleclick.de", + "doubleclick.net", + "doublepimp.com", + "doubleverify.com", + "dpbolvw.net", + "dpu.samsungelectronics.com", + "dq95d35.com", + "dragonbats.com", + "drumcash.com", + "dsp.colpirio.com", + "dsp.io", + "dstillery.com", + "dustyhammer.com", + "dyntrk.com", + "e-eu.customeriomail.com", + "e-m.fr", + "e-planning.net", + "e.customeriomail.com", + "e.kde.cz", + "e37364.dscd.akamaiedge.net", + "eadexchange.com", + "eas.almamedia.fi", + "easyhits4u.com", + "ebayadvertising.com", + "ebuzzing.com", + "echoacloud.com", + "ecircle-ag.com", + "ecleneue.com", + "eclick.vn", + "eclicks.deliveroo.com", + "eclkspbn.com", + "ecoupons.com", + "edaa.eu", + "edgexads.com", + "eighthlayer.net", + "eiv.baidu.com", + "elasticchange.com", + "elderlytown.com", + "elitedollars.com", + "em1.yoursantander.co.uk", + "email-link.adtidy.info", + "email-link.adtidy.net", + "email-link.adtidy.org", + "email-links.crowdfireapp.com", + "email-open.adtidy.net", + "email-open.adtidy.org", + "email-trk.ihg-businessedge.com", + "email.mg1.substack.com", + "emailer.stockbit.com", + "emaillinks.soundiiz.com", + "emebo.io", + "emerse.com", + "emetriq.de", + "emjcd.com", + "eml.blackduck.com", + "emltrk.com", + "emodoinc.com", + "emptyescort.com", + "emxdigital.com", + "energeticladybug.com", + "engage.tines.com", + "engage.windows.com", + "engagebdr.com", + "engageya.com", + "engine.espace.netavenir.com", + "engineertrick.com", + "enginenetwork.com", + "enormousearth.com", + "enquisite.com", + "ensighten.com", + "entercasino.com", + "entrecard.s3.amazonaws.com", + "enviousthread.com", + "epom.com", + "epp.bih.net.ba", + "eqads.com", + "eqy.link", + "erne.co", + "ero-advertising.com", + "essaygiants.com", + "esty.com", + "et.educationdynamics.com", + "et.nytimes.com", + "etahub.com", + "etargetnet.com", + "etracker.com", + "etracker.de", + "eu-adcenter.net", + "eule1.pmu.fr", + "eulerian.net", + "eurekster.com", + "euros4click.de", + "eusta.de", + "evadav.com", + "evadavdsp.pro", + "evencoating.com", + "eventexistence.com", + "events-eu.freshsuccess.com", + "events-us.freshsuccess.com", + "everestads.net", + "everesttech.net", + "evergage.com", + "eversales.space", + "evs.sgmt.loom.com", + "evyy.net", + "exampleshake.com", + "exchange-it.com", + "exchangead.com", + "exchangeclicksonline.com", + "exelate.com", + "exelator.com", + "exhibitsneeze.com", + "exit76.com", + "exitexchange.com", + "exitfuel.com", + "exoclick.com", + "exosrv.com", + "experianmarketingservices.digital", + "explorads.com", + "exponea.com", + "exponential.com", + "exportdialog.com", + "express-submit.de", + "extractobservation.com", + "extreme-dm.com", + "extremetracking.com", + "eyeota.net", + "eyeviewads.com", + "eyewonder.com", + "ezula.com", + "f.pie.org", + "f7ds.liberation.fr", + "fabric.io", + "fadedsnow.com", + "fairfeeling.com", + "fakedisguise.com", + "fallaciousfifth.com", + "fallingshoals.com", + "fam-ad.com", + "farethief.com", + "farmergoldfish.com", + "fast-redirecting.com", + "fastclick.com", + "fastclick.com.edgesuite.net", + "fastclick.net", + "fastly-insights.com", + "faultycanvas.com", + "fave.co", + "fc.webmasterpro.de", + "feedbackresearch.com", + "feedjit.com", + "feedmob.com", + "femalecook.com", + "figsprotein.com", + "figurehunter.net", + "fillthemap.com", + "fimserve.com", + "findcommerce.com", + "findyourcasino.com", + "fireads.online", + "fireads.org", + "fireworkadservices.com", + "fireworkanalytics.com", + "fireworks-advertising.com", + "firstlightera.com", + "fishingtoolsbox.com", + "fixedfold.com", + "fjordsand.com", + "flairadscpc.com", + "flakyfeast.com", + "flashtalking.com", + "flashtexting.com", + "fleshlightcash.com", + "flexbanner.com", + "flimsycircle.com", + "flimsythought.com", + "floodprincipal.com", + "flourishinginnovation.com", + "floweryflavor.com", + "flowgo.com", + "flurry.com", + "fontserif.com", + "foo.cosmocode.de", + "foresee.com", + "forex-affiliate.net", + "forkcdn.com", + "fourlevelsgame.com", + "fpctraffic.com", + "fpjs.io", + "fqtag.com", + "fraysystems.com", + "free-counter.co.uk", + "freebanner.com", + "freecounterstat.com", + "freedomgrail.com", + "freelogs.com", + "freepay.com", + "freestats.com", + "freestats.tv", + "freewebcounter.com", + "freewheel.com", + "freewheel.tv", + "freezingbuilding.com", + "frequentflesh.com", + "freshrelevance.com", + "fronttoad.com", + "frtyj.com", + "frtyk.com", + "fudgegenie.com", + "fullrestore.net", + "fullstory.com", + "functionalcrown.com", + "functionalfeather.com", + "funklicks.com", + "funnelytics.io", + "funtoyplanet.com", + "furryfork.com", + "fusionads.net", + "fusionquest.com", + "futuristicfifth.com", + "futuristicframe.com", + "fuzzybasketball.com", + "fwcdn1.com", + "fwcdn2.com", + "fxstyle.net", + "g2.gumgum.com", + "ga.clearbit.com", + "gadsbee.com", + "galaxien.com", + "game-advertising-online.com", + "gamesites100.net", + "gamesites200.com", + "gammamaximum.com", + "gaug.es", + "gavvia.com", + "gearwom.de", + "geo.digitalpoint.com", + "geobanner.adultfriendfinder.com", + "georiot.com", + "geovisite.com", + "getclicky.com", + "getintent.com", + "getmyads.com", + "getxmlisi.com", + "giddycoat.com", + "glasscoyote.com", + "glisteningsign.com", + "globalismedia.com", + "gloriousbeef.com", + "gmads.net", + "gml.email", + "go-clicks.de", + "go-link.network", + "go-mpulse.net", + "go-rank.de", + "go.clickwww.com", + "go.dhs.gov", + "go.eu.sparkpostmail1.com", + "go.first.org", + "go.icann.org", + "go.scmagazine.com", + "go.usa.gov", + "go.xlirdr.com", + "go2affise.com", + "godseedband.com", + "goingplatinum.com", + "goldstats.com", + "gondolagnome.com", + "goodcontentservice.top", + "google-analytics.com", + "googleadservices.com", + "googleanalytics.com", + "googlesyndication.com", + "googletagmanager.com", + "googletagservices.com", + "goqon.com", + "gostats.com", + "gothamads.com", + "gotoyahoo.com", + "gotraffic.net", + "gp.dejanews.com", + "grandfatherguitar.com", + "granlite.com", + "grapeshot.co.uk", + "greystripe.com", + "groovespacing.com", + "grouchybrothers.com", + "groundtruth.com", + "growthrx.in", + "gscontxt.net", + "guardeddirection.com", + "guardedschool.com", + "gumyfui.com", + "gunggo.com", + "h-bid.com", + "h-trck.com", + "h0.t.hubspotemail.net", + "haikusoap.com", + "halcyoncanyon.com", + "halocolor.com", + "haltingbadge.com", + "hammerhearing.com", + "hamsterspot.com", + "handsomehose.com", + "handyfireman.com", + "handyincrease.com", + "haplesshydrant.com", + "harrenmedia.com", + "harrenmedianetwork.com", + "hayweb.net", + "hb.afl.rakuten.co.jp", + "hb.vntsm.com", + "hbb.afl.rakuten.co.jp", + "hbopenbid.pubmatic.com", + "heap.com", + "heimi-lwx.com", + "hellobar.com", + "helpcollar.com", + "hentaicounter.com", + "herbalaffiliateprogram.com", + "hexcan.com", + "hexusads.fluent.ltd.uk", + "heyos.com", + "hf5rbejvpwds.com", + "hfc195b.com", + "hgads.com", + "highnoongear.com", + "hightrafficads.com", + "hilariouszinc.com", + "histats.com", + "historytrade.com", + "hit-parade.com", + "hit.ua", + "hit.webcentre.lycos.co.uk", + "hitbox.com", + "hitcounters.miarroba.com", + "hitlist.ru", + "hitlounge.com", + "hitometer.com", + "hits-i.iubenda.com", + "hits.europuls.eu", + "hits.informer.com", + "hits.puls.lv", + "hits.sh", + "hits.theguardian.com", + "hits4me.com", + "hitslink.com", + "hittail.com", + "hlok.qertewrt.com", + "hocgeese.com", + "hollowafterthought.com", + "homelycrown.com", + "homepageking.de", + "honorableland.com", + "hostedads.realitykings.com", + "hotjar.com", + "hotlog.ru", + "hotrank.com.tw", + "hoverowl.com", + "hs-analytics.net", + "hs-banner.com", + "hsadspixel.net", + "hsleadflows.net", + "hsn.uqhv.net", + "htlbid.com", + "httpool.com", + "hubspotlinks.com", + "hueads.com", + "hueadsortb.com", + "hueadsxml.com", + "hurricanedigitalmedia.com", + "hustlercoach.com", + "hydraconcept.com", + "hydramedia.com", + "hyperbanner.net", + "hypertracker.com", + "hyprmx.com", + "hystericalcloth.com", + "i-i.lt", + "i305175.net", + "ia.iinfo.cz", + "iad.anm.co.uk", + "iadnet.com", + "ibillboard.com", + "icptrack.com", + "icywinter.com", + "id5-sync.com", + "idealadvertising.net", + "idevaffiliate.com", + "idtargeting.com", + "ientrymail.com", + "iesnare.com", + "ifa.tube8live.com", + "ilbanner.com", + "ilead.itrack.it", + "illustriousoatmeal.com", + "image2.pubmatic.com", + "image3.pubmatic.com", + "image4.pubmatic.com", + "image6.pubmatic.com", + "imagecash.net", + "images-pw.secureserver.net", + "img.prohardver.hu", + "imgpromo.easyrencontre.com", + "immensehoney.com", + "imonomy.com", + "imp.i312864.net", + "impossibleexpansion.com", + "imprese.cz", + "impressionmedia.cz", + "impressionmonster.com", + "improvedigital.com", + "imrworldwide.com", + "inclk.com", + "incognitosearches.com", + "incoming-telemetry.thunderbird.net", + "incoming.telemetry.mozilla.org", + "indexexchange.com", + "indexstats.com", + "indexww.com", + "indieclick.com", + "industrybrains.com", + "inetlog.ru", + "infinite-ads.com", + "infinityads.com", + "infoevent.startappservice.com", + "infolinks.com", + "inmobi.com", + "inner-active.com", + "inner-active.mobi", + "innovid.com", + "inquisitiveinvention.com", + "insgly.net", + "insidepsych.net", + "insightexpress.com", + "insightexpressai.com", + "inskinad.com", + "inspectlet.com", + "install.365-stream.com", + "instantmadness.com", + "insticator.com", + "intelliads.com", + "intelligenceadx.com", + "interactive.forthnet.gr", + "intercom-clicks.com", + "intergi.com", + "internalcondition.com", + "internetfuel.com", + "interreklame.de", + "ioam.de", + "ip.ro", + "ip193.cn", + "iperceptions.com", + "ipredictive.com", + "ipstack.com", + "irchan.com", + "ireklama.cz", + "is-tracking-pixel-api-prod.appspot.com", + "islandwebhelp.com", + "itop.cz", + "its-that-easy.com", + "ivwbox.de", + "ivykiosk.com", + "iyfbodn.com", + "iyfnzgb.com", + "j93557g.com", + "jads.co", + "jamexport.com", + "jcount.com", + "jdoqocy.com", + "jewelrysprings.com", + "jinkads.de", + "joetec.net", + "joyoussurprise.com", + "js-agent.newrelic.com", + "js-api.otherlevels.com", + "js-tags.otherlevels.com", + "js.iterable.com", + "js.users.51.la", + "jsecoin.com", + "jsrdn.com", + "jubilantglimmer.com", + "juiceblocks.com", + "juicyads.com", + "juicyads.me", + "jumptap.com", + "jungroup.com", + "justicejudo.com", + "justpremium.com", + "justrelevant.com", + "justwowjars.com", + "k.iinfo.cz", + "kameleoon.eu", + "kanoodle.com", + "kargo.com", + "kernellife.com", + "kickoffo.site", + "kindads.com", + "kindlereunion.com", + "kissmetrics.com", + "kittentacos.com", + "kittycatking.com", + "klclick.com", + "klclick1.com", + "kliks.nl", + "knitstamp.com", + "knorex.com", + "knottyswing.com", + "komoona.com", + "kompasads.com", + "kontera.com", + "kost.tv", + "kpu.samsungelectronics.com", + "krxd.net", + "ktu.sv2.biz", + "kueezrtb.com", + "kvsadman.com", + "l1.britannica.com", + "lakesecure.com", + "lameletters.com", + "landkarts.com", + "larati.net", + "largebrass.com", + "laughcloth.com", + "launchbit.com", + "layer-ad.de", + "layer-ads.de", + "lazybumblebee.com", + "lbn.ru", + "lead02.com", + "leadboltads.net", + "leadclick.com", + "leadinfo.net", + "leadingedgecash.com", + "leadplace.fr", + "leadspace.com", + "leadzupc.com", + "leaplunchroom.com", + "leftliquid.com", + "lemmatechnologies.com", + "lemnisk.co", + "lever-analytics.com", + "lfeeder.com", + "lfstmedia.com", + "lgsmartad.com", + "li.alibris.com", + "li.azstarnet.com", + "li.dailycaller.com", + "li.gatehousemedia.com", + "li.gq.com", + "li.hearstmags.com", + "li.livingsocial.com", + "li.mw.drhinternet.net", + "li.onetravel.com", + "li.patheos.com", + "li.pmc.com", + "li.realtor.com", + "li.ziffimages.com", + "liadm.com", + "libraryfacts.com", + "lifeimpressions.net", + "liftdna.com", + "ligatus.com", + "ligatus.de", + "lightspeedcash.com", + "lightstep.medium.systems", + "lijit.com", + "limecodesign.com", + "link-booster.de", + "link.axios.com", + "link.beelivery.com", + "link.email.davidlloydclubs.co.uk", + "link.email.usmagazine.com", + "link.go.chase", + "link.sbstck.com", + "link.team.hyperoptic.com", + "link.theatlantic.com", + "link.uk.expediamail.com", + "linkbuddies.com", + "linkexchange.com", + "linkprice.com", + "linkrain.com", + "linkreferral.com", + "links-ranking.de", + "links.email.crunchbase.com", + "links.housekeep.com", + "links.prosservice.fr", + "links.zoopla.co.uk", + "linksoutside.com", + "linkstable.com", + "linkstorms.com", + "linkswaper.com", + "linksynergy.com", + "linktarget.com", + "linkvertise.com", + "liquidad.narrowcastmedia.com", + "litix.io", + "live.trmzum.com", + "liveadexchanger.com", + "liveintent.com", + "livelylaugh.com", + "liverail.com", + "livingsleet.com", + "lizardslaugh.com", + "lkqd.com", + "lnks.gd", + "loading321.com", + "loadsurprise.com", + "locked4.com", + "lockerdome.com", + "locolava.com", + "log.btopenworld.com", + "log.logrocket.io", + "log.pinterest.com", + "log.videocampaign.co", + "logger.snackly.co", + "logs.roku.com", + "logs.spilgames.com", + "logsss.com", + "logua.com", + "look.djfiln.com", + "look.ichlnk.com", + "look.opskln.com", + "look.ufinkln.com", + "loopme.com", + "loudlunch.com", + "lowest-prices.eu", + "lucidmedia.com", + "luckyorange.com", + "ludicrousarch.com", + "lyricshook.com", + "lytics.io", + "lzjl.com", + "m.trb.com", + "m2.ai", + "m32.media", + "m4n.nl", + "m6r.eu", + "mackeeperapp.mackeeper.com", + "madclient.uimserv.net", + "madcpms.com", + "madinad.com", + "madisonavenue.com", + "madvertise.de", + "magicadz.co", + "magicaljoin.com", + "magsrv.com", + "mail-ads.google.com", + "maltiverse.lt.acemlnc.com", + "manageadv.cblogs.eu", + "mantisadnetwork.com", + "mapcommand.com", + "marinsm.com", + "markedmeasure.com", + "marketing.888.com", + "marketing.desertcart.com", + "marketing.net.brillen.de", + "marketing.net.home24.de", + "marketing.net.occhiali24.it", + "marketing.nyi.net", + "marketing.osijek031.com", + "marketingcloudapis.com", + "marketingsolutions.yahoo.com", + "marketo.com", + "marlowpillow.sjv.io", + "marriedbelief.com", + "mas.sector.sk", + "matchcraft.com", + "matheranalytics.com", + "mathtag.com", + "matomo.activate.cz", + "matomo.crossiety.app", + "mautic.com", + "max.i12.de", + "maximiser.net", + "maxonclick.com", + "mbs.megaroticlive.com", + "mcdlks.com", + "mcs-va.tiktok.com", + "mcs-va.tiktokv.com", + "meadowlullaby.com", + "measlymiddle.com", + "measure.office.com", + "measuremap.com", + "meatydime.com", + "media-adrunner.mycomputer.com", + "media.funpic.de", + "media.net", + "media01.eu", + "media6degrees.com", + "mediaarea.eu", + "mediabridge.cc", + "mediafuse.com", + "mediageneral.com", + "mediaiqdigital.com", + "mediamath.com", + "mediamgr.ugo.com", + "mediaplazza.com", + "mediaplex.com", + "mediascale.de", + "mediaserver.bwinpartypartners.it", + "mediasmart.io", + "mediasquare.fr", + "mediatext.com", + "mediavine.com", + "mediavoice.com", + "mediax.angloinfo.com", + "mediaz.angloinfo.com", + "medleyads.com", + "medyanetads.com", + "meetrics.net", + "megacash.de", + "megastats.com", + "megawerbung.de", + "meltmilk.com", + "memorizeneck.com", + "mercuryace.com", + "merequartz.com", + "messagelists.com", + "metadsp.co.uk", + "metaffiliation.com", + "metajaws.com", + "metanetwork.com", + "methodcash.com", + "metrics-logger.spot.im", + "metrics.api.drift.com", + "metrics.articulate.com", + "metrics.cnn.com", + "metrics.foxnews.com", + "metrics.getrockerbox.com", + "metrics.gfycat.com", + "metrics.govexec.com", + "metrics.icloud.com", + "metrics.mzstatic.com", + "metrilo.com", + "mfadsrvr.com", + "mg2connext.com", + "mgid.com", + "microstatic.pl", + "microticker.com", + "milotree.com", + "mineinvoice.com", + "minewhat.com", + "minibilling.com", + "mintegral.com", + "mintfunnel.co", + "mittencattle.com", + "mix2ads.com", + "mixedreading.com", + "mixpanel.com", + "mkto-ab410147.com", + "mktoresp.com", + "ml314.com", + "mlm.de", + "mlsend.com", + "mltrk.io", + "mmismm.com", + "mmstat.com", + "mmtro.com", + "mntzrlt.net", + "moartraffic.com", + "moat.com", + "moatads.com", + "moatpixel.com", + "mobclix.com", + "mobfox.com", + "mobileanalytics.us-east-1.amazonaws.com", + "mobilefuse.com", + "modernpricing.com", + "mon-va.byteoversea.com", + "mon.byteoversea.com", + "monarchads.com", + "monetate.net", + "monetizer101.com", + "monkeyapes.com", + "monsterpops.com", + "mookie1.com", + "mopub.com", + "morefolks.com", + "motionlessmeeting.com", + "motionspots.com", + "mousestats.com", + "movad.net", + "movemeal.com", + "mparticle.com", + "mpstat.us", + "mr-rank.de", + "mrskincash.com", + "mstrlytcs.com", + "mtrcs.samba.tv", + "mtree.com", + "munchkin.marketo.net", + "mundanenail.com", + "mushroomgods.com", + "musiccounter.ru", + "muteknife.com", + "muwmedia.com", + "mxptint.net", + "myads.company", + "myads.net", + "myads.telkomsel.com", + "myaffiliateprogram.com", + "mybbc-analytics.files.bbci.co.uk", + "mybloglog.com", + "mybuys.com", + "mycounter.ua", + "mydas.mobi", + "mylead-tracking.tracknow.info", + "mylead.global", + "mylink-today.com", + "mypagerank.net", + "mypowermall.com", + "mysketchpad.com", + "mystat-in.net", + "mystat.pl", + "mytop-in.net", + "n69.com", + "naj.sk", + "nakedly.ai", + "nappyattack.com", + "nappyneck.com", + "nastydollars.com", + "nativeroll.tv", + "navegg.com", + "navigator.io", + "navrcholu.cz", + "ncaudienceexchange.com", + "ndparking.com", + "nebulacrescent.com", + "nedstatbasic.net", + "needyneedle.com", + "neighborlywatch.com", + "nend.net", + "neocounter.neoworx-blog-tools.net", + "nervoussummer.com", + "net-filter.com", + "netaffiliation.com", + "netagent.cz", + "netclickstats.com", + "netdirect.nl", + "netech.postaffiliatepro.com", + "netmera-web.com", + "netmera.com", + "netmng.com", + "netpool.netbookia.net", + "netshelter.net", + "neudesicmediagroup.com", + "newads.bangbros.com", + "newnet.qsrch.com", + "newnudecash.com", + "news-cdn.site", + "newsadsppush.com", + "newsbotnet.com", + "newt1.adultadworld.com", + "newt1.adultworld.com", + "nexac.com", + "nexage.com", + "ng3.ads.warnerbros.com", + "nitroclicks.com", + "nmtracking.netflix.com", + "noiselessplough.com", + "nondescriptcrowd.com", + "nondescriptnote.com", + "nondescriptstocking.com", + "novem.pl", + "nowaymail.com", + "npttech.com", + "nr-data.net", + "nr.mmcdn.com", + "nr.static.mmcdn.com", + "ns1p.net", + "ntv.io", + "ntvk1.ru", + "nullitics.com", + "nuseek.com", + "nzaza.com", + "o2.mouseflow.com", + "o333o.com", + "oafishobservation.com", + "oas.benchmark.fr", + "oas.repubblica.it", + "oas.roanoke.com", + "oas.toronto.com", + "oas.uniontrib.com", + "oascentral.chicagobusiness.com", + "oascentral.fortunecity.com", + "oascentral.register.com", + "objecthero.com", + "obscenesidewalk.com", + "oceancloudhosts.com", + "oclasrv.com", + "odbierz-bony.ovp.pl", + "oewa.at", + "offaces-butional.com", + "offer.fyber.com", + "offer.sponsorpay.com", + "offerforge.com", + "offermatica.com", + "offshoregeology.com", + "ogads-pa.googleapis.com", + "oglasi.posjetnica.com", + "ogury.com", + "ojrq.net", + "omg10.com", + "omnijay.com", + "omniture.com", + "omtrdc.net", + "onaudience.com", + "onclickads.net", + "onegg.site", + "onestat.com", + "onestatfree.com", + "online-metrix.net", + "online.miarroba.com", + "onlinecash.com", + "onlinecashmethod.com", + "onlinerewardcenter.com", + "onlinestarten.net", + "onscroll.com", + "onthe.io", + "opads.us", + "open.oneplus.net", + "openad.tf1.fr", + "openad.travelnow.com", + "openads.friendfinder.com", + "openads.org", + "openadsnetwork.com", + "openbid.pubmatic.com", + "openx.angelsgroup.org.uk", + "openx.cairo360.com", + "openx.net", + "openx.skinet.cz", + "openx.smcaen.fr", + "openx2.kytary.cz", + "operationchicken.com", + "opienetwork.com", + "opmnstr.com", + "oppuz.com", + "optimallimit.com", + "optimizely.com", + "optimost.com", + "optionsnomad.com", + "optmd.com", + "optmnstr.com", + "optmstr.com", + "optnmstr.com", + "optnx.com", + "orbsrv.com", + "orientedargument.com", + "orionember.com", + "ota.cartrawler.com", + "otto-images.developershed.com", + "ourdreamstaticpages.pages.dev", + "outbrain.com", + "overconfidentfood.com", + "overkick.com", + "overture.com", + "ow.pubmatic.com", + "owebmoney.ru", + "owlsr.us", + "owneriq.net", + "oxado.com", + "oxcash.com", + "oxen.hillcountrytexas.com", + "p-n.io", + "p7cloud.net", + "paa-reporting-advertising.amazon", + "page-checker.eu", + "pagead.l.google.com", + "pagefair.com", + "pagerank-ranking.de", + "pageranktop.com", + "painstakingpickle.com", + "paleleaf.com", + "panickypancake.com", + "panoramicplane.com", + "parachutehome.sjv.io", + "parchedsofa.com", + "parentpicture.com", + "parsely.com", + "parsimoniouspolice.com", + "partner-ads.com", + "partner.pelikan.cz", + "partnerad.l.google.com", + "partnerads.ysm.yahoo.com", + "partnercash.de", + "partnerhut.com", + "partnerlinks.io", + "partners.priceline.com", + "partplanes.com", + "passeura.com", + "paychat.fuse-cloud.com", + "paycounter.com", + "paypopup.com", + "pbnet.ru", + "pbterra.com", + "pc-tc.s3-eu-west-1.amazonaws.com", + "pcash.imlive.com", + "peep-auktion.de", + "peer39.com", + "pennyweb.com", + "pepperjamnetwork.com", + "percentmobile.com", + "perfectaudience.com", + "perfiliate.com", + "performancerevenue.com", + "performancerevenues.com", + "performancing.com", + "permutive.com", + "personagraph.com", + "pgl.example.com", + "pgl.example0101", + "pgmediaserve.com", + "pgpartner.com", + "pheedo.com", + "phoenix-adrunner.mycomputer.com", + "piano.io", + "pimproll.com", + "ping.ublock.org", + "pipedream.wistia.com", + "pippio.com", + "piquantpigs.com", + "pix.spot.im", + "pixel.condenastdigital.com", + "pixel.keywee.co", + "pixel.sojern.com", + "pixel.watch", + "pixel.yabidos.com", + "placed.com", + "placeframe.com", + "placidactivity.com", + "plausible.avris.it", + "plausibleio.workers.dev", + "play4traffic.com", + "playhaven.com", + "pleasantpump.com", + "plista.com", + "plotrabbit.com", + "pltraffic8.com", + "pluckypocket.com", + "plugrush.com", + "pocketfaucet.com", + "poemprompt.com", + "pointlessprofit.com", + "pointroll.com", + "pokkt.com", + "polishedfolly.com", + "polo.feathr.co", + "popads.net", + "popcash.net", + "popmixradio.com", + "popmyads.com", + "popplantation.com", + "popub.com", + "popunder.ru", + "popunhot1.blogspot.com", + "popup.msn.com", + "popupmoney.com", + "popupnation.com", + "popuptraffic.com", + "porngraph.com", + "porntrack.com", + "possibleboats.com", + "possiblepencil.com", + "post.spmailtechno.com", + "postback.iqm.com", + "postrelease.com", + "ppc.adhere.marchex.com", + "pr-star.de", + "praddpro.de", + "prchecker.info", + "prebid.org", + "predictad.com", + "premium-offers.com", + "presetrabbits.com", + "prettyeasycafe.com", + "previousplayground.com", + "prf.hn", + "priceypies.com", + "pricklydebt.com", + "prideproms.com", + "primetime.net", + "privatecash.com", + "prmtracking.com", + "pro-market.net", + "probablepartner.com", + "processplantation.com", + "proext.com", + "profero.com", + "profitrumour.com", + "programattik.com", + "projectwonderful.com", + "promo.badoink.com", + "promobenef.com", + "promos.bwin.it", + "promos.fling.com", + "promote.pair.com", + "pronetadvertising.com", + "propellerads.com", + "propellerclick.com", + "proper.io", + "props.id", + "protectcrev.com", + "protectpool.com", + "protectsubrev.com", + "protestcopy.com", + "proton-tm.com", + "protraffic.com", + "provenpixel.com", + "prpops.com", + "prsitecheck.com", + "prufenzo.xyz", + "pstmrk.it", + "pub.chez.com", + "pub.club-internet.fr", + "pub.hardware.fr", + "pub.network", + "pub.realmedia.fr", + "pubdirecte.com", + "publicidad.elmundo.es", + "publicidees.com", + "publicsofa.com", + "pubmine.com", + "pubnative.net", + "puffyloss.com", + "puffypaste.com", + "puffypull.com", + "puffypurpose.com", + "pureclarity.net", + "pushance.com", + "pushengage.com", + "pushno.com", + "pushtrack.co", + "px.dynamicyield.com", + "px.gfycat.com", + "pxf.io", + "pxl-mailtracker.com", + "pxl.iqm.com", + "pymx5.com", + "q.azcentral.com", + "q1connect.com", + "qa-analytics.com", + "qctop.com", + "ql.tc", + "qnsr.com", + "qrlsx.com", + "quantcast.com", + "quantcount.com", + "quantserve.com", + "quantummetric.com", + "quarterserver.de", + "quickkoala.io", + "quietknowledge.com", + "quiltruler.com", + "quinst.com", + "quirkysugar.com", + "quisma.com", + "quizzicalzephyr.com", + "r.drinksdirect.net", + "r.logrocket.io", + "r.marketing.dubaisothebys.com", + "r.msn.com", + "r.scoota.co", + "r.sibmail.havasit.com", + "r1.arts-mail.com", + "r1.visualwebsiteoptimizer.com", + "r2.visualwebsiteoptimizer.com", + "r3.visualwebsiteoptimizer.com", + "rabbitrifle.com", + "rackforstorage.com", + "radar.cedexis.com", + "radiate.com", + "radiateprose.com", + "rads.realadmin.pl", + "railwayreason.com", + "rambunctiousflock.com", + "rampidads.com", + "randkuj.xyz", + "rankchamp.de", + "ranking-charts.de", + "ranking-hits.de", + "ranking-links.de", + "rankingscout.com", + "rankyou.com", + "rapidcounter.com", + "raresummer.com", + "rate.ru", + "ratings.lycos.com", + "rayjump.com", + "rcadserver.com", + "re-direct.pl", + "reachjunction.com", + "reactx.com", + "readingguilt.com", + "readymoon.com", + "realcastmedia.com", + "realclever.com", + "realclix.com", + "realmedia-a800.d4p.net", + "realsrv.com", + "realtechnetwork.com", + "realtracker.com", + "rebelhen.com", + "rebelswing.com", + "rec5.visualwebsiteoptimizer.com", + "recapture.io", + "receptivereaction.com", + "recoco.it", + "reconditerake.com", + "record.bonniergaming.com", + "record.mrwin.com", + "redirectingat.com", + "redirectvoluum.com", + "redrection.pro", + "redshell.io", + "reduxmedia.com", + "referralware.com", + "referrer.disqus.com", + "regularplants.com", + "reklam.rfsl.se", + "reklama.mironet.cz", + "reklamcsere.hu", + "reklamdsp.com", + "relmaxtop.com", + "rememberdiscussion.com", + "remox.com", + "report-1.appmetrica.webvisor.com", + "report-2.appmetrica.webvisor.com", + "report-partners.appmetrica.yandex.net", + "report.ap.yandex-net.ru", + "report.appmetrica.yandex.net", + "republika.onet.pl", + "resalag.com", + "rescuerhino.com", + "resonantbrush.com", + "resonate.com", + "responsiveads.com", + "restrainstorm.com", + "retargeter.com", + "rev.iq", + "revcatch.com", + "revcontent.com", + "reveal.clearbit.com", + "revenuedirect.com", + "revenuehits.com", + "revive.haskovo.net", + "revive.netriota.hu", + "revive.plays.bg", + "revprotect.com", + "revstats.com", + "rexadvert.xyz", + "reyden-x.com", + "rhombusads.com", + "rhythmone.com", + "richaudience.com", + "richmails.com", + "richstring.com", + "rightstats.com", + "ringplant.com", + "ringsrecord.com", + "ritzyrepresentative.com", + "rlcdn.com", + "rle.ru", + "rmads.msn.com", + "rmedia.boston.com", + "roaddynamics.com", + "roar.com", + "robotreplay.com", + "rockabox.co", + "rockagainst.com", + "rockstarwriter.com", + "rok.com.com", + "rollconnection.com", + "rose.ixbt.com", + "rotabanner.com", + "roxr.net", + "rpt-ads.vidaahub.com", + "rqtrk.eu", + "rs6.net", + "rsc-ads.vidaahub.com", + "rsc-mntz.vidaahub.com", + "rta.dailymail.co.uk", + "rtb.gumgum.com", + "rtbadzesto.com", + "rtbflairads.com", + "rtbplatform.net", + "rtbpop.com", + "rtbpopd.com", + "rtmark.net", + "rtxplatform.com", + "ru4.com", + "rubiconproject.com", + "rum-http-intake.logs.datadoghq.com", + "rum-http-intake.logs.datadoghq.eu", + "runads.com", + "rundsp.com", + "ruralrobin.com", + "s.adroll.com", + "s.dmmew.com", + "s20dh7e9dh.com", + "s2d6.com", + "sabio.us", + "sadloaf.com", + "safeoffers.pro", + "sail-horizon.com", + "samplesamba.com", + "samsungacr.com", + "samsungads.com", + "sanalytics.disneyplus.com", + "sanity-dataplane.rudderstack.com", + "savoryorange.com", + "sbird.xyz", + "sbx.pagesjaunes.fr", + "sc-analytics.appspot.com", + "scambiobanner.aruba.it", + "scanscout.com", + "scarcesign.com", + "scaredsnakes.com", + "scaredsong.com", + "scarfsmash.com", + "scatteredheat.com", + "scintillatingscissors.com", + "scintillatingsilver.com", + "scissorsstatement.com", + "scopelight.com", + "scorecardresearch.com", + "scratch2cash.com", + "screechingfurniture.com", + "screechingstocking.com", + "screechingstove.com", + "scrubswim.com", + "seadform.net", + "searchmarketing.com", + "searchramp.com", + "secre.jp", + "secretspiders.com", + "secure.webconnect.net", + "securedopen-bp.com", + "securemetrics.apple.com", + "securemetrics.apple.com.cn", + "sedoparking.com", + "sedotracker.com", + "segment-cdn.producthunt.com", + "selectivesummer.com", + "semasio.net", + "sendmepixel.com", + "seraphichorizon.com", + "serendipityecho.com", + "serv0.com", + "servclick1move.com", + "serve.tercept.com", + "servedby-buysellads.com", + "servedbyadbutler.com", + "servedbyopenx.com", + "servethis.com", + "services.hearstmags.com", + "sessioncam.com", + "sexcounter.com", + "sexlist.com", + "sextracker.com", + "shadowmade.com", + "shakegoldfish.com", + "shareasale.com", + "sharethrough.com", + "shd247.click", + "sher.index.hu", + "shesubscriptions.com", + "shinystat.com", + "shinystat.it", + "shiveringspot.com", + "shiverscissors.com", + "shockinggrass.com", + "shoppingads.com", + "showads.pubmatic.com", + "shredform.com", + "shrillspoon.com", + "shxtrk.com", + "sicksmash.com", + "sidebar.angelfire.com", + "signalayer.com", + "signalszone.com", + "sillyscrew.com", + "silvermob.com", + "simpleanalytics.io", + "simplesafari.com", + "simpli.fi", + "simulateswing.com", + "sincerebuffalo.com", + "sinoa.com", + "sitedataprocessing.com", + "siteimproveanalytics.com", + "siteimproveanalytics.io", + "siteintercept.qualtrics.com", + "sitemeter.com", + "sixscissors.com", + "sixsigmatraffic.com", + "sizmek.com", + "skimresources.com", + "skisofa.com", + "skroutza.skroutz.gr", + "skylink.vn", + "slimesupplies.net", + "slopeaota.com", + "smaato.com", + "smart-data-systems.com", + "smart-traffik.com", + "smart-traffik.io", + "smart4ads.com", + "smartadserver.com", + "smartclip.net", + "smartlook.com", + "smartstream.tv", + "smartyads.com", + "smashquartz.com", + "smashsurprise.com", + "smetrics.10daily.com.au", + "smetrics.bestbuy.com", + "smetrics.ctv.ca", + "smetrics.fedex.com", + "smetrics.foxnews.com", + "smetrics.walgreens.com", + "smetrics.washingtonpost.com", + "smilewanted.com", + "smilingcattle.com", + "smoggysnakes.com", + "smrtb.com", + "snapads.com", + "snazzypoodle.com", + "snoobi.com", + "socialspark.com", + "softclick.com.br", + "soggysponge.com", + "soicos.com", + "sombersea.com", + "sombersquirrel.com", + "sombersurprise.com", + "somniture.stuff.co.nz", + "somoaudience.com", + "sonobi.com", + "sortable.com", + "sourcepoint.vice.com", + "sovrn.com", + "sp-a-q-f.ib-game.jp", + "spacash.com", + "spaceleadster.com", + "sparklingshelf.com", + "sparkstudios.com", + "speakol.com", + "specificmedia.co.uk", + "specificpop.com", + "speedomizer.com", + "speedshiftmedia.com", + "spellingthoughts.com", + "spezialreporte.de", + "spiffymachine.com", + "spinbox.techtracker.com", + "spinbox.versiontracker.com", + "spinnaker-js.com", + "spirebaboon.com", + "sponsorads.de", + "sponsorpro.de", + "spookysleet.com", + "spotlessstamp.com", + "spotscenered.info", + "spotx.tv", + "spotxchange.com", + "springbot.com", + "springserve.com", + "sprysummit.com", + "spulse.net", + "spylog.com", + "spywarelabs.com", + "spywords.com", + "srvmath.com", + "srvtrck.com", + "srwww1.com", + "sshowads.pubmatic.com", + "sskzlabs.com", + "st.dynamicyield.com", + "st.pubmatic.com", + "stack-sonar.com", + "stackadapt.com", + "stakingsmile.com", + "stalesummer.com", + "starffa.com", + "starkscale.com", + "starrynets.com", + "starsmarter.com", + "startapp.com", + "stat-track.com", + "stat.cliche.se", + "stat.dyna.ultraweb.hu", + "stat.pl", + "stat.webmedia.pl", + "stat.xiaomi.com", + "stat.zenon.net", + "stat24.com", + "stat24.meta.ua", + "statcounter.com", + "statdynamic.com", + "static-tracking.klaviyo.com", + "static.fmpub.net", + "static.itrack.it", + "static.kameleoon.com", + "staticads.btopenworld.com", + "statistik-gallup.net", + "statm.the-adult-company.com", + "stats.blogger.com", + "stats.hyperinzerce.cz", + "stats.merriam-webster.com", + "stats.mirrorfootball.co.uk", + "stats.nextgen-email.com", + "stats.olark.com", + "stats.pusher.com", + "stats.rdphv.net", + "stats.self.com", + "stats.stb-ottow.de", + "stats.townnews.com", + "stats.wordpress.com", + "stats.wp.com", + "stats2.self.com", + "stats4all.com", + "statserv.net", + "statsie.com", + "statxpress.com", + "steadfastsound.com", + "steadfastsystem.com", + "steelhouse.com", + "steelhousemedia.com", + "stickyadstv.com", + "stiffgame.com", + "stimulatingsneeze.com", + "stomachscience.com", + "stopstomach.com", + "storetail.io", + "storygize.net", + "strack.pubmatic.com", + "straightnest.com", + "stretchsquirrel.com", + "studycooking.com", + "stupendoussleet.com", + "stupendoussnow.com", + "subscribe.hearstmags.com", + "succeedscene.com", + "successbuffet.com", + "sugoicounter.com", + "sulkycook.com", + "summerobject.com", + "sumo.com", + "sumome.com", + "sunsetcampfires.com", + "superawesome.tv", + "superchichair.com", + "superclix.de", + "superficialsquare.com", + "supersonicads.com", + "superstats.com", + "supertop.ru", + "supertop100.com", + "supply.colossusssp.com", + "supportwaves.com", + "surfmusik-adserver.de", + "surveygizmobeacon.s3.amazonaws.com", + "sw88.espn.com", + "swan-swan-goose.com", + "swankysquare.com", + "swingslip.com", + "swordgoose.com", + "synonymoussticks.com", + "systemssummit.com", + "t.appsflyer.com", + "t.bawafx.com", + "t.carta.com", + "t.co", + "t.eloqua.com", + "t.email.superdrug.com", + "t.en25.com", + "t.firstpromoter.com", + "t.insigit.com", + "t.irtyd.com", + "t.leady.com", + "t.mmtrkr.com", + "t.news.browns-restaurants.co.uk", + "t.notif-colissimo-laposte.info", + "t.pie.org", + "t.podcast.co", + "t.pubmatic.com", + "t.salesmatemail.com", + "t.vacations.disneydestinations.com", + "t.visit.disneydestinations.com", + "t.visitorqueue.com", + "t.x.co", + "t1.rorystravelclub.co.uk", + "t1.rorytravelclub-news.co.uk", + "taboola.com", + "tag-demo.mention-me.com", + "tag.mention-me.com", + "tagcommander.com", + "tagger.opecloud.com", + "tags.tiqcdn.com", + "tagtoo.com", + "tailsweep.com", + "tailsweep.se", + "takethatad.com", + "tamgrt.com", + "tangibleteam.com", + "tangyamount.com", + "tapad.com", + "tapfiliate.com", + "tapinfluence.com", + "tapjoy.com", + "tappx.com", + "targad.de", + "target.microsoft.com", + "targeting.api.drift.com", + "targeting.nzme.arcpublishing.com", + "targeting.voxus.tv", + "targetingnow.com", + "targetnet.com", + "targetpoint.com", + "tatsumi-sys.jp", + "tawdryson.com", + "tcads.net", + "teads.tv", + "tealeaf.com", + "tealium.cbsnews.com", + "tealium.com", + "tealiumiq.com", + "tedioustooth.com", + "teenrevenue.com", + "telaria.com", + "telemetry.dropbox.com", + "telemetry.goodlifefitness.com", + "telemetry.malwarebytes.com", + "telemetry.v.dropbox.com", + "temelio.com", + "tend.io", + "tendertest.com", + "ter-jrnl-oc.vidaahub.com", + "terriblethumb.com", + "text-link-ads.com", + "textad.sexsearch.com", + "textads.biz", + "textlinks.com", + "tfag.de", + "the-ozone-project.com", + "theadex.com", + "theadhost.com", + "theadsparks.com", + "thebugs.ws", + "thecrazychili.com", + "themangotea.com", + "themoneytizer.com", + "therapistla.com", + "thewavebeats.com", + "thinkitten.com", + "thirdparty.bnc.lt", + "thirdrespect.com", + "thomastorch.com", + "throtle.io", + "thruport.com", + "thunderhead.com", + "tia.timeinc.net", + "ticketaunt.com", + "ticklesign.com", + "ticksel.com", + "tics.techdirt.com", + "tidaltv.com", + "tidysprite.com", + "tinybar.com", + "tinybluewhale.com", + "tinytendency.com", + "tiresomethunder.com", + "tkbo.com", + "tls.telemetry.swe.quicinc.com", + "tlvmedia.com", + "tm.br.de", + "tnkexchange.com", + "tns-counter.ru", + "toolforthought.com", + "top-casting-termine.de", + "top-site-list.com", + "top.list.ru", + "top.mail.ru", + "top100-images.rambler.ru", + "top100.mafia.ru", + "top123.ro", + "top20free.com", + "toplist.cz", + "toplist.pornhost.com", + "toplista.mw.hu", + "toplistcity.com", + "topsir.com", + "topsite.lv", + "topsites.com.br", + "topstats.com", + "totemcash.com", + "touchclarity.com", + "tour.brazzers.com", + "tr.api.fanbyte.com", + "track-eu.customer.io", + "track.adform.net", + "track.anchorfree.com", + "track.canva.com", + "track.contently.com", + "track.customer.io", + "track.effiliation.com", + "track.flexlinks.com", + "track.flexlinkspro.com", + "track.lettingaproperty.com", + "track.mailalert.io", + "track.mailerlite.com", + "track.miro.com", + "track.nationalgunrights.org", + "track.privacyatclearbit.com", + "track.pubmatic.com", + "track.segmetrics.io", + "track.smtpmessage.com", + "track.software-codes.com", + "track.spe.schoolmessenger.com", + "track.ultravpn.com", + "track.unear.net", + "track.vcdc.com", + "track.viewdeos.com", + "track1.viewdeos.com", + "trackalyzer.com", + "trackedlink.net", + "trackedweb.net", + "tracker.bannerflow.com", + "tracker.cdnbye.com", + "tracker.icerocket.com", + "tracker.metricswave.com", + "tracker.mmdlv.it", + "tracker.samplicio.us", + "tracking.epicgames.com", + "tracking.hyros.com", + "tracking.ibxlink.com", + "tracking.intentsify.io", + "tracking.intl.miui.com", + "tracking.jiffyworld.com", + "tracking.markethero.io", + "tracking.miui.com", + "tracking.netalerts.io", + "tracking.olx-st.com", + "tracking.orixa-media.com", + "tracking.shopstyle.com", + "tracking.thinkabt.com", + "tracking.wetter.at", + "tracking01.walmart.com", + "tracking101.com", + "tracking22.com", + "trackingsoft.com", + "trackmysales.com", + "tradeadexchange.com", + "tradedoubler.com", + "traffic-exchange.com", + "traffic.hyteck.de", + "trafficfactory.biz", + "trafficforce.com", + "trafficholder.com", + "traffichunt.com", + "trafficjunky.net", + "trafficleader.com", + "trafficrouter.io", + "trafficshop.com", + "trafficspaces.net", + "trafficstrategies.com", + "trafficswarm.com", + "trafficz.com", + "traffiq.com", + "trafic.ro", + "traktrafficflow.com", + "tranquilplume.com", + "travis.bosscasinos.com", + "trck.a8.net", + "trck.mtrgt.id", + "trcklion.com", + "treasuredata.com", + "trekdata.com", + "tremendoustime.com", + "tremorhub.com", + "trendcounter.com", + "trendmd.com", + "trialfire.com", + "tribalfusion.com", + "triplelift.com", + "triptease.io", + "trk.4ff.pro", + "trk.bc.shutterfly.com", + "trk.pinterest.com", + "trk.sayerfinancial.com", + "trk.techtarget.com", + "trk1.avdlink.net", + "trk42.net", + "trkn.us", + "trkoptimizer.com", + "trkpnt.ongage.net", + "trmit.com", + "truckstomatoes.com", + "truculentrate.com", + "truehits.net", + "truehits1.gits.net.th", + "truehits2.gits.net.th", + "trust.titanhq.com", + "trustx.org", + "tsyndicate.com", + "tsyndicate.net", + "tubemogul.com", + "tumbleicicle.com", + "turboadv.com", + "turn.com", + "twelvedawn.com", + "twittad.com", + "twyn.com", + "tynt.com", + "typicalteeth.com", + "tyroo.com", + "uarating.com", + "ucfunnel.com", + "udkcrj.com", + "udncoeln.com", + "uib.ff.avast.com", + "ukoffzeh.com", + "ultimateclixx.com", + "ultramercial.com", + "ultraoranges.com", + "unaccountablepie.com", + "unarmedindustry.com", + "unbecominglamp.com", + "understoodocean.com", + "undertone.com", + "unidentifiedanalytics.web.app", + "unloadyourself.com", + "unruly.co", + "unrulymedia.com", + "untd.com", + "unusualtitle.com", + "unwieldyhealth.com", + "unwieldyimpulse.com", + "upgradeyoga.com", + "upu.samsungelectronics.com", + "urbanlaurel.com", + "url9467.comms-2.zoopla.co.uk", + "urlcash.net", + "us.a1.yimg.com", + "userreplay.com", + "userreplay.net", + "users.maxcluster.net", + "utils.mediageneral.net", + "utl-1.com", + "uu.domainforlite.com", + "v1.cnzz.com", + "v1adserver.com", + "valerie.forbes.com", + "validclick.com", + "valuead.com", + "valueclick.com", + "valueclickmedia.com", + "valuecommerce.com", + "vanfireworks.com", + "vcommission.com", + "veille-referencement.com", + "velismedia.com", + "venetrigni.com", + "vengefulgrass.com", + "ventivmedia.com", + "venturead.com", + "vericlick.com", + "vertamedia.com", + "verticalmass.com", + "vervewireless.com", + "vgnp3trk.com", + "vibrantsundown.com", + "vid.pubmatic.com", + "vidcpm.com", + "video-stats.video.google.com", + "videoadex.com", + "videoadstech.org", + "videoegg.com", + "videostats.kakao.com", + "vidora.com", + "view4cash.de", + "viglink.com", + "vilenexus.com", + "virtualvincent.com", + "visiblemeasures.com", + "visistat.com", + "visitbox.de", + "visual-pagerank.fr", + "visualrevenue.com", + "vivads.net", + "vivtracking.com", + "vmmpxl.com", + "voicefive.com", + "volatilevessel.com", + "voluum.com", + "voluumtrk2.com", + "vpon.com", + "vrs.cz", + "vtracy.de", + "vungle.com", + "w55c.net", + "wa.and.co.uk", + "waardex.com", + "warmafterthought.com", + "washbanana.com", + "wdads.sx.atl.publicus.com", + "wdfl.co", + "web-stat.com", + "web.informer.com", + "web2.deja.com", + "webads.co.nz", + "webads.nl", + "webanalytics.zohodcm.com", + "webcash.nl", + "webcontentassessor.com", + "webcounter.cz", + "webcounter.goweb.de", + "webgains.com", + "weborama.com", + "weborama.fr", + "webpower.com", + "webreseau.com", + "webseoanalytics.com", + "webstat.channel4.com", + "webstat.com", + "webstat.net", + "webtrackerplus.com", + "webtraffic.se", + "webtraxx.de", + "webxcdn.com", + "welved.com", + "werbung.meteoxpress.com", + "wetrack.it", + "whaleads.com", + "wheredoyoucomefrom.ovh", + "whirlwealth.com", + "whiskyqueue.com", + "whisperingcascade.com", + "whisperingcrib.com", + "whisperingsummit.com", + "whoisonline.net", + "wholepagecache.com", + "wickedreports.com", + "widget.educationdynamics.com", + "widget.privy.com", + "wikia-ads.wikia.com", + "wikiquotations.com", + "win.iqm.com", + "window.nixnet.cz", + "wintricksbanner.googlepages.com", + "wirecomic.com", + "wirypaste.com", + "wisepops.com", + "witch-counter.de", + "wittypopcorn.com", + "wizaly.com", + "wl.spotify.com", + "wlmarketing.com", + "wondoads.de", + "woopra.com", + "worldrealize.com", + "worldwide-cash.net", + "worriednumber.com", + "wowfunnow.com", + "writerhubs.com", + "wt-eu02.net", + "wt.bankmillennium.pl", + "www-banner.chat.ru", + "www-google-analytics.l.google.com", + "www.dnps.com", + "www.kaplanindex.com", + "www.photo-ads.co.uk", + "www8.glam.com", + "wwwpromoter.com", + "x-traceur.com", + "x6.yakiuchi.com", + "xad.com", + "xapads.com", + "xchange.ro", + "xertive.com", + "xfreeservice.com", + "xg4ken.com", + "xiti.com", + "xplusone.com", + "xponsor.com", + "xpu.samsungelectronics.com", + "xq1.net", + "xtendmedia.com", + "xtracker.logimeter.com", + "xxxcounter.com", + "xxxmyself.com", + "y.ibsys.com", + "yab-adimages.s3.amazonaws.com", + "yadro.ru", + "yandexmetrica.com", + "yepads.com", + "yesads.com", + "yesadvertising.com", + "yieldads.com", + "yieldlab.net", + "yieldmanager.net", + "yieldmo.com", + "yieldoptimizer.com", + "yieldtraffic.com", + "yldbt.com", + "ymetrica1.com", + "yoads.net", + "yoggrt.com", + "youcandrawanything.com", + "youradexchange.com", + "ypu.samsungelectronics.com", + "zangocash.com", + "zanox-affiliate.de", + "zanox.com", + "zantracker.com", + "zarget.com", + "zdbb.net", + "zedo.com", + "zemanta.com", + "zencudo.co.uk", + "zenkreka.com", + "zenzuu.com", + "zephyrlabyrinth.com", + "zeus.developershed.com", + "zeusclicks.com", + "zeydoo.com", + "zion-telemetry.api.cnn.io", + "zippingcare.com", + "zlp6s.pw", + "zm232.com", + "zmedia.com", + "zonewedgeshaft.com", + "zpu.samsungelectronics.com", + "zqtk.net", + "zzhc.vnet.cn", + } +) diff --git a/scrapling/engines/toolbelt/navigation.py b/scrapling/engines/toolbelt/navigation.py index 9b233d8..01bee07 100644 --- a/scrapling/engines/toolbelt/navigation.py +++ b/scrapling/engines/toolbelt/navigation.py @@ -19,6 +19,27 @@ class ProxyDict(Struct): password: str = "" +def _is_domain_blocked(hostname: str, domains: frozenset) -> bool: + """Check if a hostname matches any blocked domain using O(1) frozenset lookups. + + Walks up the hostname's suffix chain: for "tracker.ads.doubleclick.net", + checks "tracker.ads.doubleclick.net", "ads.doubleclick.net", "doubleclick.net". + + :param hostname: The hostname to check. + :param domains: A frozenset of blocked domain names. + :return: True if the hostname or any of its parent domains is in the blocked set. + """ + if hostname in domains: + return True + idx = hostname.find(".") + while idx != -1: + suffix = hostname[idx + 1 :] + if "." in suffix and suffix in domains: + return True + idx = hostname.find(".", idx + 1) + return False + + def create_intercept_handler(disable_resources: bool, blocked_domains: Optional[Set[str]] = None) -> Callable: """Create a route handler that blocks both resource types and specific domains. @@ -27,7 +48,7 @@ def create_intercept_handler(disable_resources: bool, blocked_domains: Optional[ :return: A sync route handler function. """ disabled_resources = EXTRA_RESOURCES if disable_resources else set() - domains = blocked_domains or set() + domains = frozenset(blocked_domains) if blocked_domains else frozenset() def handler(route: Route): if route.request.resource_type in disabled_resources: @@ -35,7 +56,7 @@ def create_intercept_handler(disable_resources: bool, blocked_domains: Optional[ route.abort() elif domains: hostname = urlparse(route.request.url).hostname or "" - if any(hostname == d or hostname.endswith("." + d) for d in domains): + if _is_domain_blocked(hostname, domains): log.debug(f'Blocking request to blocked domain "{hostname}" ({route.request.url})') route.abort() else: @@ -54,7 +75,7 @@ def create_async_intercept_handler(disable_resources: bool, blocked_domains: Opt :return: An async route handler function. """ disabled_resources = EXTRA_RESOURCES if disable_resources else set() - domains = blocked_domains or set() + domains = frozenset(blocked_domains) if blocked_domains else frozenset() async def handler(route: async_Route): if route.request.resource_type in disabled_resources: @@ -62,7 +83,7 @@ def create_async_intercept_handler(disable_resources: bool, blocked_domains: Opt await route.abort() elif domains: hostname = urlparse(route.request.url).hostname or "" - if any(hostname == d or hostname.endswith("." + d) for d in domains): + if _is_domain_blocked(hostname, domains): log.debug(f'Blocking request to blocked domain "{hostname}" ({route.request.url})') await route.abort() else: diff --git a/scrapling/fetchers/chrome.py b/scrapling/fetchers/chrome.py index 594b178..0c06aa1 100644 --- a/scrapling/fetchers/chrome.py +++ b/scrapling/fetchers/chrome.py @@ -15,6 +15,7 @@ class DynamicFetcher(BaseFetcher): :param headless: Run the browser in headless/hidden (default), or headful/visible mode. :param disable_resources: Drop requests for unnecessary resources for a speed boost. :param blocked_domains: A set of domain names to block requests to. Subdomains are also matched (e.g., ``"example.com"`` blocks ``"sub.example.com"`` too). + :param block_ads: Block requests to ~3,500 known ad/tracking domains. Can be combined with ``blocked_domains``. :param useragent: Pass a useragent string to be used. Otherwise the fetcher will generate a real Useragent of the same browser and use it. :param cookies: Set cookies for the next request. :param network_idle: Wait for the page until there are no network connections for at least 500 ms. @@ -55,6 +56,7 @@ class DynamicFetcher(BaseFetcher): :param headless: Run the browser in headless/hidden (default), or headful/visible mode. :param disable_resources: Drop requests for unnecessary resources for a speed boost. :param blocked_domains: A set of domain names to block requests to. Subdomains are also matched (e.g., ``"example.com"`` blocks ``"sub.example.com"`` too). + :param block_ads: Block requests to ~3,500 known ad/tracking domains. Can be combined with ``blocked_domains``. :param useragent: Pass a useragent string to be used. Otherwise the fetcher will generate a real Useragent of the same browser and use it. :param cookies: Set cookies for the next request. :param network_idle: Wait for the page until there are no network connections for at least 500 ms. diff --git a/scrapling/fetchers/stealth_chrome.py b/scrapling/fetchers/stealth_chrome.py index 1cf89f3..0c7134c 100644 --- a/scrapling/fetchers/stealth_chrome.py +++ b/scrapling/fetchers/stealth_chrome.py @@ -20,6 +20,7 @@ class StealthyFetcher(BaseFetcher): :param disable_resources: Drop requests for unnecessary resources for a speed boost. Requests dropped are of type `font`, `image`, `media`, `beacon`, `object`, `imageset`, `texttrack`, `websocket`, `csp_report`, and `stylesheet`. :param blocked_domains: A set of domain names to block requests to. Subdomains are also matched (e.g., ``"example.com"`` blocks ``"sub.example.com"`` too). + :param block_ads: Block requests to ~3,500 known ad/tracking domains. Can be combined with ``blocked_domains``. :param useragent: Pass a useragent string to be used. Otherwise the fetcher will generate a real Useragent of the same browser and use it. :param cookies: Set cookies for the next request. :param network_idle: Wait for the page until there are no network connections for at least 500 ms. @@ -69,6 +70,7 @@ class StealthyFetcher(BaseFetcher): :param disable_resources: Drop requests for unnecessary resources for a speed boost. Requests dropped are of type `font`, `image`, `media`, `beacon`, `object`, `imageset`, `texttrack`, `websocket`, `csp_report`, and `stylesheet`. :param blocked_domains: A set of domain names to block requests to. Subdomains are also matched (e.g., ``"example.com"`` blocks ``"sub.example.com"`` too). + :param block_ads: Block requests to ~3,500 known ad/tracking domains. Can be combined with ``blocked_domains``. :param useragent: Pass a useragent string to be used. Otherwise the fetcher will generate a real Useragent of the same browser and use it. :param cookies: Set cookies for the next request. :param network_idle: Wait for the page until there are no network connections for at least 500 ms. diff --git a/tests/fetchers/test_utils.py b/tests/fetchers/test_utils.py index bebb5fd..942835f 100644 --- a/tests/fetchers/test_utils.py +++ b/tests/fetchers/test_utils.py @@ -5,11 +5,9 @@ from scrapling.engines.toolbelt.navigation import ( construct_proxy_dict, create_intercept_handler, create_async_intercept_handler, + _is_domain_blocked, ) -from scrapling.engines.toolbelt.fingerprints import ( - get_os_name, - generate_headers -) +from scrapling.engines.toolbelt.fingerprints import get_os_name, generate_headers @pytest.fixture @@ -148,31 +146,19 @@ class TestConstructProxyDict: """Test a basic proxy string""" result = construct_proxy_dict("http://proxy.example.com:8080") - expected = { - "server": "http://proxy.example.com:8080", - "username": "", - "password": "" - } + expected = {"server": "http://proxy.example.com:8080", "username": "", "password": ""} assert result == expected def test_proxy_string_with_auth(self): """Test proxy string with authentication""" result = construct_proxy_dict("http://user:pass@proxy.example.com:8080") - expected = { - "server": "http://proxy.example.com:8080", - "username": "user", - "password": "pass" - } + expected = {"server": "http://proxy.example.com:8080", "username": "user", "password": "pass"} assert result == expected def test_proxy_dict_input(self): """Test proxy dictionary input""" - input_dict = { - "server": "http://proxy.example.com:8080", - "username": "user", - "password": "pass" - } + input_dict = {"server": "http://proxy.example.com:8080", "username": "user", "password": "pass"} result = construct_proxy_dict(input_dict) assert result == input_dict @@ -182,11 +168,7 @@ class TestConstructProxyDict: input_dict = {"server": "http://proxy.example.com:8080"} result = construct_proxy_dict(input_dict) - expected = { - "server": "http://proxy.example.com:8080", - "username": "", - "password": "" - } + expected = {"server": "http://proxy.example.com:8080", "username": "", "password": ""} assert result == expected def test_invalid_proxy_string(self): @@ -240,7 +222,7 @@ class TestResponse: cookies={"session": "abc123"}, headers={"Content-Type": "text/html"}, request_headers={"User-Agent": "Test"}, - encoding="utf-8" + encoding="utf-8", ) assert response.url == "https://example.com" @@ -250,7 +232,7 @@ class TestResponse: def test_response_with_bytes_content(self): """Test Response with 'bytes' content""" - content_bytes = "Test".encode('utf-8') + content_bytes = "Test".encode("utf-8") response = Response( url="https://example.com", @@ -259,7 +241,7 @@ class TestResponse: reason="OK", cookies={}, headers={}, - request_headers={} + request_headers={}, ) # Should handle 'bytes' content properly @@ -268,6 +250,7 @@ class TestResponse: class _MockRequest: """Minimal mock for Playwright's Request object.""" + def __init__(self, url: str, resource_type: str = "document"): self.url = url self.resource_type = resource_type @@ -275,6 +258,7 @@ class _MockRequest: class _MockRoute: """Minimal mock for Playwright's sync Route object.""" + def __init__(self, url: str, resource_type: str = "document"): self.request = _MockRequest(url, resource_type) self.aborted = False @@ -289,6 +273,7 @@ class _MockRoute: class _AsyncMockRoute: """Minimal mock for Playwright's async Route object.""" + def __init__(self, url: str, resource_type: str = "document"): self.request = _MockRequest(url, resource_type) self.aborted = False @@ -411,3 +396,90 @@ class TestCreateAsyncInterceptHandler: route = _AsyncMockRoute("https://notexample.com/page") await handler(route) assert route.continued + + +class TestIsDomainBlocked: + """Test the frozenset-based domain matching helper.""" + + def test_exact_match(self): + domains = frozenset({"doubleclick.net"}) + assert _is_domain_blocked("doubleclick.net", domains) is True + + def test_subdomain_match(self): + domains = frozenset({"doubleclick.net"}) + assert _is_domain_blocked("ads.doubleclick.net", domains) is True + + def test_deep_subdomain_match(self): + domains = frozenset({"doubleclick.net"}) + assert _is_domain_blocked("tracker.ads.doubleclick.net", domains) is True + + def test_no_partial_match(self): + domains = frozenset({"doubleclick.net"}) + assert _is_domain_blocked("notdoubleclick.net", domains) is False + + def test_no_match(self): + domains = frozenset({"doubleclick.net"}) + assert _is_domain_blocked("example.com", domains) is False + + def test_empty_domains(self): + assert _is_domain_blocked("example.com", frozenset()) is False + + def test_multiple_domains(self): + domains = frozenset({"ads.com", "tracker.io", "doubleclick.net"}) + assert _is_domain_blocked("cdn.ads.com", domains) is True + assert _is_domain_blocked("tracker.io", domains) is True + assert _is_domain_blocked("safe.example.com", domains) is False + + +class TestAdDomains: + """Test the built-in ad domain list.""" + + def test_ad_domains_is_frozenset(self): + from scrapling.engines.toolbelt.ad_domains import AD_DOMAINS + + assert isinstance(AD_DOMAINS, frozenset) + + def test_ad_domains_has_entries(self): + from scrapling.engines.toolbelt.ad_domains import AD_DOMAINS + + assert len(AD_DOMAINS) > 1000 + + def test_ad_domains_contains_known_entries(self): + from scrapling.engines.toolbelt.ad_domains import AD_DOMAINS + + assert "doubleclick.net" in AD_DOMAINS + assert "googlesyndication.com" in AD_DOMAINS + + +class TestBlockAdsConfig: + """Test that block_ads merges ad domains into blocked_domains at config level.""" + + def test_block_ads_populates_blocked_domains(self): + from scrapling.engines._browsers._validators import PlaywrightConfig + + config = PlaywrightConfig(block_ads=True) + assert config.blocked_domains is not None + assert len(config.blocked_domains) > 1000 + assert "doubleclick.net" in config.blocked_domains + + def test_block_ads_false_leaves_blocked_domains_none(self): + from scrapling.engines._browsers._validators import PlaywrightConfig + + config = PlaywrightConfig(block_ads=False) + assert config.blocked_domains is None + + def test_block_ads_merges_with_user_domains(self): + from scrapling.engines._browsers._validators import PlaywrightConfig + + user_domains = {"my-custom-block.com"} + config = PlaywrightConfig(block_ads=True, blocked_domains=user_domains) + assert config.blocked_domains is not None + assert "my-custom-block.com" in config.blocked_domains + assert "doubleclick.net" in config.blocked_domains + + def test_block_ads_does_not_modify_original_set(self): + from scrapling.engines._browsers._validators import PlaywrightConfig + + user_domains = {"my-custom-block.com"} + _ = PlaywrightConfig(block_ads=True, blocked_domains=user_domains) + assert len(user_domains) == 1