Googleov Manifest V3 promijenit će način na koji funkcioniraju proširenja Chromea za blokiranje oglasa: Da li ih osakati ili radi sigurnosti?

click fraud protection

Nadolazeći Manifest V3 za proširenja za Google Chrome promijenit će način rada blokatora oglasa u Chromeu. Je li ovo pravi put naprijed za blokatore oglasa i Google?

Google Chrome je trenutno najpopularniji višeplatformski web preglednik dostupan na tržištu, zauzima 62,7% udjela u globalnom korištenju preglednika do svibnja 2019., s Appleovim Safarijem na drugom mjestu s 15,89%, a Mozilla Firefoxom s 5,07%. Zbog svog lavljeg udjela, i najmanje promjene koje Google Chrome poduzima za svoju platformu na kraju utječu na milijune korisnika diljem svijeta. Dakle, kada je Google najavio sljedeću verziju manifesta proširenja u obliku Manifesta V3 za Google Chrome proširenja, znali smo da čekale su velike promjene, posebno kada je izašlo na vidjelo da Google u Chrome ugrađuje API za blokiranje sadržaja sebe.

Što je Manifest V3?

Ako ste aktivni korisnik Chromea, nedvojbeno koristite nekoliko proširenja. Proširenja su mali softverski programi koji prilagođavaju iskustvo pregledavanja pomoću API-ji koje nudi preglednik

, omogućujući korisnicima da prilagode funkcionalnost i ponašanje svojim individualnim potrebama i preferencijama. Ova proširenja distribuiraju se uglavnom putem Chrome web trgovina, koji je dom za više od 180.000 proširenja.

Od krajem prošle godine, Google radi na "Manifestu V3", skupu predloženih promjena na platformi Chrome Extensions koje se mogu klasificirati kao "prijelomne promjene". Kao dokument javne rasprave za Manifest V3 navodi, verzija manifesta proširenja mehanizam je za ograničavanje određenih mogućnosti na određenu klasu proširenja. Ova ograničenja mogu biti u obliku minimalne ili maksimalne verzije. Ograničenje na minimalnu verziju omogućuje da noviji API-ji ili mogućnosti budu dostupni samo novijim proširenjima dok ograničavanje na maksimalnu verziju manifesta omogućuje postupno uklanjanje starijih API-ja ili mogućnosti zastario.

Jednostavnije rečeno, nova verzija manifesta omogućuje Chromeu da ograniči API-je i značajke na ovu novu verziju manifesta, u kako bi se programeri proširenja prisilili da migriraju s određenih starijih API-ja zbog njihovog negativnog utjecaja na korisnika iskustvo. Implementacija proširenja u Manifest V3 bi teoretski trebala pružiti jača jamstva iz perspektive sigurnosti, privatnosti i performansi.

Iako postoji širok raspon promjena navedenih u Manifestu V3, najkontroverznija promjena odnosi se na Googleovu odluku da ograniči mogućnosti blokiranja prisutne u postojećem chrome.webRequest API (i fokusirajte API na promatranje umjesto na blokiranje), a zatim predstavite te sposobnosti blokiranja kroz novi chrome.declarativeNetRequest API. Ova posebna promjena ima raspalio zajednicu budući da na kraju cilja na mehanizam za blokiranje oglasa poznatog proširenja za blokiranje oglasa, uBlock Izvor, i izravno utječe na njegovih više od 10 milijuna korisnika.

Prije nego što se pozabavimo ovim problemom, pogledajmo kako webZahtjev API se uspoređuje s deklarativni NetZahtjev API.

Web Request API i Declarative Net Request API

Sadašnjost

Službeni opis Web Requesta opisuje API na sljedeći način:

Use the chrome.webRequest API to observe and analyze traffic and to intercept, block, or modify requests in-flight.

Uz Web zahtjev, Chrome šalje svi podaci u mrežnom zahtjevu proširenju koje ih sluša. Proširenje tada ima priliku procijeniti zahtjev i uputiti Chrome što treba učiniti sa zahtjevom: dopustiti ga, blokirati ga ili ga poslati s nekim izmjenama.

Pratite slijed događaja kako biste razumjeli što se događa kada proširenja koriste API za web zahtjeve. Kada korisnik s instaliranim proširenjem Web Request klikne vezu, Chrome obavještava proširenje da je zahtjev za podacima poslan prije nego što zahtjev stigne do poslužitelja. Proširenje može odabrati izmjenu zahtjeva u ovoj fazi. Poslužitelj tada odgovara, ali odgovor još jednom prolazi kroz ekstenziju, a ekstenzija može diktirati treba li se odgovor modificirati. Chrome tada konačno prikazuje stranicu i korisnik može vidjeti rezultat svoje radnje klika.

Dok Chrome predaje sve podatke u mrežnom zahtjevu, proširenja koja koriste Web Request API imaju pristup čitanju i modificiranju svega što korisnik radi na webu. Dok blokatori sadržaja poput uBlock Origin mudro iskorištavaju potencijal ovog API-ja, Google tvrdi da druge ekstenzije sa zlonamjernim namjerama zloupotrijebile su iste kako bi dobile pristup osobnim podacima korisnika informacija. Prema Googleu, 42% zlonamjernih ekstenzija koristilo je API za web zahtjeve od siječnja 2018. Google također tvrdi da postoje "značajni troškovi izvedbe" uključeni u API kao verziju za blokiranje za to je potreban uporan i često dugotrajan proces koji je u osnovi nekompatibilan s 'lijenim' procesima.

Uz Manifest V3, Google predlaže ograničavanje ovog API-ja u obliku blokiranja. Kao alternativu, Google nudi Declarative Net Request API.

Budućnost

Službeni opis Declarative Net Request opisuje API na sljedeći način:

The chrome.declarativeNetRequest API is used to block or modify network requests by specifying declarative rules.

Uz Declarative Net Request, Chrome ne mora poslati sve informacije o zahtjevu proširenju za slušanje. Umjesto toga, proširenje registrira pravila u Chromeu koja pregledniku unaprijed govore što treba učiniti ako se vide određene vrste zahtjeva.

Proširenje unaprijed specificira svoja pravila. Zahtjev korisnika zatim preglednik (a ne proširenje) uspoređuje s ovim pravilom, a radnju također poduzima preglednik, a stranica se naknadno prikazuje. Google napominje da im to omogućuje da osiguraju učinkovitost jer mogu kontrolirati algoritam koji određuje rezultat i mogu spriječiti ili onemogućiti neučinkovita pravila. Također predstavlja bolja jamstva privatnosti krajnjem korisniku budući da detalji mrežnog zahtjeva nisu izloženi proširenju. Budući da trajni i dugotrajni procesi više nisu potrebni (budući da su pravila registrirana unaprijed), Google tvrdi da ovaj pristup također donosi poboljšanja performansi koja će proširenja učiniti značajno održivijima na ograničenim resursima platforme.

Deklarativni mrežni zahtjev bit će dostupan i za Manifest V2 (trenutni) i za Manifest V3, ali to će biti primarni način na koji će Google dopustiti izmjenu mrežnih zahtjeva u Manifestu V3.

Kontroverza

Čini se da Googleove promjene imaju smisla dok ne čujete drugu stranu priče, uglavnom onu ​​o blokatorima oglasa. Ova posebna migracija API-ja smatra se načinom na koji Google uništava blokatore oglasa jer iz temelja mijenja način na koji jedan od najpopularnijih blokatora oglasa funkcionira. To je povezano s "teorijom" da je Google motiviran za ovu promjenu više iz poslovne perspektive nego iz perspektive sigurnosti korisnika. Naposljetku, Google se uvelike oslanja na oglašavanje za svoje prihode, a blokatori oglasa doživljavaju se kao izravna prijetnja za Googleove klijente na tom planu, kao što je otkriveno kroz Alphabetov SEC obrazac 10-K za 2018. godinu (preko Registar):

Nove i postojeće tehnologije mogle bi utjecati na našu sposobnost prilagođavanja oglasa i/ili blokirati oglase na mreži, što bi naštetilo našem poslovanju.

Razvijene su tehnologije koje otežavaju prilagodljive oglase ili potpuno blokiraju prikazivanje oglasa, a neki pružatelji online usluga imaju integrirane tehnologije koje bi potencijalno mogle narušiti temeljnu funkcionalnost digitalnih usluga trećih strana oglašavanje. Većina naših Googleovih prihoda dolazi od naknada koje nam se plaćaju u vezi s prikazivanjem oglasa na mreži. Kao rezultat toga, takve tehnologije i alati mogu negativno utjecati na naše poslovne rezultate.

Google je morao objaviti izjavu kako bi to riješio, ponavljajući svoj stav da je promjena u interesu privatnosti korisnika, a ne izravni napad na blokatore oglasa:

Ne sprječavamo razvoj blokatora oglasa niti sprječavamo korisnike da blokiraju oglase. Umjesto toga, želimo pomoći programerima, uključujući programe za blokiranje sadržaja, da pišu proširenja na način koji štiti privatnost korisnika.

Potrebno je spomenuti dva najpopularnija programa za blokiranje oglasa dostupnih u pregledniku Google Chrome: uBlock Izvor i Adblock Plus, a oba koriste različite pristupe za postizanje istog rezultata blokiranja sadržaja. uBlock Origin uvelike se oslanja na Web Request API, a zajednica je tijekom godina dala prednost ovom proširenju. Adblock Plus i druga proširenja za blokiranje sadržaja također se oslanjaju na blokirajući dio Web Requesta, tako da će promjene ovog API-ja na kraju utjecati na većinu blokatora sadržaja barem u nekom svojstvu.

Googleov pritisak da obustavi Web Request u biti će uništiti uBlock Origin u njegovom sadašnjem formatu, nešto što će doista utjecati na mnoge korisnike. Dok će korisnici bez lojalnosti (i bez namjere da se zamaraju time kako se postiže blokada oglasa) pronaći alternativna rješenja koja dolaze s vlastitim nedostacima, to će postati nemoguće za lojaliste i entuzijaste da osmisle nove dizajne mehanizama za filtriranje kako bi zaobišli različite tehnike koje će web stranice na kraju osmisliti za borbu protiv blokatora oglasa na ovom specifičnom API-ju.

Predloženo je da će Declarative Net Request biti prilično ograničen stroj za filtriranje, kakav je i bio u početku planirano imati ograničenje od 30 000 pravila za pravila statičkog filtra po ekstenziji (pravila koja se deklariraju tijekom instalacije); i ograničenje od 5000 pravila za pravila dinamičkog filtra po ekstenziji (pravila koja se mogu dodati nakon instalacije). Sva viška pravila bit će zanemarena, što je mali problem jer sam EasyList za Adblock Plus ima 70.000 pravila, dok se uBlock Origin može konfigurirati za rad s više od 100.000 pravila. Nakon početne reakcije zajednice, Google je odgovorio obećanjem da će promijeniti ograničenje statičkih pravila s 30 000 pravila po proširenju na globalni maksimum od 150 000 pravila. To onda ima nuspojavu onemogućavanja korisnika da koriste druge skripte s teškim pravilima u kombinaciji s blokatorom oglasa, tako da će korisnici morati žonglirati sa svojim preferencijama.

Osim ograničenog ograničenja filtriranja, deklarativni mrežni zahtjev može samo preusmjeriti na statične URL-ove, tako da nema uključene podrške za podudaranje uzoraka. uBlock Origin uvelike se oslanja na podudaranje uzoraka i programera proširenja navedeno da nije moguće naknadno ugraditi algoritam za podudaranje njegovog proširenja kako bi zadovoljio zahtjev API-ja. API bi također zahtijevao potpuno ažuriranje proširenja kako bi se jednostavno ažurirao popis filtera, što bi bila prečesta aktivnost s obzirom na učestalost ažuriranja ovih popisa filtara. Naravno, ova ažuriranja također bi ovisila o Googleovim kriterijima i procesima pregleda proširenja.

S druge strane, Google je uvijek zastupao svoj stav da je njegova namjera da se udalji od Web Requesta od a sigurnosne perspektive, jer je Web Request API previše moćan u svom trenutnom obliku i ostavlja vrlo širok prostor za zlostavljanje. Ova zlouporaba nije samo teoretska, budući da je Google spomenuo da je 42% zlonamjernih proširenja zlorabilo ovaj API. Apple Safari API za blokiranje sadržaja je dizajniran kao Declarative Net Request iz sličnih razloga, budući da ima manje prostora za iskorištavanje lažnog programera. Na nerviranom web zahtjevu, mrežni zahtjevi bi i dalje bili vidljivi, ali bi im trebale dozvole na relevantnim hostovima. Uz Manifest V3, dopuštenja hosta također se značajno mijenjaju i više se ne mogu dodijeliti na opći način tijekom instalacije.

Google je također koristio režijske troškove izvedbe kao motivator za promjenu. Procjena mrežnih zahtjeva odvija se u JavaScript niti proširenja, što može biti skupo za izvedbu. Kao opovrgavanje, programer uBlock Origin-a spominje da njegovo proširenje ne dovodi do značajne kazne za rad čak i kada imate čak 140.000 statičkih filtara za provođenje. Tvrdi se da se nastali troškovi lako mogu nadoknaditi resursima koji se ne mogu preuzeti s udaljenih poslužitelja i stoga ih preglednik ne obrađuje.

Iako se Google ne koristi ovim obrazloženjem, jedan argument protiv web zahtjeva također se može iznijeti za učinkovitost kod blokiranja oglasa. S web zahtjevom, ako ekstenzija ne odgovori na vrijeme (zbog kašnjenja ili pada), zahtjev za mrežno rukovanje jasno je dopušten, što dopušta oglasima da prođu kroz program za blokiranje oglasa. Declarative Net Request, s druge strane, ne bi imao ovaj nedostatak. Umjesto toga, oglasi će proći ako ne budu uhvaćeni unutar statičkih pravila, a to će se događati češće nego inače.

Zaključak

Iz gornjih objašnjenja jasno je da Declarative Net Request nije funkcionalni klon 1:1 za blokiranje mogućnostima Web Request API-ja, a programeri proširenja sigurno će biti ozlojeđeni kada će njihov naporan rad biti onemogućen takve promjene. Ali Googleovo razmišljanje također ima težinu - Web Request je previše moćan, a njegove ovlasti trebaju biti ograničeno u većem interesu korisničke zajednice (koja se sastoji od prosječnih korisnika zajedno s entuzijasti).

Prelazak na Declarative Net Request također je mogao biti pozitivan PR potez - na kraju krajeva, Google Chromeu dodaje ugrađeni API za blokiranje sadržaja! Ali budući da novi API dolazi sa svojim teškim ograničenjima, zajednica to s pravom vidi kao podrezivanje krila. U idealnom svijetu, Google je trebao istražiti rad blokatora oglasa kao što je uBlock Origin prije nego što je izbacio novi API. Kako sada stoji, novi API bi mogao koristiti daljnja opuštanja svojih ograničenja pravila kako bi se prilagodio scenarijima u kojima bi korisnici željeli koristiti dva proširenja s velikim brojem filtara.

Prema Registar, prve verzije s promjenama Manifest V3 bit će dostupne od srpnja 2019. nadalje. Nadamo se da će Google prilagoditi povratne informacije dobivene od zajednice programera proširenja s ovim verzijama.


Posebna zahvala glavnom uredniku XDA Mishaalu Rahmanu na doprinosu i pomoći!

Uredi: članak je netočno izjednačio rad Adblock Plusa s radom Declarative Net Request API-ja. Članak je sukladno tome izmijenjen. Na Adblock Plus također će utjecati uklanjanje mogućnosti blokiranja Web Request API-ja.