Nadchádzajúci Manifest V3 pre rozšírenia Google Chrome zmení spôsob fungovania blokovania reklám v prehliadači Chrome. Je toto správna cesta pre blokovanie reklám a Google?
Google Chrome je najpopulárnejší multiplatformový webový prehliadač dostupný na trhu práve teraz, nárokuje si 62,7 % podiel na globálnom používaní prehliadačov až do mája 2019, pričom Safari od Apple sa umiestnilo na druhom mieste s 15,89 % a Firefox od Mozilly si pripísal 5,07 %. Vzhľadom na svoj leví podiel, tie najmenšie zmeny, ktoré Google Chrome vykoná pre svoju platformu, nakoniec ovplyvnia milióny používateľov na celom svete. Takže keď Google oznámil ďalšiu verziu manifestu rozšírení vo forme Manifest V3 pre rozšírenia Google Chrome, vedeli sme, že čakali veľké zmeny, najmä keď vyšlo najavo, že Google zabudoval do prehliadača Chrome API na blokovanie obsahu sám.
Čo je Manifest V3?
Ak ste aktívnym používateľom prehliadača Chrome, nepochybne používate niekoľko rozšírení. Rozšírenia sú malé softvérové programy, ktoré prispôsobujú prehliadanie pomocou
API, ktoré poskytuje prehliadač, ktorá používateľom umožňuje prispôsobiť funkčnosť a správanie tak, aby vyhovovali ich individuálnym potrebám a preferenciám. Tieto rozšírenia sú distribuované najmä prostredníctvom Internetový obchod Chrome, ktorá je domovom pre viac ako 180 000 rozšírení.Od r koncom minulého rokaGoogle pracuje na „Manifest V3“, súbore navrhovaných zmien platformy Chrome Extensions, ktoré možno klasifikovať ako „prelomové zmeny“. Ako dokument verejnej diskusie pre Manifest V3 Verzia manifestu rozšírenia je mechanizmus na obmedzenie určitých schopností na určitú triedu rozšírení. Tieto obmedzenia môžu byť vo forme minimálnej verzie alebo maximálnej verzie. Obmedzenie na minimálnu verziu umožňuje, aby boli novšie rozhrania API alebo funkcie dostupné iba pre novšie rozšírenia zatiaľ čo obmedzenie na maximálnu verziu manifestu umožňuje postupné pridávanie starších rozhraní API alebo schopností zastarané.
Zjednodušene povedané, nová verzia manifestu umožňuje prehliadaču Chrome obmedziť rozhrania API a funkcie na túto novú verziu manifestu s cieľom prinútiť vývojárov rozšírení, aby migrovali z určitých starších rozhraní API kvôli ich negatívnemu vplyvu na používateľa skúsenosti. Implementácia rozšírenia v Manifest V3 by teoreticky mala poskytnúť silnejšie záruky z hľadiska bezpečnosti, súkromia a výkonu.
Aj keď je v Manifeste V3 načrtnutý široký rozsah zmien, najkontroverznejšia zmena sa týka rozhodnutia spoločnosti Google obmedziť blokovacie schopnosti prítomné v existujúcich chrome.webRequest API (a zamerať API na pozorovanie namiesto blokovania) a potom prezentovať tieto blokovacie schopnosti prostredníctvom nového chrome.declarativeNetRequest API. Táto konkrétna zmena má roznietila komunitu keďže to skončí zacielením na mechanizmus blokovania reklám známeho rozšírenia na blokovanie reklám, uBlock Origina priamo ovplyvňuje viac ako 10 miliónov používateľov.
Predtým, ako sa budeme zaoberať týmto problémom, pozrime sa, ako to funguje webRequest API porovnáva s deklarativeNetRequest API.
Web Request API a Declarative Net Request API
Darček
Oficiálny popis webovej požiadavky popisuje API takto:
Use the chrome.webRequest
API to observe and analyze traffic and to intercept, block, or modify requests in-flight.
Pomocou webovej požiadavky Chrome odošle všetky údaje v sieťovej požiadavke na rozšírenie, ktoré na ne počúva. Rozšírenie má potom možnosť vyhodnotiť žiadosť a inštruovať Chrome, čo má so žiadosťou urobiť: povoliť, zablokovať alebo odoslať s určitými úpravami.
Postupujte podľa sledu udalostí, aby ste pochopili, čo sa deje, keď rozšírenia používajú rozhranie Web Request API. Keď používateľ s nainštalovaným rozšírením Web Request klikne na odkaz, Chrome informuje rozšírenie o tom, že bola zadaná žiadosť o údaje ešte predtým, ako sa žiadosť dostane na server. Rozšírenie sa môže rozhodnúť v tejto fáze žiadosť upraviť. Server potom odpovie, ale odpoveď ešte raz prejde cez rozšírenie a rozšírenie môže diktovať, či je potrebné odpoveď upraviť. Chrome potom nakoniec vykreslí stránku a používateľ si môže pozrieť výsledok svojej akcie kliknutia.
Ako Chrome odovzdáva všetky údaje v požiadavke siete, rozšírenia, ktoré používajú rozhranie Web Request API, majú prístup na čítanie a úpravu všetkého, čo používateľ robí na webe. Takže zatiaľ čo blokátory obsahu ako uBlock Origin múdro využívajú potenciál tohto API, Google to tvrdí iné rozšírenia so zlými úmyslami to isté zneužili na získanie prístupu k osobným údajom používateľov informácie. Podľa Google 42 % škodlivých rozšírení používalo od januára 2018 rozhranie Web Request API. Google tiež tvrdí, že s API ako blokujúcou verziou sú spojené „značné náklady na výkon“. vyžaduje si trvalý a často dlhotrvajúci proces, ktorý je v zásade nezlučiteľný s „lenivým“ procesy.
S Manifestom V3 Google navrhuje obmedziť toto API vo forme blokovania. Ako alternatívu Google poskytuje rozhranie Declarative Net Request API.
Budúcnosť
Oficiálny popis Declarative Net Request popisuje API nasledovne:
The chrome.declarativeNetRequest
API is used to block or modify network requests by specifying declarative rules.
Vďaka deklaratívnej sieťovej požiadavke Chrome nemusí odosielať všetky informácie o žiadosti do počúvacieho rozšírenia. Namiesto toho rozšírenie zaregistruje pravidlá v prehliadači Chrome, ktoré prehliadaču vopred oznámia, čo má robiť, ak sa objavia určité typy žiadostí.
Rozšírenie vopred špecifikuje svoje pravidlá. Požiadavku používateľov potom prehliadač (a nie rozšírenie) porovná s týmto pravidlom a prehliadač tiež vykoná akciu a následne sa vykreslí stránka. Google uvádza, že im to umožňuje zabezpečiť efektivitu, pretože môžu vykonávať kontrolu nad algoritmom určujúcim výsledok a môžu zabrániť alebo deaktivovať neefektívne pravidlá. Koncovému používateľovi tiež poskytuje lepšie záruky ochrany súkromia, keďže podrobnosti o sieťovej požiadavke nie sú vystavené rozšíreniu. Keďže pretrvávajúce a dlhotrvajúce procesy už nie sú potrebné (keďže pravidlá sú zaregistrované vopred), Google to tvrdí tento prístup tiež prináša vylepšenia výkonu, vďaka ktorým budú rozšírenia podstatne životaschopnejšie pri obmedzených zdrojoch platformy.
Declarative Net Request bude k dispozícii pre Manifest V2 (aktuálny) aj Manifest V3, ale bude to primárny spôsob, akým Google umožní úpravu sieťových požiadaviek v Manifest V3.
Kontroverzia
Zdá sa, že zmeny od Googlu dávajú zmysel, kým si nevypočujete druhú stranu príbehu, najmä blokovanie reklám. Táto konkrétna migrácia rozhrania API sa považuje za spôsob, akým spoločnosť Google odstraňuje blokátory reklám, pretože zásadne mení spôsob, akým funguje jeden z najpopulárnejších blokátorov reklám. To súvisí s "teóriou", že Google je motivovaný k tejto zmene viac z obchodného hľadiska ako z hľadiska bezpečnosti používateľov. Koniec koncov, Google je pri svojich príjmoch silne závislý od reklamy a blokátory reklám sú na tomto fronte vnímané ako priama hrozba pre klientov Google, ako sa ukázalo prostredníctvom Podanie formulára 10-K spoločnosti Alphabet pre rok 2018 SEC (cez Register):
Nové a existujúce technológie by mohli ovplyvniť našu schopnosť prispôsobovať reklamy a/alebo by mohli blokovať reklamy online, čo by poškodilo naše podnikanie.
Boli vyvinuté technológie s cieľom sťažiť prispôsobiteľné reklamy alebo úplne zablokovať zobrazovanie reklám a niektorí poskytovatelia online služieb majú integrované technológie, ktoré by mohli potenciálne narušiť základnú funkčnosť digitálnych služieb tretích strán reklama. Väčšina našich príjmov Google pochádza z poplatkov, ktoré nám platia v súvislosti so zobrazovaním reklám online. V dôsledku toho by takéto technológie a nástroje mohli nepriaznivo ovplyvniť naše prevádzkové výsledky.
Google musel vydať vyhlásenie na vyriešenie tohto problému, pričom opakuje svoj postoj, že zmena je v záujme súkromia používateľov a nie je priamym útokom proti blokovačom reklám:
Nebránime vývoju blokovačov reklám ani nebránime používateľom blokovať reklamy. Namiesto toho chceme pomôcť vývojárom, vrátane blokátorov obsahu, písať rozšírenia spôsobom, ktorý chráni súkromie používateľov.
Je potrebné poukázať na dva z najpopulárnejších blokátorov reklám dostupných v prehliadači Google Chrome: uBlock Origin a Adblock Plus, pričom obe využívajú rôzne prístupy na dosiahnutie rovnakého výsledku blokovania obsahu. uBlock Origin sa vo veľkej miere spolieha na Web Request API a komunita v priebehu rokov uprednostňuje toto rozšírenie. Adblock Plus a ďalšie rozšírenia na blokovanie obsahu sa tiež spoliehajú na blokovaciu časť Web Request, takže zmeny tohto API nakoniec ovplyvnia väčšinu blokátorov obsahu aspoň do určitej miery.
Snaha spoločnosti Google zamietnuť Web Request v podstate zabije uBlock Origin v jeho súčasnom formáte, čo skutočne ovplyvní veľa používateľov. Zatiaľ čo používatelia bez lojality (a bez úmyslu obťažovať sa tým, ako sa dosiahne blokovanie reklám) nájdu alternatívne riešenia, ktoré majú svoje vlastné nevýhody, bude nemožné pre verných a nadšencov, aby prišli s novými návrhmi filtrovacích nástrojov na obídenie rôznych techník, s ktorými webové stránky nakoniec prídu na boj proti blokovačom reklám na tomto špecifickom rozhraní API.
Declarative Net Request bola tiež navrhnutá ako pomerne obmedzený filtrovací nástroj pôvodne plánované mať limit 30 000 pravidiel pre pravidlá statického filtra na rozšírenie (pravidlá, ktoré sú deklarované počas inštalácie); a limit 5 000 pravidiel pre pravidlá dynamického filtrovania na rozšírenie (pravidlá, ktoré možno pridať po inštalácii). Akékoľvek prebytočné pravidlá budú ignorované, čo je trochu problém, pretože samotný EasyList pre Adblock Plus má 70 000 pravidiel, zatiaľ čo uBlock Origin je možné nakonfigurovať tak, aby fungoval s viac ako 100 000 pravidlami. Po počiatočnom odpore zo strany komunity, Google odpovedal sľubom zmeniť limit statických pravidiel z 30 000 pravidiel na rozšírenie na globálne maximum 150 000 pravidiel. To má potom vedľajší účinok, že používateľom bráni v používaní iných skriptov náročných na pravidlá v spojení s blokovačom reklám, takže používatelia budú musieť žonglovať so svojimi preferenciami.
Iná ako obmedzený limit filtrovania, deklaratívna čistá požiadavka môže presmerovať iba na statické adresy URL, takže nie je zahrnutá podpora pre porovnávanie vzorov. uBlock Origin sa vo veľkej miere spolieha na porovnávanie vzorov a vývojára rozšírenia uviedol, že nie je možná dodatočná montáž algoritmus zhody jeho rozšírenia, aby splnil požiadavku na rozhrania API. Rozhranie API by tiež vyžadovalo úplnú aktualizáciu rozšírenia, aby sa jednoducho aktualizoval zoznam filtrov, čo by vzhľadom na to bola príliš častá aktivita frekvenciu, s akou sa tieto zoznamy filtrov aktualizujú. Samozrejme, tieto aktualizácie budú závisieť aj od kritérií a procesov kontroly rozšírení spoločnosti Google.
Na druhej strane, Google vždy zastával svoj postoj, že jeho zámer odkloniť sa od Web Request je od a z bezpečnostného hľadiska, pretože rozhranie Web Request API je vo svojej súčasnej podobe príliš výkonné a ponecháva otvorený veľmi široký priestor zneužívanie. Toto zneužitie nie je len teoretické, pretože Google spomenul, že 42 % škodlivých rozšírení zneužilo toto API. Apple Safari Content Blocker API bol navrhnutý ako Declarative Net Request z podobných dôvodov, pretože je tu menší priestor na zneužitie pre nečestného vývojára. Na nerfovanej webovej požiadavke by boli sieťové požiadavky stále viditeľné, ale potrebovali by povolenia na príslušných hostiteľoch. S Manifest V3 sa výrazne menia aj oprávnenia hostiteľa a už ich nemožno udeľovať plošným spôsobom pri inštalácii.
Google tiež použil režijné náklady na výkon ako motiváciu pre zmenu. Vyhodnotenie sieťových požiadaviek prebieha vo vlákne JavaScript rozšírenia, čo môže byť nákladné z hľadiska výkonu. Ako vyvrátenie, vývojár uBlock Origin uvádza, že jeho rozšírenie nespôsobuje žiadnu výraznú výkonnostnú pokutu dokonca aj vtedy, keď je potrebné vynútiť až 140 000 statických filtrov. Tvrdí sa, že vzniknuté náklady sa dajú ľahko získať späť zo zdrojov, ktoré nemožno stiahnuť zo vzdialených serverov, a teda ich prehliadač nespracuje.
Aj keď spoločnosť Google nepoužíva toto zdôvodnenie, jeden argument proti webovej požiadavke možno uviesť aj pre efektívnosť blokovania reklám. V prípade webovej požiadavky, ak rozšírenie neodpovedá včas (kvôli oneskoreniu alebo zlyhaniu), požiadavka na spracovanie siete je jednoznačne povolená, čo umožňuje reklamám prechádzať cez blokovanie reklám. Na druhej strane deklaratívna čistá požiadavka by touto nevýhodou netrpela. Namiesto toho reklamy prejdú, ak sa nezachytia v rámci statických pravidiel, a to sa stane častejšie.
Záver
Z vyššie uvedených vysvetlení je jasné, že deklaratívna sieťová požiadavka nie je funkčným klonom 1:1 pre blokovanie schopnosti rozhrania Web Request API a vývojári rozšírení budú určite znepokojení, keď ich tvrdá práca bude znevýhodnená takéto zmeny. Zdôvodnenie spoločnosti Google má však tiež váhu – Web Request je príliš silný a jeho právomoci musia byť obmedzené vo väčšom záujme komunity používateľov (ktorá pozostáva z priemerných používateľov spolu s nadšenci).
Posun smerom k Declarative Net Request mohol byť tiež pozitívnym krokom PR – napokon, Google pridáva do prehliadača Chrome vstavané API na blokovanie obsahu! Ale keďže nové API prichádza s vlastnými prísnymi obmedzeniami, komunita to oprávnene vníma ako pristrihnutie krídel. V ideálnom svete by mala spoločnosť Google preskúmať fungovanie blokátorov reklám, ako je uBlock Origin, predtým, ako presadí nové API. V súčasnej podobe by nové rozhranie API mohlo využiť ďalšie uvoľnenia limitov pravidiel na prispôsobenie sa scenárom, v ktorých by používatelia chceli použiť dve rozšírenia s vysokým obsahom filtrov.
Podľa Register, prvé zostavy so zmenami Manifest V3 budú k dispozícii od júla 2019. Dúfame, že spoločnosť Google pri týchto zostavách vyhovie spätnej väzbe od komunity vývojárov rozšírení.
Špeciálne poďakovanie patrí šéfredaktorovi XDA Mishaalovi Rahmanovi za jeho príspevky a pomoc!
Upraviť: Článok nesprávne prirovnal prácu Adblock Plus k práci rozhrania Declarative Net Request API. Článok bol zodpovedajúcim spôsobom upravený. Adblock Plus bude tiež ovplyvnený odstránením blokovacích schopností Web Request API.