From 89958bd6405a90d3e472d2f7bf8d1c0d00ec7473 Mon Sep 17 00:00:00 2001 From: SukkaBot Date: Tue, 19 Dec 2023 14:59:27 +0000 Subject: [PATCH] deploy: SukkaW/Surge@c36e79cffc3d49200e57d493a7c7ef27fcbea8e8 --- Clash/domainset/reject.txt | 32 +- Clash/domainset/speedtest.txt | 65 +- List/domainset/reject.conf | 32 +- List/domainset/speedtest.conf | 65 +- Mock/www-google-analytics-com_analytics.js | 207 ++++--- Mock/www-google-analytics-com_ga.js | 231 ++++---- Mock/www-googlesyndication-com_adsbygoogle.js | 125 +++- Mock/www-googletagservices-com_gpt.js | 560 +++++++++++++----- 8 files changed, 843 insertions(+), 474 deletions(-) diff --git a/Clash/domainset/reject.txt b/Clash/domainset/reject.txt index 0a0898192..543b81a83 100644 --- a/Clash/domainset/reject.txt +++ b/Clash/domainset/reject.txt @@ -1,7 +1,7 @@ ######################################### # Sukka's Ruleset - Reject Base -# Last Updated: 2023-12-19T14:55:43.349Z -# Size: 276803 +# Last Updated: 2023-12-19T14:59:20.381Z +# Size: 276777 # License: AGPL 3.0 # Homepage: https://ruleset.skk.moe # GitHub: https://github.com/SukkaW/Surge @@ -17175,7 +17175,6 @@ ecmc.bdimg.com +.bnbae.com +.bngpt.com +.bnlif.com -+.bnmkl.com +.ad.bnmla.com +.edge.bnmla.com +.bnq.quest @@ -70471,7 +70470,6 @@ analytics.spotify.com +.strpjmp.com +.strtgic.com +.deliver830-inpomts.structs.sbs -+.strwaoz.xyz +.info.stryker.com +.telemetry.stryker.com +.mobileapps.stryker.com @@ -78996,7 +78994,6 @@ ae.bdstatic.com +.bgdsk-bg.com +.bghomedk.com +.bhapreds.com -+.bhnhejwj.com +.bhootlab.com +.bhosadwa.com +.bhtcjurm.com @@ -91192,7 +91189,6 @@ nitrokod.com +.oaxpcohp.com +.oazartie.com +.oazoorse.com -+.obanmafn.com +.obdoboli.xyz +.ot.obi-brico.ch +.smetrics.obirin.ac.jp @@ -100021,7 +100017,6 @@ ads.reader.yueyouxs.com +.go.zkipster.com +.zlacraft.com +.zlapspeca.pl -+.zlbvewof.com +.zlpolska.xyz +.data-9b57e703d3.zm-online.de +.sm-rtb-useast.zmdvideo.com @@ -102209,7 +102204,6 @@ adx.appsdk.com.cn +.metrics.armstrong.com +.armsvrip.site +.armurecsd.com -+.army.delivery +.link.armytimes.com +.srepdata.armytimes.com +.ilc.armzolot.site @@ -102223,7 +102217,6 @@ adx.appsdk.com.cn +.arongroups.co +.arousalxr.com +.arquivaae.com -+.arragouts.com +.arriedand.xyz +.arrnaught.com +.email.arroyoins.com @@ -132168,7 +132161,7 @@ evilsbedont.de +.f19013235f.com +.f1ery6t.online +.ed5183bc15.f22440fb7b.com -+.f28bb1a86f.com ++.dd148b0fb2.f28bb1a86f.com +.f28fda58c5.com +.f2bdeb5c8c.com +.f2fc0fce65.com @@ -132617,7 +132610,6 @@ evilsbedont.de +.fireupload.org +.email.fireworkhq.com +.my.firmafx.com.au -+.firmsossa.guru +.promociones.firmushomes.es +.first-rate.com +.firstborn.info @@ -133092,7 +133084,6 @@ evilsbedont.de +.fykdxpdnhy.com +.fymagazine.com +.fzbjzlwcnd.com -+.fzfcrqlwph.com +.g-onehotel.com +.g1188506010.co +.g1584674682.co @@ -138598,7 +138589,6 @@ www.mmnetwork.mobi +.naessships.com +.nafamovies.com +.naflqml.gov.np -+.naforeshow.org +.naftnews.space +.nafttech.space +.nagaslot65.com @@ -153715,7 +153705,6 @@ grs.dbankcloud.asia +.email.flirtseason.com +.email.mgm.flirtycupid.com +.flixfacts.co.uk -+.flnxcveswar.com +.go.flocabulary.com +.email.mail.flocksafety.com +.email.gh-mail.flocksafety.com @@ -160391,7 +160380,6 @@ px.cdn.creative.medialytics.com +.pro.ouest-france.fr +.go.labonneadresse.ouest-france.fr +.ougnagirock.com -+.ouldhukelpm.org +.ouneaciand.site +.ounojushyxb.xyz +.ourbalihome.com @@ -173133,7 +173121,6 @@ a.dounanhuahui.com +.eprisetipenge.tk +.eputysolomon.com +.info.epworthvilla.org -+.eqktmnuojibw.com +.bison.equals.community +.equatorabash.com +.equilibre-tv.org @@ -183240,7 +183227,6 @@ panger-top.click +.qiqdpeovkobj.com +.qizjkwx9klim.com +.qkyliljavzci.com -+.qlmwgibhbhar.com +.qmaacxajsovk.com +.qnlranvabaqk.top +.qnlranvabrnq.top @@ -183319,7 +183305,6 @@ panger-top.click +.qwmdblogpro.site +.qwmdnlzitsys.com +.qzkjkiexmsyv.com -+.qzyllgqficyd.com +.tokuho.r-staffing.co.jp +.r023m83skv5v.com +.advert.rabaldermedia.se @@ -186425,7 +186410,6 @@ adclick.tencentmusic.com +.wd.towmonterses.com +.townlife-aff.com +.toxicfluency.com -+.toyjofkkcdyr.com +.toyosbullpen.com +.tp1jcgl644jk.com +.tpopularcldfa.co @@ -196441,7 +196425,6 @@ mail.ghmproperties.com +.lmjwqbjmkrzyw.top +.lncfuqbgpnmxm.xyz +.lng-polska.online -+.lnjmaymlmnkyn.top +.lnkyqvkyznkvz.top +.lnp0s-38147.space +.lnpostwebpage.xyz @@ -196609,7 +196592,6 @@ mail.ghmproperties.com +.luxuryandzone.com +.luzulabeguile.com +.lvntekpejrmtb.com -+.lvwuuehkvitwn.com +.email.mg.lwteamlearning.co +.lxmodemoodeyy.com +.lyceebrequigny.fr @@ -205109,7 +205091,6 @@ api-ads.tiantianqutao.com +.xnszbmnxuzfvr.com +.www.xoayco5of.digital +.xoemvfgjhpwea.com -+.xonyxdpnelhzi.com +.xorexkorentut.com +.xoslan-invest.pro +.xox-exe.github.io @@ -205167,7 +205148,6 @@ api-ads.tiantianqutao.com +.yieldsoftware.com +.yike20230306.live +.ylzkfpzqffqon.com -+.ynaapihbulbky.com +.yneationsliee.xyz +.ynuyvhkxpqqnr.com +.yocopayme.web.app @@ -209280,7 +209260,6 @@ dark-utilities.xyz +.everyweekforum.xyz +.offers.everywherehero.com +.go.evidenceaction.org -+.evifokcrmhdmai.com +.evitinghabnab.guru +.evkakuri2308.click +.evolutionese.space @@ -218167,7 +218146,6 @@ trusteverything.de +.t.ucirvinesports.com +.app.ucirvinesports.com +.www.ucobpolskashop.com -+.ucqbhkrzsqpqmg.com +.ipost.udacsiedo39174.top +.udacsiedo45821.xyz +.udacsiedo68174.xyz @@ -219167,7 +219145,6 @@ trusteverything.de +.yawpingdepaint.com +.ybyrudhdnrxcbe.com +.ycywhmyiixjafa.com -+.ydbmeagwyakdfl.com +.ydqkorympskhbc.com +.yefzjingxudwib.com +.yellow-ribbons.com @@ -238594,7 +238571,6 @@ spyneteurope.microsoft.akadns.net +.smolik-autohandel.pl +.smoothie-smoothie.jp +.smotherpaperwork.com -+.smoulderhangnail.com +.smuggleturnstile.com +.smxperfectorders.com +.sn-americaonline.com @@ -264716,7 +264692,6 @@ xn--xhq9mt12cf5v.website +.creptdeservedprofanity.com +.cresfpho2ntesepapillo3.com +.crisistuesdayartillery.com -+.criticaltriggerweather.com +.criticisedduennaships.info +.crowdfundmillionaire.co.uk +.crtscpewxi.firebaseapp.com @@ -267114,7 +267089,6 @@ api-access.pangolin-sdk-toutiao-b.com +.homepl-serwer3736859.online +.email.hondaautopartswarehouse.com +.email.delivery.hondaoftheavenuesoffers.com -+.hopperimprobableclotted.com +.horizontallyclenchretro.com +.host-brown-delta.vercel.app +.hotelofficeewn.blogspot.com diff --git a/Clash/domainset/speedtest.txt b/Clash/domainset/speedtest.txt index 41785a4b3..ca3fd77f3 100644 --- a/Clash/domainset/speedtest.txt +++ b/Clash/domainset/speedtest.txt @@ -1,7 +1,7 @@ ######################################### # Sukka's Ruleset - Speedtest Domains -# Last Updated: 2023-12-19T14:55:48.850Z -# Size: 873 +# Last Updated: 2023-12-19T14:59:25.534Z +# Size: 876 # License: AGPL 3.0 # Homepage: https://ruleset.skk.moe # GitHub: https://github.com/SukkaW/Surge @@ -13,7 +13,6 @@ speedtest1.mk.de speedtest1.sc.189.cn speedtest-sg.cbn.id st.mow.gin.ru -speedtest.hep.gg speedtest.kko.me speedtest-cbr.cdn.on.net +.speed.pfm.gg @@ -30,13 +29,13 @@ speedtest.asvt.ru speed.data.cr speedtest.ddps.jp ookla-speedtest.fsr.com +speedtest.hay.net +.speedtest.i3d.net speedtest.link.bm speed.uk.lon.m247.ro ookla.max.srl nl-ams-gbs-mtn-speedtest-server-01.mtn.com uk-lon-tcy-mtn-speedtest-server-01.mtn.com -speedtest.nrbn.ca lax01-b.ookla.rcp.net speedtest.rit.edu speedtest.ropa.de @@ -54,6 +53,7 @@ speedtest.ct.co.cr speedtest3.dacor.de speedtest.dcs1.biz uw1a.ookla-speedtests.e2ro.com +speedtest01.ehtel.ca speedtest-dc08.enzu.com +.fast.com speedtest.nik.fiber.nl @@ -61,6 +61,7 @@ speedtest12.hkbn.net speedtest1c.hkix.net st1.htva.net speedtest.inoc.net +40gspeedtest.mnsi.net clg-105-sptest.ncri.com speedtest.nwic.com snjscarc-speed01.nwrd.net @@ -105,6 +106,7 @@ speedtest.mel.mhn.cloud speedtest.syd.mhn.cloud speedtest.mosnet.ru speedtest.newsxs.nl +sp1.ni.net.tr speedtest2.niutk.com sanjoseiturbide.openti.mx +.speedtest.orange.fr @@ -170,7 +172,6 @@ speedtest.maryno.net speedtest-stf.megafon.ru +.speed.misaka.one speedtest.mosline.ru -teste.mov.pro.br speedtest.myarena.ru speedtest.netrack.ru mirror.nforce.com @@ -183,7 +184,6 @@ aydinspeedtest.posive.net bursaspeedtest.posive.net duzcespeedtest.posive.net izmirspeedtest.posive.net -muglaspeedtest.posive.net edirnespeedtest.posive.net manisaspeedtest.posive.net bilecikspeedtest.posive.net @@ -193,46 +193,48 @@ sakaryaspeedtest.posive.net istanbulspeedtest.posive.net balikesirspeedtest.posive.net canakkalespeedtest.posive.net +kastamonuspeedtest.posive.net kirklarelispeedtest.posive.net speedtest-de.pq.hosting speedtest-ru.pq.hosting +speedtest.quadro.net speedtest2.rhitcr.com -stajax.rogers.com stguelph.rogers.com stlondon.rogers.com stmilton.rogers.com -stoshawa.rogers.com sttoronto.rogers.com +stvaughan.rogers.com +stbrampton.rogers.com sthamilton.rogers.com +stkingcity.rogers.com stoakville.rogers.com ststthomas.rogers.com stwaterloo.rogers.com stbrantford.rogers.com stetobicoke.rogers.com stkitchener.rogers.com -stnorthyork.rogers.com -stpickering.rogers.com +ststratford.rogers.com stwoodstock.rogers.com -stbowmanville.rogers.com stmississauga.rogers.com -stscarborough.rogers.com +storangeville.rogers.com stguelphwireless.rogers.com stlondonwireless.rogers.com stmiltonwireless.rogers.com -stoshawawireless.rogers.com +stsarniawireless.rogers.com stchathamwireless.rogers.com sttorontowireless.rogers.com +stwindsorwireless.rogers.com sthamiltonwireless.rogers.com ststthomaswireless.rogers.com stbrantfordwireless.rogers.com stkitchenerwireless.rogers.com -stnorthyorkwireless.rogers.com +ststratfordwireless.rogers.com stwoodstockwireless.rogers.com stgeorgetownwireless.rogers.com stleamingtonwireless.rogers.com -stbowmanvillewireless.rogers.com stmississaugawireless.rogers.com -ststcatharineswireless.rogers.com +storangevillewireless.rogers.com +stsaultstemariewireless.rogers.com stwellandpelhamwireless.rogers.com dalspeedtest.rtatel.com speedtest-server-lax.starry.com @@ -279,7 +281,6 @@ speedtest.fios.net.br iperf.gakijken.nl london.speedtest.highnet.com speedtest.host.com.tw -teste.i9va.net.br speedtest1.indosat.com sp1.jump.net.uk ct-speed.kbro.com.tw @@ -350,6 +351,7 @@ de-bln2-ookla-01.wemacom.net de-ffm1-ookla-01.wemacom.net speedtest.westcall.ru speedtest.wifi.net.tr +sp1.wightman.ca speed1.wirsnet.com speedtest01.wowrack.com speedtest.lax01.xfernet.net @@ -386,8 +388,8 @@ sv-ookla.geolinks.com sjdm-speedtest.globe.com.ph speed.golddata.net speedtest.helpmert.com +speedtest.idnet.net.br speedtest.syd.infininet.au -velocimetrostm.interlig.net speedtest.ixirhost.com speedtest.eu.kamatera.com speedtest.eu-lo.kamatera.com @@ -458,21 +460,18 @@ speedtest.jbarbieri.net kadoshspeed.kadoshnet.com speedtest16.lintas.net.id sptest2.mgts-spdop.ru +speedtest.mornington.ca speedtest-sg.napinfo.co.id -stajax.netcrawler.ca stguelph.netcrawler.ca stlondon.netcrawler.ca -stoshawa.netcrawler.ca -stwhitby.netcrawler.ca speedtest.netcrawler.ca +stvaughan.netcrawler.ca +stbrampton.netcrawler.ca sthamilton.netcrawler.ca +stkingcity.netcrawler.ca stwaterloo.netcrawler.ca stetobicoke.netcrawler.ca -stnorthyork.netcrawler.ca -stpickering.netcrawler.ca -stbowmanville.netcrawler.ca stmississauga.netcrawler.ca -stscarborough.netcrawler.ca netgearsj.com speedtest.netgeartec.tk speedtest-syr.northland.net @@ -481,12 +480,15 @@ speedtest.us.openinfra.com speedgauge2.optonline.net speedtest-lax.perfectip.net speedtest.plexicomm.net +stna.pplink.net.br +testemani.pplink.net.br speedtestde.pvdatanet.com speedtestus.pvdatanet.com speedtest.ramtek.net.tr speedtest1.net.rochester.edu +.speedtest.sbcglobal.net speedtest.scotnet.co.uk +speed.sdmnet.com.br speedtest.seaside.ns.ca ookla.la.ca.sharktech.net speedtest.ams.sharktech.net @@ -505,6 +507,7 @@ speed-test.ukservers.com speedtest-lon.veloxserv.net velocimetro-mns.virtua.com.br speed-test.westelcom.com +speedtest.brooketel.coop speedtest.citytelecom.ru lon-hex-speedtest.cloudconnx.net +.speed.cloudflare.com @@ -549,10 +552,13 @@ speedtest.lax.hivelocity.net speedtest.mia.hivelocity.net speedtest.nyc.hivelocity.net speedtest-la.hostsailor.com +speedtest1.hurontel.on.ca +speedtest2.hurontel.on.ca speedlon.hyperoptic.com speedtest-sg.iconpln.net.id speedtest.intlink.com.br speedtest.ip-projects.de +ts.ipernet.net.br speedtest.jvswifi.com.br speedtest-hob.launtel.net.au speedtest-bris.launtel.net.au @@ -560,7 +566,6 @@ speedtest-lton.launtel.net.au speedtest.mel01.launtel.net.au speedtest.syd01.launtel.net.au +.speedtest.leaptel.com.au -speedtest.localhosts.ltd speedtest.meerfarbig.net sig-speedtest.moratelindo.io f1.netfast.com.br @@ -571,7 +576,6 @@ speednld.phoenixnap.com speedsin.phoenixnap.com speedtest.pilotfiber.com speedtest.redactus.co.uk -speedtest.redewsp.com.br speedtest.sewan-group.de speedtest.singnet.com.sg speedtest.solutechzk.com @@ -628,6 +632,7 @@ speed.lodosnet.com.tr speedtest.lodosnet.com.tr sp1.logicpro.com.br speed.mpvnetworks.com +speedtest.omegasul.com.br +.ooklaserver.net speedtest-adl.optusnet.com.au speedtest-bla.optusnet.com.au @@ -647,7 +652,6 @@ speed.lax-1.serverforge.org speed1.yyz-1.serverforge.org ookla.uk.eu.smoketunnel.com speedtest.softether.co.jp -test.speednet.net.tr speedtest.springfibre.com speedtest-ndb1.tasmanet.com.au speedtest-ndm1.tasmanet.com.au @@ -779,8 +783,6 @@ sp1.fiberlinkce.com.br sy5.test.gslnetworks.com.au me1.speedtest.gslnetworks.com.au speedtest.internetbolaget.nu -speedtest.isppapagaio.com.br -speedtest.koycegiznet.com.tr speedtest.newberlinfiber.net ookla.ddnsgeek.com bne-speed.overthewire.com.au @@ -792,6 +794,7 @@ ooklatins.redeconexaonet.com speedtest.redrawinternet.com velocidade.softtelecom.net.br +.speedtestkorea.com +speedtest.systemlifeline.com ber.wsqm.telekom-dienste.de ffm.wsqm.telekom-dienste.de speedtest.trenchnetworks.com @@ -818,6 +821,7 @@ st-izmir-1.turksatkablo.com.tr st-atakoy-1.turksatkablo.com.tr st-manisa-1.turksatkablo.com.tr st-yalova-1.turksatkablo.com.tr +st-denizli-1.turksatkablo.com.tr st-tekirdag-1.turksatkablo.com.tr st-balikesir-1.turksatkablo.com.tr st-eskisehir-1.turksatkablo.com.tr @@ -874,7 +878,6 @@ speedtest-tesa.coelhotecnologia.com.br speedtest.mirror.serversaustralia.com.au teste.mundialnettelecom.com.br speedtest.redefinitytelecom.com.br -speedtestspeednet.com.br aragonnetspeedtest.com.br test.infoconnecttelecom.com.br servidor.nuevanetbandalarga.com.br diff --git a/List/domainset/reject.conf b/List/domainset/reject.conf index 80ad44839..e812c45b0 100644 --- a/List/domainset/reject.conf +++ b/List/domainset/reject.conf @@ -1,7 +1,7 @@ ######################################### # Sukka's Ruleset - Reject Base -# Last Updated: 2023-12-19T14:55:43.349Z -# Size: 276803 +# Last Updated: 2023-12-19T14:59:20.381Z +# Size: 276777 # License: AGPL 3.0 # Homepage: https://ruleset.skk.moe # GitHub: https://github.com/SukkaW/Surge @@ -17175,7 +17175,6 @@ ecmc.bdimg.com .bnbae.com .bngpt.com .bnlif.com -.bnmkl.com .ad.bnmla.com .edge.bnmla.com .bnq.quest @@ -70471,7 +70470,6 @@ analytics.spotify.com .strpjmp.com .strtgic.com .deliver830-inpomts.structs.sbs -.strwaoz.xyz .info.stryker.com .telemetry.stryker.com .mobileapps.stryker.com @@ -78996,7 +78994,6 @@ ae.bdstatic.com .bgdsk-bg.com .bghomedk.com .bhapreds.com -.bhnhejwj.com .bhootlab.com .bhosadwa.com .bhtcjurm.com @@ -91192,7 +91189,6 @@ nitrokod.com .oaxpcohp.com .oazartie.com .oazoorse.com -.obanmafn.com .obdoboli.xyz .ot.obi-brico.ch .smetrics.obirin.ac.jp @@ -100021,7 +100017,6 @@ ads.reader.yueyouxs.com .go.zkipster.com .zlacraft.com .zlapspeca.pl -.zlbvewof.com .zlpolska.xyz .data-9b57e703d3.zm-online.de .sm-rtb-useast.zmdvideo.com @@ -102209,7 +102204,6 @@ adx.appsdk.com.cn .metrics.armstrong.com .armsvrip.site .armurecsd.com -.army.delivery .link.armytimes.com .srepdata.armytimes.com .ilc.armzolot.site @@ -102223,7 +102217,6 @@ adx.appsdk.com.cn .arongroups.co .arousalxr.com .arquivaae.com -.arragouts.com .arriedand.xyz .arrnaught.com .email.arroyoins.com @@ -132168,7 +132161,7 @@ evilsbedont.de .f19013235f.com .f1ery6t.online .ed5183bc15.f22440fb7b.com -.f28bb1a86f.com +.dd148b0fb2.f28bb1a86f.com .f28fda58c5.com .f2bdeb5c8c.com .f2fc0fce65.com @@ -132617,7 +132610,6 @@ evilsbedont.de .fireupload.org .email.fireworkhq.com .my.firmafx.com.au -.firmsossa.guru .promociones.firmushomes.es .first-rate.com .firstborn.info @@ -133092,7 +133084,6 @@ evilsbedont.de .fykdxpdnhy.com .fymagazine.com .fzbjzlwcnd.com -.fzfcrqlwph.com .g-onehotel.com .g1188506010.co .g1584674682.co @@ -138598,7 +138589,6 @@ www.mmnetwork.mobi .naessships.com .nafamovies.com .naflqml.gov.np -.naforeshow.org .naftnews.space .nafttech.space .nagaslot65.com @@ -153715,7 +153705,6 @@ grs.dbankcloud.asia .email.flirtseason.com .email.mgm.flirtycupid.com .flixfacts.co.uk -.flnxcveswar.com .go.flocabulary.com .email.mail.flocksafety.com .email.gh-mail.flocksafety.com @@ -160391,7 +160380,6 @@ px.cdn.creative.medialytics.com .pro.ouest-france.fr .go.labonneadresse.ouest-france.fr .ougnagirock.com -.ouldhukelpm.org .ouneaciand.site .ounojushyxb.xyz .ourbalihome.com @@ -173133,7 +173121,6 @@ a.dounanhuahui.com .eprisetipenge.tk .eputysolomon.com .info.epworthvilla.org -.eqktmnuojibw.com .bison.equals.community .equatorabash.com .equilibre-tv.org @@ -183240,7 +183227,6 @@ panger-top.click .qiqdpeovkobj.com .qizjkwx9klim.com .qkyliljavzci.com -.qlmwgibhbhar.com .qmaacxajsovk.com .qnlranvabaqk.top .qnlranvabrnq.top @@ -183319,7 +183305,6 @@ panger-top.click .qwmdblogpro.site .qwmdnlzitsys.com .qzkjkiexmsyv.com -.qzyllgqficyd.com .tokuho.r-staffing.co.jp .r023m83skv5v.com .advert.rabaldermedia.se @@ -186425,7 +186410,6 @@ adclick.tencentmusic.com .wd.towmonterses.com .townlife-aff.com .toxicfluency.com -.toyjofkkcdyr.com .toyosbullpen.com .tp1jcgl644jk.com .tpopularcldfa.co @@ -196441,7 +196425,6 @@ mail.ghmproperties.com .lmjwqbjmkrzyw.top .lncfuqbgpnmxm.xyz .lng-polska.online -.lnjmaymlmnkyn.top .lnkyqvkyznkvz.top .lnp0s-38147.space .lnpostwebpage.xyz @@ -196609,7 +196592,6 @@ mail.ghmproperties.com .luxuryandzone.com .luzulabeguile.com .lvntekpejrmtb.com -.lvwuuehkvitwn.com .email.mg.lwteamlearning.co .lxmodemoodeyy.com .lyceebrequigny.fr @@ -205109,7 +205091,6 @@ api-ads.tiantianqutao.com .xnszbmnxuzfvr.com .www.xoayco5of.digital .xoemvfgjhpwea.com -.xonyxdpnelhzi.com .xorexkorentut.com .xoslan-invest.pro .xox-exe.github.io @@ -205167,7 +205148,6 @@ api-ads.tiantianqutao.com .yieldsoftware.com .yike20230306.live .ylzkfpzqffqon.com -.ynaapihbulbky.com .yneationsliee.xyz .ynuyvhkxpqqnr.com .yocopayme.web.app @@ -209280,7 +209260,6 @@ dark-utilities.xyz .everyweekforum.xyz .offers.everywherehero.com .go.evidenceaction.org -.evifokcrmhdmai.com .evitinghabnab.guru .evkakuri2308.click .evolutionese.space @@ -218167,7 +218146,6 @@ trusteverything.de .t.ucirvinesports.com .app.ucirvinesports.com .www.ucobpolskashop.com -.ucqbhkrzsqpqmg.com .ipost.udacsiedo39174.top .udacsiedo45821.xyz .udacsiedo68174.xyz @@ -219167,7 +219145,6 @@ trusteverything.de .yawpingdepaint.com .ybyrudhdnrxcbe.com .ycywhmyiixjafa.com -.ydbmeagwyakdfl.com .ydqkorympskhbc.com .yefzjingxudwib.com .yellow-ribbons.com @@ -238594,7 +238571,6 @@ spyneteurope.microsoft.akadns.net .smolik-autohandel.pl .smoothie-smoothie.jp .smotherpaperwork.com -.smoulderhangnail.com .smuggleturnstile.com .smxperfectorders.com .sn-americaonline.com @@ -264716,7 +264692,6 @@ xn--xhq9mt12cf5v.website .creptdeservedprofanity.com .cresfpho2ntesepapillo3.com .crisistuesdayartillery.com -.criticaltriggerweather.com .criticisedduennaships.info .crowdfundmillionaire.co.uk .crtscpewxi.firebaseapp.com @@ -267114,7 +267089,6 @@ api-access.pangolin-sdk-toutiao-b.com .homepl-serwer3736859.online .email.hondaautopartswarehouse.com .email.delivery.hondaoftheavenuesoffers.com -.hopperimprobableclotted.com .horizontallyclenchretro.com .host-brown-delta.vercel.app .hotelofficeewn.blogspot.com diff --git a/List/domainset/speedtest.conf b/List/domainset/speedtest.conf index 10a5da347..28d5dd79a 100644 --- a/List/domainset/speedtest.conf +++ b/List/domainset/speedtest.conf @@ -1,7 +1,7 @@ ######################################### # Sukka's Ruleset - Speedtest Domains -# Last Updated: 2023-12-19T14:55:48.850Z -# Size: 873 +# Last Updated: 2023-12-19T14:59:25.534Z +# Size: 876 # License: AGPL 3.0 # Homepage: https://ruleset.skk.moe # GitHub: https://github.com/SukkaW/Surge @@ -13,7 +13,6 @@ speedtest1.mk.de speedtest1.sc.189.cn speedtest-sg.cbn.id st.mow.gin.ru -speedtest.hep.gg speedtest.kko.me speedtest-cbr.cdn.on.net .speed.pfm.gg @@ -30,13 +29,13 @@ speedtest.asvt.ru speed.data.cr speedtest.ddps.jp ookla-speedtest.fsr.com +speedtest.hay.net .speedtest.i3d.net speedtest.link.bm speed.uk.lon.m247.ro ookla.max.srl nl-ams-gbs-mtn-speedtest-server-01.mtn.com uk-lon-tcy-mtn-speedtest-server-01.mtn.com -speedtest.nrbn.ca lax01-b.ookla.rcp.net speedtest.rit.edu speedtest.ropa.de @@ -54,6 +53,7 @@ speedtest.ct.co.cr speedtest3.dacor.de speedtest.dcs1.biz uw1a.ookla-speedtests.e2ro.com +speedtest01.ehtel.ca speedtest-dc08.enzu.com .fast.com speedtest.nik.fiber.nl @@ -61,6 +61,7 @@ speedtest12.hkbn.net speedtest1c.hkix.net st1.htva.net speedtest.inoc.net +40gspeedtest.mnsi.net clg-105-sptest.ncri.com speedtest.nwic.com snjscarc-speed01.nwrd.net @@ -105,6 +106,7 @@ speedtest.mel.mhn.cloud speedtest.syd.mhn.cloud speedtest.mosnet.ru speedtest.newsxs.nl +sp1.ni.net.tr speedtest2.niutk.com sanjoseiturbide.openti.mx .speedtest.orange.fr @@ -170,7 +172,6 @@ speedtest.maryno.net speedtest-stf.megafon.ru .speed.misaka.one speedtest.mosline.ru -teste.mov.pro.br speedtest.myarena.ru speedtest.netrack.ru mirror.nforce.com @@ -183,7 +184,6 @@ aydinspeedtest.posive.net bursaspeedtest.posive.net duzcespeedtest.posive.net izmirspeedtest.posive.net -muglaspeedtest.posive.net edirnespeedtest.posive.net manisaspeedtest.posive.net bilecikspeedtest.posive.net @@ -193,46 +193,48 @@ sakaryaspeedtest.posive.net istanbulspeedtest.posive.net balikesirspeedtest.posive.net canakkalespeedtest.posive.net +kastamonuspeedtest.posive.net kirklarelispeedtest.posive.net speedtest-de.pq.hosting speedtest-ru.pq.hosting +speedtest.quadro.net speedtest2.rhitcr.com -stajax.rogers.com stguelph.rogers.com stlondon.rogers.com stmilton.rogers.com -stoshawa.rogers.com sttoronto.rogers.com +stvaughan.rogers.com +stbrampton.rogers.com sthamilton.rogers.com +stkingcity.rogers.com stoakville.rogers.com ststthomas.rogers.com stwaterloo.rogers.com stbrantford.rogers.com stetobicoke.rogers.com stkitchener.rogers.com -stnorthyork.rogers.com -stpickering.rogers.com +ststratford.rogers.com stwoodstock.rogers.com -stbowmanville.rogers.com stmississauga.rogers.com -stscarborough.rogers.com +storangeville.rogers.com stguelphwireless.rogers.com stlondonwireless.rogers.com stmiltonwireless.rogers.com -stoshawawireless.rogers.com +stsarniawireless.rogers.com stchathamwireless.rogers.com sttorontowireless.rogers.com +stwindsorwireless.rogers.com sthamiltonwireless.rogers.com ststthomaswireless.rogers.com stbrantfordwireless.rogers.com stkitchenerwireless.rogers.com -stnorthyorkwireless.rogers.com +ststratfordwireless.rogers.com stwoodstockwireless.rogers.com stgeorgetownwireless.rogers.com stleamingtonwireless.rogers.com -stbowmanvillewireless.rogers.com stmississaugawireless.rogers.com -ststcatharineswireless.rogers.com +storangevillewireless.rogers.com +stsaultstemariewireless.rogers.com stwellandpelhamwireless.rogers.com dalspeedtest.rtatel.com speedtest-server-lax.starry.com @@ -279,7 +281,6 @@ speedtest.fios.net.br iperf.gakijken.nl london.speedtest.highnet.com speedtest.host.com.tw -teste.i9va.net.br speedtest1.indosat.com sp1.jump.net.uk ct-speed.kbro.com.tw @@ -350,6 +351,7 @@ de-bln2-ookla-01.wemacom.net de-ffm1-ookla-01.wemacom.net speedtest.westcall.ru speedtest.wifi.net.tr +sp1.wightman.ca speed1.wirsnet.com speedtest01.wowrack.com speedtest.lax01.xfernet.net @@ -386,8 +388,8 @@ sv-ookla.geolinks.com sjdm-speedtest.globe.com.ph speed.golddata.net speedtest.helpmert.com +speedtest.idnet.net.br speedtest.syd.infininet.au -velocimetrostm.interlig.net speedtest.ixirhost.com speedtest.eu.kamatera.com speedtest.eu-lo.kamatera.com @@ -458,21 +460,18 @@ speedtest.jbarbieri.net kadoshspeed.kadoshnet.com speedtest16.lintas.net.id sptest2.mgts-spdop.ru +speedtest.mornington.ca speedtest-sg.napinfo.co.id -stajax.netcrawler.ca stguelph.netcrawler.ca stlondon.netcrawler.ca -stoshawa.netcrawler.ca -stwhitby.netcrawler.ca speedtest.netcrawler.ca +stvaughan.netcrawler.ca +stbrampton.netcrawler.ca sthamilton.netcrawler.ca +stkingcity.netcrawler.ca stwaterloo.netcrawler.ca stetobicoke.netcrawler.ca -stnorthyork.netcrawler.ca -stpickering.netcrawler.ca -stbowmanville.netcrawler.ca stmississauga.netcrawler.ca -stscarborough.netcrawler.ca netgearsj.com speedtest.netgeartec.tk speedtest-syr.northland.net @@ -481,12 +480,15 @@ speedtest.us.openinfra.com speedgauge2.optonline.net speedtest-lax.perfectip.net speedtest.plexicomm.net +stna.pplink.net.br +testemani.pplink.net.br speedtestde.pvdatanet.com speedtestus.pvdatanet.com speedtest.ramtek.net.tr speedtest1.net.rochester.edu .speedtest.sbcglobal.net speedtest.scotnet.co.uk +speed.sdmnet.com.br speedtest.seaside.ns.ca ookla.la.ca.sharktech.net speedtest.ams.sharktech.net @@ -505,6 +507,7 @@ speed-test.ukservers.com speedtest-lon.veloxserv.net velocimetro-mns.virtua.com.br speed-test.westelcom.com +speedtest.brooketel.coop speedtest.citytelecom.ru lon-hex-speedtest.cloudconnx.net .speed.cloudflare.com @@ -549,10 +552,13 @@ speedtest.lax.hivelocity.net speedtest.mia.hivelocity.net speedtest.nyc.hivelocity.net speedtest-la.hostsailor.com +speedtest1.hurontel.on.ca +speedtest2.hurontel.on.ca speedlon.hyperoptic.com speedtest-sg.iconpln.net.id speedtest.intlink.com.br speedtest.ip-projects.de +ts.ipernet.net.br speedtest.jvswifi.com.br speedtest-hob.launtel.net.au speedtest-bris.launtel.net.au @@ -560,7 +566,6 @@ speedtest-lton.launtel.net.au speedtest.mel01.launtel.net.au speedtest.syd01.launtel.net.au .speedtest.leaptel.com.au -speedtest.localhosts.ltd speedtest.meerfarbig.net sig-speedtest.moratelindo.io f1.netfast.com.br @@ -571,7 +576,6 @@ speednld.phoenixnap.com speedsin.phoenixnap.com speedtest.pilotfiber.com speedtest.redactus.co.uk -speedtest.redewsp.com.br speedtest.sewan-group.de speedtest.singnet.com.sg speedtest.solutechzk.com @@ -628,6 +632,7 @@ speed.lodosnet.com.tr speedtest.lodosnet.com.tr sp1.logicpro.com.br speed.mpvnetworks.com +speedtest.omegasul.com.br .ooklaserver.net speedtest-adl.optusnet.com.au speedtest-bla.optusnet.com.au @@ -647,7 +652,6 @@ speed.lax-1.serverforge.org speed1.yyz-1.serverforge.org ookla.uk.eu.smoketunnel.com speedtest.softether.co.jp -test.speednet.net.tr speedtest.springfibre.com speedtest-ndb1.tasmanet.com.au speedtest-ndm1.tasmanet.com.au @@ -779,8 +783,6 @@ sp1.fiberlinkce.com.br sy5.test.gslnetworks.com.au me1.speedtest.gslnetworks.com.au speedtest.internetbolaget.nu -speedtest.isppapagaio.com.br -speedtest.koycegiznet.com.tr speedtest.newberlinfiber.net ookla.ddnsgeek.com bne-speed.overthewire.com.au @@ -792,6 +794,7 @@ ooklatins.redeconexaonet.com speedtest.redrawinternet.com velocidade.softtelecom.net.br .speedtestkorea.com +speedtest.systemlifeline.com ber.wsqm.telekom-dienste.de ffm.wsqm.telekom-dienste.de speedtest.trenchnetworks.com @@ -818,6 +821,7 @@ st-izmir-1.turksatkablo.com.tr st-atakoy-1.turksatkablo.com.tr st-manisa-1.turksatkablo.com.tr st-yalova-1.turksatkablo.com.tr +st-denizli-1.turksatkablo.com.tr st-tekirdag-1.turksatkablo.com.tr st-balikesir-1.turksatkablo.com.tr st-eskisehir-1.turksatkablo.com.tr @@ -874,7 +878,6 @@ speedtest-tesa.coelhotecnologia.com.br speedtest.mirror.serversaustralia.com.au teste.mundialnettelecom.com.br speedtest.redefinitytelecom.com.br -speedtestspeednet.com.br aragonnetspeedtest.com.br test.infoconnecttelecom.com.br servidor.nuevanetbandalarga.com.br diff --git a/Mock/www-google-analytics-com_analytics.js b/Mock/www-google-analytics-com_analytics.js index 9c796c7de..41eb0883e 100644 --- a/Mock/www-google-analytics-com_analytics.js +++ b/Mock/www-google-analytics-com_analytics.js @@ -1,89 +1,124 @@ -(function () { - 'use strict'; - - // https://developers.google.com/analytics/devguides/collection/analyticsjs/ - const noopfn = function () { - }; - // - const Tracker = function () { - }; - const p = Tracker.prototype; - p.get = noopfn; - p.set = noopfn; - p.send = noopfn; - // - const w = window; - const gaName = w.GoogleAnalyticsObject || 'ga'; - const gaQueue = w[gaName]; - const ga = function (...args) { - const len = args.length; - if (len === 0) { return; } - let fn; - const a = args[len - 1]; - if (typeof a === 'object' && typeof a.hitCallback === 'function') { - fn = a.hitCallback; - } else if (typeof a === 'function') { - fn = () => { a(ga.create()); }; - } else { - const pos = args.indexOf('hitCallback'); - if (pos !== -1 && typeof args[pos + 1] === 'function') { - fn = args[pos + 1]; - } +(function(source, args) { + function GoogleAnalytics(source) { + var Tracker = function Tracker() {}; + var proto = Tracker.prototype; + proto.get = noopFunc; + proto.set = noopFunc; + proto.send = noopFunc; + var googleAnalyticsName = window.GoogleAnalyticsObject || "ga"; + function ga(a) { + var len = arguments.length; + if (len === 0) { + return; + } + var lastArg = arguments[len - 1]; + var replacer; + if (lastArg instanceof Object && lastArg !== null && typeof lastArg.hitCallback === "function") { + replacer = lastArg.hitCallback; + } else if (typeof lastArg === "function") { + replacer = function replacer() { + lastArg(ga.create()); + }; + } + try { + setTimeout(replacer, 1); + } catch (ex) {} + } + ga.create = function() { + return new Tracker; + }; + ga.getByName = function() { + return new Tracker; + }; + ga.getAll = function() { + return [ new Tracker ]; + }; + ga.remove = noopFunc; + ga.loaded = true; + window[googleAnalyticsName] = ga; + var _window = window, dataLayer = _window.dataLayer, google_optimize = _window.google_optimize; + if (dataLayer instanceof Object === false) { + return; + } + if (dataLayer.hide instanceof Object && typeof dataLayer.hide.end === "function") { + dataLayer.hide.end(); + } + var handleCallback = function handleCallback(dataObj, funcName) { + if (dataObj && typeof dataObj[funcName] === "function") { + setTimeout(dataObj[funcName]); + } + }; + if (typeof dataLayer.push === "function") { + dataLayer.push = function(data) { + if (data instanceof Object) { + handleCallback(data, "eventCallback"); + for (var key in data) { + handleCallback(data[key], "event_callback"); + } + if (!data.hasOwnProperty("eventCallback") && !data.hasOwnProperty("eventCallback")) { + [].push.call(window.dataLayer, data); + } + } + if (Array.isArray(data)) { + data.forEach((function(arg) { + handleCallback(arg, "callback"); + })); + } + return noopFunc; + }; + } + if (google_optimize instanceof Object && typeof google_optimize.get === "function") { + var googleOptimizeWrapper = { + get: noopFunc + }; + window.google_optimize = googleOptimizeWrapper; + } + hit(source); } - if (typeof fn !== 'function') { return; } + function hit(source) { + if (source.verbose !== true) { + return; + } + try { + var log = console.log.bind(console); + var trace = console.trace.bind(console); + var prefix = source.ruleText || ""; + if (source.domainName) { + var AG_SCRIPTLET_MARKER = "#%#//"; + var UBO_SCRIPTLET_MARKER = "##+js"; + var ruleStartIndex; + if (source.ruleText.includes(AG_SCRIPTLET_MARKER)) { + ruleStartIndex = source.ruleText.indexOf(AG_SCRIPTLET_MARKER); + } else if (source.ruleText.includes(UBO_SCRIPTLET_MARKER)) { + ruleStartIndex = source.ruleText.indexOf(UBO_SCRIPTLET_MARKER); + } + var rulePart = source.ruleText.slice(ruleStartIndex); + prefix = "".concat(source.domainName).concat(rulePart); + } + log("".concat(prefix, " trace start")); + if (trace) { + trace(); + } + log("".concat(prefix, " trace end")); + } catch (e) {} + if (typeof window.__debug === "function") { + window.__debug(source); + } + } + function noopFunc() {} + function noopNull() { + return null; + } + function noopArray() { + return []; + } + const updatedArgs = args ? [].concat(source).concat(args) : [ source ]; try { - fn(); - } catch { + GoogleAnalytics.apply(this, updatedArgs); + } catch (e) { + console.log(e); } - }; - ga.create = function () { - return new Tracker(); - }; - ga.getByName = function () { - return new Tracker(); - }; - ga.getAll = function () { - return [new Tracker()]; - }; - ga.remove = noopfn; - // https://github.com/uBlockOrigin/uAssets/issues/2107 - ga.loaded = true; - w[gaName] = ga; - // https://github.com/gorhill/uBlock/issues/3075 - const dl = w.dataLayer; - if (typeof dl === 'object') { - if (typeof dl.hide === 'object' && typeof dl.hide.end === 'function') { - dl.hide.end(); - dl.hide.end = () => { }; - } - if (typeof dl.push === 'function') { - const doCallback = function (item) { - if (typeof item === 'object' === false) { return; } - if (typeof item.eventCallback !== 'function') { return; } - // eslint-disable-next-line sukka/prefer-timer-id -- deliberate use of setTimeout - setTimeout(item.eventCallback, 1); - item.eventCallback = () => { }; - }; - dl.push = new Proxy(dl.push, { - apply(target, thisArg, args) { - doCallback(args[0]); - return Reflect.apply(target, thisArg, args); - } - }); - if (Array.isArray(dl)) { - const q = dl.slice(); - for (const item of q) { - doCallback(item); - } - } - } - } - // empty ga queue - if (typeof gaQueue === 'function' && Array.isArray(gaQueue.q)) { - const q = gaQueue.q.slice(); - gaQueue.q.length = 0; - for (const entry of q) { - ga(...entry); - } - } -}()); +})({ + name: "google-analytics", + args: [] +}, []); \ No newline at end of file diff --git a/Mock/www-google-analytics-com_ga.js b/Mock/www-google-analytics-com_ga.js index 845be8688..d41d8a124 100644 --- a/Mock/www-google-analytics-com_ga.js +++ b/Mock/www-google-analytics-com_ga.js @@ -1,109 +1,130 @@ -(function () { - 'use strict'; - - const noopfn = function () { - }; - // - const Gaq = function () { - }; - Gaq.prototype.Na = noopfn; - Gaq.prototype.O = noopfn; - Gaq.prototype.Sa = noopfn; - Gaq.prototype.Ta = noopfn; - Gaq.prototype.Va = noopfn; - Gaq.prototype._createAsyncTracker = noopfn; - Gaq.prototype._getAsyncTracker = noopfn; - Gaq.prototype._getPlugin = noopfn; - Gaq.prototype.push = function (a) { - if (typeof a === 'function') { - a(); return; +(function(source, args) { + function GoogleAnalyticsGa(source) { + function Gaq() {} + Gaq.prototype.Na = noopFunc; + Gaq.prototype.O = noopFunc; + Gaq.prototype.Sa = noopFunc; + Gaq.prototype.Ta = noopFunc; + Gaq.prototype.Va = noopFunc; + Gaq.prototype._createAsyncTracker = noopFunc; + Gaq.prototype._getAsyncTracker = noopFunc; + Gaq.prototype._getPlugin = noopFunc; + Gaq.prototype.push = function(data) { + if (typeof data === "function") { + data(); + return; + } + if (Array.isArray(data) === false) { + return; + } + if (typeof data[0] === "string" && /(^|\.)_link$/.test(data[0]) && typeof data[1] === "string") { + window.location.assign(data[1]); + } + if (data[0] === "_set" && data[1] === "hitCallback" && typeof data[2] === "function") { + data[2](); + } + }; + var gaq = new Gaq; + var asyncTrackers = window._gaq || []; + if (Array.isArray(asyncTrackers)) { + while (asyncTrackers[0]) { + gaq.push(asyncTrackers.shift()); + } + } + window._gaq = gaq.qf = gaq; + function Gat() {} + var api = [ "_addIgnoredOrganic", "_addIgnoredRef", "_addItem", "_addOrganic", "_addTrans", "_clearIgnoredOrganic", "_clearIgnoredRef", "_clearOrganic", "_cookiePathCopy", "_deleteCustomVar", "_getName", "_setAccount", "_getAccount", "_getClientInfo", "_getDetectFlash", "_getDetectTitle", "_getLinkerUrl", "_getLocalGifPath", "_getServiceMode", "_getVersion", "_getVisitorCustomVar", "_initData", "_link", "_linkByPost", "_setAllowAnchor", "_setAllowHash", "_setAllowLinker", "_setCampContentKey", "_setCampMediumKey", "_setCampNameKey", "_setCampNOKey", "_setCampSourceKey", "_setCampTermKey", "_setCampaignCookieTimeout", "_setCampaignTrack", "_setClientInfo", "_setCookiePath", "_setCookiePersistence", "_setCookieTimeout", "_setCustomVar", "_setDetectFlash", "_setDetectTitle", "_setDomainName", "_setLocalGifPath", "_setLocalRemoteServerMode", "_setLocalServerMode", "_setReferrerOverride", "_setRemoteServerMode", "_setSampleRate", "_setSessionTimeout", "_setSiteSpeedSampleRate", "_setSessionCookieTimeout", "_setVar", "_setVisitorCookieTimeout", "_trackEvent", "_trackPageLoadTime", "_trackPageview", "_trackSocial", "_trackTiming", "_trackTrans", "_visitCode" ]; + var tracker = api.reduce((function(res, funcName) { + res[funcName] = noopFunc; + return res; + }), {}); + tracker._getLinkerUrl = function(a) { + return a; + }; + tracker._link = function(url) { + if (typeof url !== "string") { + return; + } + try { + window.location.assign(url); + } catch (e) { + logMessage(source, e); + } + }; + Gat.prototype._anonymizeIP = noopFunc; + Gat.prototype._createTracker = noopFunc; + Gat.prototype._forceSSL = noopFunc; + Gat.prototype._getPlugin = noopFunc; + Gat.prototype._getTracker = function() { + return tracker; + }; + Gat.prototype._getTrackerByName = function() { + return tracker; + }; + Gat.prototype._getTrackers = noopFunc; + Gat.prototype.aa = noopFunc; + Gat.prototype.ab = noopFunc; + Gat.prototype.hb = noopFunc; + Gat.prototype.la = noopFunc; + Gat.prototype.oa = noopFunc; + Gat.prototype.pa = noopFunc; + Gat.prototype.u = noopFunc; + var gat = new Gat; + window._gat = gat; + hit(source); } - if (Array.isArray(a) === false) { return; } - // https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiDomainDirectory#_gat.GA_Tracker_._link - if ( - typeof a[0] === 'string' - && /(^|\.)_link$/.test(a[0]) - && typeof a[1] === 'string' - ) { - try { - window.location.assign(a[1]); - } catch { - } + function hit(source) { + if (source.verbose !== true) { + return; + } + try { + var log = console.log.bind(console); + var trace = console.trace.bind(console); + var prefix = source.ruleText || ""; + if (source.domainName) { + var AG_SCRIPTLET_MARKER = "#%#//"; + var UBO_SCRIPTLET_MARKER = "##+js"; + var ruleStartIndex; + if (source.ruleText.includes(AG_SCRIPTLET_MARKER)) { + ruleStartIndex = source.ruleText.indexOf(AG_SCRIPTLET_MARKER); + } else if (source.ruleText.includes(UBO_SCRIPTLET_MARKER)) { + ruleStartIndex = source.ruleText.indexOf(UBO_SCRIPTLET_MARKER); + } + var rulePart = source.ruleText.slice(ruleStartIndex); + prefix = "".concat(source.domainName).concat(rulePart); + } + log("".concat(prefix, " trace start")); + if (trace) { + trace(); + } + log("".concat(prefix, " trace end")); + } catch (e) {} + if (typeof window.__debug === "function") { + window.__debug(source); + } } - if (a[0] === '_set' && a[1] === 'hitCallback' && typeof a[2] === 'function') { - a[2](); + function noopFunc() {} + function logMessage(source, message) { + var forced = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var convertMessageToString = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var name = source.name, verbose = source.verbose; + if (!forced && !verbose) { + return; + } + var nativeConsole = console.log; + if (!convertMessageToString) { + nativeConsole("".concat(name, ":"), message); + return; + } + nativeConsole("".concat(name, ": ").concat(message)); } - }; - // - const tracker = (function () { - const out = {}; - const api = [ - '_addIgnoredOrganic _addIgnoredRef _addItem _addOrganic', - '_addTrans _clearIgnoredOrganic _clearIgnoredRef _clearOrganic', - '_cookiePathCopy _deleteCustomVar _getName _setAccount', - '_getAccount _getClientInfo _getDetectFlash _getDetectTitle', - '_getLinkerUrl _getLocalGifPath _getServiceMode _getVersion', - '_getVisitorCustomVar _initData _linkByPost', - '_setAllowAnchor _setAllowHash _setAllowLinker _setCampContentKey', - '_setCampMediumKey _setCampNameKey _setCampNOKey _setCampSourceKey', - '_setCampTermKey _setCampaignCookieTimeout _setCampaignTrack _setClientInfo', - '_setCookiePath _setCookiePersistence _setCookieTimeout _setCustomVar', - '_setDetectFlash _setDetectTitle _setDomainName _setLocalGifPath', - '_setLocalRemoteServerMode _setLocalServerMode _setReferrerOverride _setRemoteServerMode', - '_setSampleRate _setSessionTimeout _setSiteSpeedSampleRate _setSessionCookieTimeout', - '_setVar _setVisitorCookieTimeout _trackEvent _trackPageLoadTime', - '_trackPageview _trackSocial _trackTiming _trackTrans', - '_visitCode' - ].join(' ').split(/\s+/); - for (const method of api) { - out[method] = noopfn; + const updatedArgs = args ? [].concat(source).concat(args) : [ source ]; + try { + GoogleAnalyticsGa.apply(this, updatedArgs); + } catch (e) { + console.log(e); } - out._getLinkerUrl = function (a) { - return a; - }; - // https://github.com/AdguardTeam/Scriptlets/issues/154 - out._link = function (a) { - if (typeof a !== 'string') { return; } - try { - window.location.assign(a); - } catch { - } - }; - return out; - }()); - // - const Gat = function () { - }; - Gat.prototype._anonymizeIP = noopfn; - Gat.prototype._createTracker = noopfn; - Gat.prototype._forceSSL = noopfn; - Gat.prototype._getPlugin = noopfn; - Gat.prototype._getTracker = function () { - return tracker; - }; - Gat.prototype._getTrackerByName = function () { - return tracker; - }; - Gat.prototype._getTrackers = noopfn; - Gat.prototype.aa = noopfn; - Gat.prototype.ab = noopfn; - Gat.prototype.hb = noopfn; - Gat.prototype.la = noopfn; - Gat.prototype.oa = noopfn; - Gat.prototype.pa = noopfn; - Gat.prototype.u = noopfn; - const gat = new Gat(); - window._gat = gat; - // - const gaq = new Gaq(); - (function () { - const aa = window._gaq || []; - if (Array.isArray(aa)) { - while (aa[0]) { - gaq.push(aa.shift()); - } - } - }()); - gaq.qf = gaq; - window._gaq = gaq; -}()); +})({ + name: "google-analytics-ga", + args: [] +}, []); \ No newline at end of file diff --git a/Mock/www-googlesyndication-com_adsbygoogle.js b/Mock/www-googlesyndication-com_adsbygoogle.js index 8a025a5c6..e5d270b00 100644 --- a/Mock/www-googlesyndication-com_adsbygoogle.js +++ b/Mock/www-googlesyndication-com_adsbygoogle.js @@ -1,32 +1,95 @@ -(function () { - 'use strict'; - - const init = () => { - window.adsbygoogle = { - loaded: true, - push() { - } - }; - const phs = document.querySelectorAll('.adsbygoogle'); - const css = 'height:1px!important;max-height:1px!important;max-width:1px!important;width:1px!important;'; - for (let i = 0; i < phs.length; i++) { - const id = `aswift_${i}`; - if (document.querySelector(`iframe#${id}`) !== null) { continue; } - const fr = document.createElement('iframe'); - fr.id = id; - fr.style = css; - const cfr = document.createElement('iframe'); - cfr.id = `google_ads_frame${i}`; - fr.appendChild(cfr); - phs[i].appendChild(fr); +(function(source, args) { + function GoogleSyndicationAdsByGoogle(source) { + window.adsbygoogle = { + loaded: true, + push(arg) { + if (typeof this.length === "undefined") { + this.length = 0; + this.length += 1; + } + if (arg !== null && arg instanceof Object && arg.constructor.name === "Object") { + for (var _i = 0, _Object$keys = Object.keys(arg); _i < _Object$keys.length; _i++) { + var key = _Object$keys[_i]; + if (typeof arg[key] === "function") { + try { + arg[key].call(this, {}); + } catch (_unused) {} + } + } + } + } + }; + var adElems = document.querySelectorAll(".adsbygoogle"); + var css = "height:1px!important;max-height:1px!important;max-width:1px!important;width:1px!important;"; + var statusAttrName = "data-adsbygoogle-status"; + var ASWIFT_IFRAME_MARKER = "aswift_"; + var GOOGLE_ADS_IFRAME_MARKER = "google_ads_iframe_"; + var executed = false; + for (var i = 0; i < adElems.length; i += 1) { + var adElemChildNodes = adElems[i].childNodes; + var childNodesQuantity = adElemChildNodes.length; + var areIframesDefined = false; + if (childNodesQuantity > 0) { + areIframesDefined = childNodesQuantity === 2 && adElemChildNodes[0].nodeName.toLowerCase() === "iframe" && adElemChildNodes[0].id.includes(ASWIFT_IFRAME_MARKER) && adElemChildNodes[1].nodeName.toLowerCase() === "iframe" && adElemChildNodes[1].id.includes(GOOGLE_ADS_IFRAME_MARKER); + } + if (!areIframesDefined) { + adElems[i].setAttribute(statusAttrName, "done"); + var aswiftIframe = document.createElement("iframe"); + aswiftIframe.id = "".concat(ASWIFT_IFRAME_MARKER).concat(i); + aswiftIframe.style = css; + adElems[i].appendChild(aswiftIframe); + var innerAswiftIframe = document.createElement("iframe"); + aswiftIframe.contentWindow.document.body.appendChild(innerAswiftIframe); + var googleadsIframe = document.createElement("iframe"); + googleadsIframe.id = "".concat(GOOGLE_ADS_IFRAME_MARKER).concat(i); + googleadsIframe.style = css; + adElems[i].appendChild(googleadsIframe); + var innerGoogleadsIframe = document.createElement("iframe"); + googleadsIframe.contentWindow.document.body.appendChild(innerGoogleadsIframe); + executed = true; + } + } + if (executed) { + hit(source); + } } - }; - if ( - document.querySelectorAll('.adsbygoogle').length === 0 - && document.readyState === 'loading' - ) { - window.addEventListener('DOMContentLoaded', init, { once: true }); - } else { - init(); - } -}()); + function hit(source) { + if (source.verbose !== true) { + return; + } + try { + var log = console.log.bind(console); + var trace = console.trace.bind(console); + var prefix = source.ruleText || ""; + if (source.domainName) { + var AG_SCRIPTLET_MARKER = "#%#//"; + var UBO_SCRIPTLET_MARKER = "##+js"; + var ruleStartIndex; + if (source.ruleText.includes(AG_SCRIPTLET_MARKER)) { + ruleStartIndex = source.ruleText.indexOf(AG_SCRIPTLET_MARKER); + } else if (source.ruleText.includes(UBO_SCRIPTLET_MARKER)) { + ruleStartIndex = source.ruleText.indexOf(UBO_SCRIPTLET_MARKER); + } + var rulePart = source.ruleText.slice(ruleStartIndex); + prefix = "".concat(source.domainName).concat(rulePart); + } + log("".concat(prefix, " trace start")); + if (trace) { + trace(); + } + log("".concat(prefix, " trace end")); + } catch (e) {} + if (typeof window.__debug === "function") { + window.__debug(source); + } + } + const updatedArgs = args ? [].concat(source).concat(args) : [ source ]; + try { + GoogleSyndicationAdsByGoogle.apply(this, updatedArgs); + } catch (e) { + console.log(e); + } +})({ + name: "googlesyndication-adsbygoogle", + args: [] +}, []); \ No newline at end of file diff --git a/Mock/www-googletagservices-com_gpt.js b/Mock/www-googletagservices-com_gpt.js index 8e6668bf0..f9b4c932c 100644 --- a/Mock/www-googletagservices-com_gpt.js +++ b/Mock/www-googletagservices-com_gpt.js @@ -1,133 +1,429 @@ -(function () { - 'use strict'; - - // https://developers.google.com/doubleclick-gpt/reference - const noopfn = function () { - }.bind(); - const noopthisfn = function () { - return this; - }; - const noopnullfn = function () { - return null; - }; - const nooparrayfn = function () { - return []; - }; - const noopstrfn = function () { - return ''; - }; - // - const companionAdsService = { - addEventListener: noopthisfn, - enableSyncLoading: noopfn, - setRefreshUnfilledSlots: noopfn - }; - const contentService = { - addEventListener: noopthisfn, - setContent: noopfn - }; - const PassbackSlot = function () { - }; - let p = PassbackSlot.prototype; - p.display = noopfn; - p.get = noopnullfn; - p.set = noopthisfn; - p.setClickUrl = noopthisfn; - p.setTagForChildDirectedTreatment = noopthisfn; - p.setTargeting = noopthisfn; - p.updateTargetingFromMap = noopthisfn; - const pubAdsService = { - addEventListener: noopthisfn, - clear: noopfn, - clearCategoryExclusions: noopthisfn, - clearTagForChildDirectedTreatment: noopthisfn, - clearTargeting: noopthisfn, - collapseEmptyDivs: noopfn, - defineOutOfPagePassback() { return new PassbackSlot(); }, - definePassback() { return new PassbackSlot(); }, - disableInitialLoad: noopfn, - display: noopfn, - enableAsyncRendering: noopfn, - enableSingleRequest: noopfn, - enableSyncRendering: noopfn, - enableVideoAds: noopfn, - get: noopnullfn, - getAttributeKeys: nooparrayfn, - getTargeting: noopfn, - getTargetingKeys: nooparrayfn, - getSlots: nooparrayfn, - refresh: noopfn, - removeEventListener: noopfn, - set: noopthisfn, - setCategoryExclusion: noopthisfn, - setCentering: noopfn, - setCookieOptions: noopthisfn, - setForceSafeFrame: noopthisfn, - setLocation: noopthisfn, - setPublisherProvidedId: noopthisfn, - setPrivacySettings: noopthisfn, - setRequestNonPersonalizedAds: noopthisfn, - setSafeFrameConfig: noopthisfn, - setTagForChildDirectedTreatment: noopthisfn, - setTargeting: noopthisfn, - setVideoContent: noopthisfn, - updateCorrelator: noopfn - }; - const SizeMappingBuilder = function () { - }; - p = SizeMappingBuilder.prototype; - p.addSize = noopthisfn; - p.build = noopnullfn; - const Slot = function () { - }; - p = Slot.prototype; - p.addService = noopthisfn; - p.clearCategoryExclusions = noopthisfn; - p.clearTargeting = noopthisfn; - p.defineSizeMapping = noopthisfn; - p.get = noopnullfn; - p.getAdUnitPath = nooparrayfn; - p.getAttributeKeys = nooparrayfn; - p.getCategoryExclusions = nooparrayfn; - p.getDomId = noopstrfn; - p.getResponseInformation = noopnullfn; - p.getSlotElementId = noopstrfn; - p.getSlotId = noopthisfn; - p.getTargeting = nooparrayfn; - p.getTargetingKeys = nooparrayfn; - p.set = noopthisfn; - p.setCategoryExclusion = noopthisfn; - p.setClickUrl = noopthisfn; - p.setCollapseEmptyDiv = noopthisfn; - p.setTargeting = noopthisfn; - p.updateTargetingFromMap = noopthisfn; - // - const gpt = window.googletag || {}; - const cmd = gpt.cmd || []; - gpt.apiReady = true; - gpt.cmd = []; - gpt.cmd.push = function (a) { - try { - a(); - } catch { +(function(source, args) { + function GoogleTagServicesGpt(source) { + var slots = new Map; + var slotsById = new Map; + var slotsPerPath = new Map; + var slotCreatives = new Map; + var eventCallbacks = new Map; + var gTargeting = new Map; + var addEventListener = function addEventListener(name, listener) { + if (!eventCallbacks.has(name)) { + eventCallbacks.set(name, new Set); + } + eventCallbacks.get(name).add(listener); + return this; + }; + var removeEventListener = function removeEventListener(name, listener) { + if (eventCallbacks.has(name)) { + return eventCallbacks.get(name).delete(listener); + } + return false; + }; + var fireSlotEvent = function fireSlotEvent(name, slot) { + return new Promise((function(resolve) { + requestAnimationFrame((function() { + var size = [ 0, 0 ]; + var callbacksSet = eventCallbacks.get(name) || []; + var callbackArray = Array.from(callbacksSet); + for (var i = 0; i < callbackArray.length; i += 1) { + callbackArray[i]({ + isEmpty: true, + size: size, + slot: slot + }); + } + resolve(); + })); + })); + }; + var emptySlotElement = function emptySlotElement(slot) { + var node = document.getElementById(slot.getSlotElementId()); + while (node !== null && node !== void 0 && node.lastChild) { + node.lastChild.remove(); + } + }; + var recreateIframeForSlot = function recreateIframeForSlot(slot) { + var _document$getElementB; + var eid = "google_ads_iframe_".concat(slot.getId()); + (_document$getElementB = document.getElementById(eid)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.remove(); + var node = document.getElementById(slot.getSlotElementId()); + if (node) { + var f = document.createElement("iframe"); + f.id = eid; + f.srcdoc = ""; + f.style = "position:absolute; width:0; height:0; left:0; right:0; z-index:-1; border:0"; + f.setAttribute("width", 0); + f.setAttribute("height", 0); + f.setAttribute("data-load-complete", true); + f.setAttribute("data-google-container-id", true); + f.setAttribute("sandbox", ""); + node.appendChild(f); + } + }; + var displaySlot = function displaySlot(slot) { + if (!slot) { + return; + } + var id = slot.getSlotElementId(); + if (!document.getElementById(id)) { + return; + } + var parent = document.getElementById(id); + if (parent) { + parent.appendChild(document.createElement("div")); + } + emptySlotElement(slot); + recreateIframeForSlot(slot); + fireSlotEvent("slotRenderEnded", slot); + fireSlotEvent("slotRequested", slot); + fireSlotEvent("slotResponseReceived", slot); + fireSlotEvent("slotOnload", slot); + fireSlotEvent("impressionViewable", slot); + }; + var companionAdsService = { + addEventListener: addEventListener, + removeEventListener: removeEventListener, + enableSyncLoading: noopFunc, + setRefreshUnfilledSlots: noopFunc, + getSlots: noopArray + }; + var contentService = { + addEventListener: addEventListener, + removeEventListener: removeEventListener, + setContent: noopFunc + }; + function PassbackSlot() {} + PassbackSlot.prototype.display = noopFunc; + PassbackSlot.prototype.get = noopNull; + PassbackSlot.prototype.set = noopThis; + PassbackSlot.prototype.setClickUrl = noopThis; + PassbackSlot.prototype.setTagForChildDirectedTreatment = noopThis; + PassbackSlot.prototype.setTargeting = noopThis; + PassbackSlot.prototype.updateTargetingFromMap = noopThis; + function SizeMappingBuilder() {} + SizeMappingBuilder.prototype.addSize = noopThis; + SizeMappingBuilder.prototype.build = noopNull; + var getTargetingValue = function getTargetingValue(v) { + if (typeof v === "string") { + return [ v ]; + } + try { + return Array.prototype.flat.call(v); + } catch (_unused) {} + return []; + }; + var updateTargeting = function updateTargeting(targeting, map) { + if (typeof map === "object") { + for (var key in map) { + if (Object.prototype.hasOwnProperty.call(map, key)) { + targeting.set(key, getTargetingValue(map[key])); + } + } + } + }; + var defineSlot = function defineSlot(adUnitPath, creatives, optDiv) { + if (slotsById.has(optDiv)) { + var _document$getElementB2; + (_document$getElementB2 = document.getElementById(optDiv)) === null || _document$getElementB2 === void 0 ? void 0 : _document$getElementB2.remove(); + return slotsById.get(optDiv); + } + var attributes = new Map; + var targeting = new Map; + var exclusions = new Set; + var response = { + advertiserId: undefined, + campaignId: undefined, + creativeId: undefined, + creativeTemplateId: undefined, + lineItemId: undefined + }; + var sizes = [ { + getHeight: function getHeight() { + return 2; + }, + getWidth: function getWidth() { + return 2; + } + } ]; + var num = (slotsPerPath.get(adUnitPath) || 0) + 1; + slotsPerPath.set(adUnitPath, num); + var id = "".concat(adUnitPath, "_").concat(num); + var clickUrl = ""; + var collapseEmptyDiv = null; + var services = new Set; + var slot = { + addService(e) { + services.add(e); + return slot; + }, + clearCategoryExclusions: noopThis, + clearTargeting(k) { + if (k === undefined) { + targeting.clear(); + } else { + targeting.delete(k); + } + }, + defineSizeMapping(mapping) { + slotCreatives.set(optDiv, mapping); + return this; + }, + get: function get(k) { + return attributes.get(k); + }, + getAdUnitPath: function getAdUnitPath() { + return adUnitPath; + }, + getAttributeKeys: function getAttributeKeys() { + return Array.from(attributes.keys()); + }, + getCategoryExclusions: function getCategoryExclusions() { + return Array.from(exclusions); + }, + getClickUrl: function getClickUrl() { + return clickUrl; + }, + getCollapseEmptyDiv: function getCollapseEmptyDiv() { + return collapseEmptyDiv; + }, + getContentUrl: function getContentUrl() { + return ""; + }, + getDivStartsCollapsed: function getDivStartsCollapsed() { + return null; + }, + getDomId: function getDomId() { + return optDiv; + }, + getEscapedQemQueryId: function getEscapedQemQueryId() { + return ""; + }, + getFirstLook: function getFirstLook() { + return 0; + }, + getId: function getId() { + return id; + }, + getHtml: function getHtml() { + return ""; + }, + getName: function getName() { + return id; + }, + getOutOfPage: function getOutOfPage() { + return false; + }, + getResponseInformation: function getResponseInformation() { + return response; + }, + getServices: function getServices() { + return Array.from(services); + }, + getSizes: function getSizes() { + return sizes; + }, + getSlotElementId: function getSlotElementId() { + return optDiv; + }, + getSlotId: function getSlotId() { + return slot; + }, + getTargeting: function getTargeting(k) { + return targeting.get(k) || gTargeting.get(k) || []; + }, + getTargetingKeys: function getTargetingKeys() { + return Array.from(new Set(Array.of(...gTargeting.keys(), ...targeting.keys()))); + }, + getTargetingMap: function getTargetingMap() { + return Object.assign(Object.fromEntries(gTargeting.entries()), Object.fromEntries(targeting.entries())); + }, + set(k, v) { + attributes.set(k, v); + return slot; + }, + setCategoryExclusion(e) { + exclusions.add(e); + return slot; + }, + setClickUrl(u) { + clickUrl = u; + return slot; + }, + setCollapseEmptyDiv(v) { + collapseEmptyDiv = !!v; + return slot; + }, + setSafeFrameConfig: noopThis, + setTagForChildDirectedTreatment: noopThis, + setTargeting(k, v) { + targeting.set(k, getTargetingValue(v)); + return slot; + }, + toString: function toString() { + return id; + }, + updateTargetingFromMap(map) { + updateTargeting(targeting, map); + return slot; + } + }; + slots.set(adUnitPath, slot); + slotsById.set(optDiv, slot); + slotCreatives.set(optDiv, creatives); + return slot; + }; + var pubAdsService = { + addEventListener: addEventListener, + removeEventListener: removeEventListener, + clear: noopFunc, + clearCategoryExclusions: noopThis, + clearTagForChildDirectedTreatment: noopThis, + clearTargeting(k) { + if (k === undefined) { + gTargeting.clear(); + } else { + gTargeting.delete(k); + } + }, + collapseEmptyDivs: noopFunc, + defineOutOfPagePassback() { + return new PassbackSlot; + }, + definePassback() { + return new PassbackSlot; + }, + disableInitialLoad: noopFunc, + display: noopFunc, + enableAsyncRendering: noopFunc, + enableLazyLoad: noopFunc, + enableSingleRequest: noopFunc, + enableSyncRendering: noopFunc, + enableVideoAds: noopFunc, + get: noopNull, + getAttributeKeys: noopArray, + getTargeting: noopArray, + getTargetingKeys: noopArray, + getSlots: noopArray, + isInitialLoadDisabled: trueFunc, + refresh: noopFunc, + set: noopThis, + setCategoryExclusion: noopThis, + setCentering: noopFunc, + setCookieOptions: noopThis, + setForceSafeFrame: noopThis, + setLocation: noopThis, + setPrivacySettings: noopThis, + setPublisherProvidedId: noopThis, + setRequestNonPersonalizedAds: noopThis, + setSafeFrameConfig: noopThis, + setTagForChildDirectedTreatment: noopThis, + setTargeting: noopThis, + setVideoContent: noopThis, + updateCorrelator: noopFunc + }; + var _window = window, _window$googletag = _window.googletag, googletag = _window$googletag === void 0 ? {} : _window$googletag; + var _googletag$cmd = googletag.cmd, cmd = _googletag$cmd === void 0 ? [] : _googletag$cmd; + googletag.apiReady = true; + googletag.cmd = []; + googletag.cmd.push = function(a) { + try { + a(); + } catch (ex) {} + return 1; + }; + googletag.companionAds = function() { + return companionAdsService; + }; + googletag.content = function() { + return contentService; + }; + googletag.defineOutOfPageSlot = defineSlot; + googletag.defineSlot = defineSlot; + googletag.destroySlots = function() { + slots.clear(); + slotsById.clear(); + }; + googletag.disablePublisherConsole = noopFunc; + googletag.display = function(arg) { + var id; + if (arg !== null && arg !== void 0 && arg.getSlotElementId) { + id = arg.getSlotElementId(); + } else if (arg !== null && arg !== void 0 && arg.nodeType) { + id = arg.id; + } else { + id = String(arg); + } + displaySlot(slotsById.get(id)); + }; + googletag.enableServices = noopFunc; + googletag.getVersion = noopStr; + googletag.pubads = function() { + return pubAdsService; + }; + googletag.pubadsReady = true; + googletag.setAdIframeTitle = noopFunc; + googletag.sizeMapping = function() { + return new SizeMappingBuilder; + }; + window.googletag = googletag; + while (cmd.length !== 0) { + googletag.cmd.push(cmd.shift()); + } + hit(source); } - return 1; - }; - gpt.companionAds = function () { return companionAdsService; }; - gpt.content = function () { return contentService; }; - gpt.defineOutOfPageSlot = function () { return new Slot(); }; - gpt.defineSlot = function () { return new Slot(); }; - gpt.destroySlots = noopfn; - gpt.disablePublisherConsole = noopfn; - gpt.display = noopfn; - gpt.enableServices = noopfn; - gpt.getVersion = noopstrfn; - gpt.pubads = function () { return pubAdsService; }; - gpt.pubadsReady = true; - gpt.setAdIframeTitle = noopfn; - gpt.sizeMapping = function () { return new SizeMappingBuilder(); }; - window.googletag = gpt; - while (cmd.length !== 0) { - gpt.cmd.push(cmd.shift()); - } -}()); + function hit(source) { + if (source.verbose !== true) { + return; + } + try { + var log = console.log.bind(console); + var trace = console.trace.bind(console); + var prefix = source.ruleText || ""; + if (source.domainName) { + var AG_SCRIPTLET_MARKER = "#%#//"; + var UBO_SCRIPTLET_MARKER = "##+js"; + var ruleStartIndex; + if (source.ruleText.includes(AG_SCRIPTLET_MARKER)) { + ruleStartIndex = source.ruleText.indexOf(AG_SCRIPTLET_MARKER); + } else if (source.ruleText.includes(UBO_SCRIPTLET_MARKER)) { + ruleStartIndex = source.ruleText.indexOf(UBO_SCRIPTLET_MARKER); + } + var rulePart = source.ruleText.slice(ruleStartIndex); + prefix = "".concat(source.domainName).concat(rulePart); + } + log("".concat(prefix, " trace start")); + if (trace) { + trace(); + } + log("".concat(prefix, " trace end")); + } catch (e) {} + if (typeof window.__debug === "function") { + window.__debug(source); + } + } + function noopFunc() {} + function noopThis() { + return this; + } + function noopNull() { + return null; + } + function noopArray() { + return []; + } + function noopStr() { + return ""; + } + function trueFunc() { + return true; + } + const updatedArgs = args ? [].concat(source).concat(args) : [ source ]; + try { + GoogleTagServicesGpt.apply(this, updatedArgs); + } catch (e) { + console.log(e); + } +})({ + name: "googletagservices-gpt", + args: [] +}, []); \ No newline at end of file