Tuleva Manifest V3 Google Chrome -laajennuksille muuttaa mainosten estotoimintojen toimintaa Chromessa. Onko tämä oikea tapa eteenpäin mainosten estäjille ja Googlelle?
Google Chrome on tällä hetkellä markkinoiden suosituin monikäyttöinen verkkoselain, omistaa 62,7 % maailmanlaajuisesta selaimen käyttöosuudesta toukokuuhun 2019 asti, kun Applen Safari oli toisella puolella 15,89 prosentilla ja Mozillan Firefox 5,07 prosentilla. Leijonanosan vuoksi Google Chromen alustaan tekemät pienimmät muutokset vaikuttavat miljooniin käyttäjiin ympäri maailmaa. Joten kun Google julkisti seuraavan laajennusluetteloversion Manifest V3:n muodossa Google Chrome Extensionsille, tiesimme, että oli suuria muutoksia edessä, varsinkin kun kävi ilmi, että Google oli rakentamassa sisällön estosovellusliittymää Chromeen itse.
Mikä on Manifest V3?
Jos olet aktiivinen Chromen käyttäjä, käytät epäilemättä muutamia laajennuksia. Laajennukset ovat pieniä ohjelmia, jotka mukauttavat selauskokemusta käyttämällä selaimen tarjoamat sovellusliittymät
, jonka avulla käyttäjät voivat räätälöidä toimintoja ja käyttäytymistä yksilöllisten tarpeidensa ja mieltymyksiensä mukaan. Näitä laajennuksia jaetaan pääasiassa Chrome Web Store, jossa on yli 180 000 laajennusta.Siitä asti kun viime vuoden lopulla, Google on työskennellyt Manifest V3:n parissa. Se on joukko ehdotettuja muutoksia Chrome Extensions -alustaan, jotka voidaan luokitella "rikkoviksi muutoksiksi". Kuten Manifest V3:n julkinen keskusteluasiakirja toteaa, että laajennusluetteloversio on mekanismi, jolla rajoitetaan tietyt ominaisuudet tiettyyn laajennusluokkaan. Nämä rajoitukset voivat olla joko vähimmäis- tai enimmäisversion muodossa. Vähimmäisversioon rajoittaminen sallii uudempien sovellusliittymien tai ominaisuuksien olevan saatavilla vain uudemmille laajennuksille kun taas rajoittaminen enimmäisluetteloversioon mahdollistaa vanhempien sovellusliittymien tai ominaisuuksien asteittaisen käytön poistettu käytöstä.
Yksinkertaisemmin sanottuna uusi luetteloversio antaa Chromelle mahdollisuuden rajoittaa sovellusliittymiä ja ominaisuuksia tähän uuteen luetteloversioon pakottaakseen laajennuskehittäjät siirtymään pois tietyistä vanhemmista sovellusliittymistä, koska ne vaikuttavat negatiivisesti käyttäjään kokea. Laajennuksen toteuttamisen Manifest V3:ssa pitäisi teoriassa tarjota vahvemmat takeet turvallisuuden, yksityisyyden ja suorituskyvyn näkökulmasta.
Vaikka Manifest V3:ssa on hahmoteltu monia muutoksia, kiistanalaisin muutos liittyy Googlen päätökseen rajoittaa olemassa olevia estokykyjä. chrome.webRequest API (ja keskitä API havainnointiin estämisen sijaan) ja esittele sitten nämä estokyvyt uudella chrome.declarativeNetRequest API. Tämä nimenomainen muutos on kiihotti yhteisöä koska se päätyy kohdistamaan kuuluisan mainosten estolaajennuksen mainosten estomekanismiin, uBlock-alkuperä, ja se vaikuttaa suoraan sen yli 10 miljoonaan käyttäjään.
Ennen kuin käsittelemme tätä ongelmaa, katsotaanpa, kuinka webRequest API verrattuna DeclarativeNetRequest API.
Web Request API ja Declarative Net Request API
nykyhetki
Web Requestin virallinen kuvaus kuvaa sovellusliittymää seuraavasti:
Use the chrome.webRequest
API to observe and analyze traffic and to intercept, block, or modify requests in-flight.
Web Requestin avulla Chrome lähettää kaikki verkkopyynnön tiedot sitä kuuntelevalle alaliittymälle. Laajennuksella on sitten mahdollisuus arvioida pyyntö ja opastaa Chromea, mitä pyynnölle tulee tehdä: sallia se, estää se tai lähettää se tietyin muokkauksin.
Seuraa tapahtumasarjaa ymmärtääksesi, mitä tapahtuu, kun laajennukset käyttävät Web Request APIa. Kun käyttäjä, jolla on Web Request -laajennus asennettuna, napsauttaa linkkiä, Chrome ilmoittaa laajennukselle, että tietopyyntö on tehty, ennen kuin pyyntö saapuu palvelimelle. Laajennus voi halutessaan muuttaa pyyntöä tässä vaiheessa. Palvelin vastaa sitten, mutta vastaus menee jälleen laajennuksen kautta, ja laajennus voi sanella, tarvitseeko vastausta muokata. Lopulta Chrome renderöi sivun ja käyttäjä voi nähdä napsautustoimintonsa tuloksen.
Kun Chrome luovuttaa kaikki verkkopyynnön tiedot, Web Request API -sovellusliittymää käyttävillä laajennuksilla on oikeus lukea ja muokata kaikkea, mitä käyttäjä tekee verkossa. Joten vaikka sisällön estäjät, kuten uBlock Origin, käyttävät viisaasti tämän API: n potentiaalia, Google väittää, että muut laajennukset, joilla on ilkeä tarkoitus, ovat käyttäneet niitä väärin päästäkseen käyttäjien henkilökohtaisiin tietoihin tiedot. Googlen mukaan 42 % haitallisista laajennuksista on käyttänyt Web Request APIa tammikuun 2018 jälkeen. Google väittää myös, että sovellusliittymään estävänä versiona liittyy "merkittäviä suorituskykykustannuksia". se vaatii jatkuvaa ja usein pitkäkestoista prosessia, joka on pohjimmiltaan ristiriidassa "laiskuuden" kanssa. prosessit.
Manifest V3:lla Google ehdottaa tämän sovellusliittymän rajoittamista estävässä muodossaan. Vaihtoehtona Google tarjoaa Declarative Net Request APIn.
Tulevaisuus
Declarative Net Requestin virallinen kuvaus kuvaa API: ta seuraavasti:
The chrome.declarativeNetRequest
API is used to block or modify network requests by specifying declarative rules.
Declarative Net Request -sovelluksella Chromen ei tarvitse lähettää kaikkia pyynnön tietoja kuuntelulaajennukseen. Sen sijaan laajennus rekisteröi Chromeen säännöt, jotka kertovat selaimelle etukäteen, mitä tehdä, jos tietyntyyppisiä pyyntöjä nähdään.
Laajennus määrittelee säännöt etukäteen. Sen jälkeen selain (eikä laajennus) vertaa käyttäjien pyyntöä tähän sääntöön, ja myös selain suorittaa toiminnon ja sivu hahmonnetaan myöhemmin. Google mainitsee, että näin he voivat varmistaa tehokkuuden, koska he voivat hallita tuloksen määrittävää algoritmia ja estää tehottomia sääntöjä tai poistaa ne käytöstä. Se tarjoaa myös paremmat tietosuojatakuut loppukäyttäjälle, koska verkkopyynnön yksityiskohdat eivät ole alttiina laajennukselle. Koska pysyviä ja pitkiä prosesseja ei enää tarvita (koska säännöt on rekisteröity etukäteen), Google väittää, että Tämä lähestymistapa tuo myös suorituskyvyn parannuksia, jotka tekevät laajennuksista huomattavasti kannattavampia resurssirajoitteisissa olosuhteissa alustat.
Declarative Net Request on saatavilla sekä Manifest V2:lle (nykyinen) että Manifest V3:lle, mutta se on ensisijainen tapa, jolla Google sallii verkkopyyntöjen muokkaamisen Manifest V3:ssa.
Kiista
Googlen muutokset vaikuttavat järkeviltä, kunnes kuulet tarinan toisen puolen, lähinnä mainosten esto-ohjelmien. Tätä tiettyä API-siirtoa pidetään Googlen tapana tappaa mainosten estäjät, koska se muuttaa perusteellisesti tapaa, jolla yksi suosituimmista mainosten estäjistä toimii. Tämä liittyy "teoriaan", jonka mukaan Google on motivoitunut tähän muutokseen enemmän liiketoiminnan kuin käyttäjien turvallisuuden näkökulmasta. Loppujen lopuksi Google on erittäin riippuvainen mainonnasta tulojensa saamiseksi, ja mainosten estäjät nähdään suorana uhkana Googlen asiakkaille tällä rintamalla, kuten kävi ilmi. Alphabetin vuoden 2018 SEC-lomake 10-K (kautta Rekisteri):
Uudet ja olemassa olevat tekniikat voivat vaikuttaa kykyymme muokata mainoksia ja/tai estää mainoksia verkossa, mikä vahingoittaisi liiketoimintaamme.
On kehitetty tekniikoita, jotka tekevät muokattavissa olevista mainoksista vaikeampia tai estävät mainosten näyttämisen kokonaan ja jotkut palveluntarjoajat Verkkopalveluissa on integroituja teknologioita, jotka voivat mahdollisesti heikentää kolmannen osapuolen digitaalisen palvelun ydintoimintoja mainonta. Suurin osa Google-tuloistamme tulee maksuista, jotka on maksettu meille mainosten näyttämisen yhteydessä verkossa. Tämän seurauksena tällaiset tekniikat ja työkalut voivat vaikuttaa haitallisesti toimintatuloksiimme.
Googlen oli pakko julkaise lausunto korjatakseen tämän ja toistaa kantansa, jonka mukaan muutos on käyttäjien yksityisyyden edun mukainen eikä suora hyökkäys mainosten estäjiä vastaan:
Emme estä mainosten estäjien kehittämistä tai estä käyttäjiä estämään mainoksia. Sen sijaan haluamme auttaa kehittäjiä, mukaan lukien sisällön estäjät, kirjoittamaan laajennuksia tavalla, joka suojaa käyttäjien yksityisyyttä.
On viitattava kahteen Google Chromen suosituimpiin mainosten estoon: uBlock-alkuperä ja Adblock Plus, jotka molemmat käyttävät erilaisia lähestymistapoja saavuttaakseen saman sisällön eston tuloksen. uBlock Origin on vahvasti riippuvainen Web Request API: sta, ja yhteisö on suosinut tätä laajennusta vuosien ajan. Adblock Plus ja muut sisällön estolaajennukset ovat myös riippuvaisia Web Requestin esto-osuudesta, joten tämän API: n muutokset vaikuttavat useimpiin sisällön estäjiin ainakin jossain määrin.
Googlen pyrkimys poistaa Web Request käytöstä tappaa uBlock Originin sen nykyisessä muodossa, mikä todellakin vaikuttaa moniin käyttäjiin. Vaikka käyttäjät, joilla ei ole uskollisuutta (ja joilla ei ole aikomusta vaivautua mainosblokin saavuttamiseen), löytävät vaihtoehtoisia ratkaisuja, joilla on omat haittapuolensa, mutta siitä tulee mahdotonta uskolliset ja harrastajat voivat keksiä uusia suodatuskoneita kiertääkseen erilaisia tekniikoita, joita verkkosivustot lopulta keksivät torjuakseen tämän tietyn API: n mainosten estäjiä.
Declarative Net Request ehdotettiin myös melko rajoitetuksi suodatusmoottoriksi, sellaisena kuin se oli alun perin suunniteltu 30 000 sääntörajoitus laajennuskohtaisille staattisille suodatinsäännöille (säännöt, jotka ilmoitetaan asennuksen aikana); ja 5 000 sääntörajoitus laajennuskohtaisille dynaamisille suodatinsäännöille (säännöt, jotka voidaan lisätä asennuksen jälkeen). Kaikki ylimääräiset säännöt jätetään huomioimatta, mikä on pieni ongelma, koska EasyList for Adblock Plus -sääntöä on itsessään 70 000, kun taas uBlock Origin voidaan määrittää toimimaan yli 100 000 säännöllä. Yhteisön ensimmäisen vastareaktion jälkeen Google vastasi lupaamalla muuttaa staattisen säännön rajaa 30 000 säännöstä laajennuskohtaisesti maailmanlaajuisesti 150 000 sääntöön. Tällä on sitten sivuvaikutus, joka estää käyttäjiä käyttämästä muita sääntöraskaita skriptejä yhdessä mainosten eston kanssa, joten käyttäjien on pohdittava mieltymyksiään.
Muut kuin rajoitettu suodatusraja, Declarative Net Request voi uudelleenohjata vain staattisiin URL-osoitteisiin, joten kuvioiden yhteensovittamiseen ei sisälly tukea. uBlock Origin on vahvasti riippuvainen kuvioiden täsmäämisestä ja laajennuksen kehittäjästä ilmoitti, että jälkiasennus ei ole mahdollista hänen laajennuksensa hakualgoritmi täyttääkseen API-vaatimukset. API vaatisi myös täydellisen laajennuspäivityksen suodatinluettelon päivittämiseksi, mikä olisi aivan liian yleistä toimintaa huomioon ottaen suodatinluetteloiden päivitystiheys. Tietenkin nämä päivitykset riippuisivat myös Googlen laajennusten tarkistuskriteereistä ja prosesseista.
Toisaalta Google on aina säilyttänyt kantansa, jonka mukaan sen aikomus luopua Web Requestistä on turvallisuusnäkökulmasta, sillä Web Request API on liian tehokas nykyisessä muodossaan ja jättää sille erittäin laajan tilan väärinkäyttö. Tämä väärinkäyttö ei ole vain teoreettista, sillä Google on maininnut, että 42 % haitallisista laajennuksista on käyttänyt väärin tätä sovellusliittymää. Applen Safarit Content Blocker API suunniteltiin kuten Declarative Net Request samoista syistä, koska roistokehittäjällä on vähemmän tilaa hyödyntää. Verkkopyynnöt olisivat edelleen havaittavissa nerfed Web Request -pyynnössä, mutta ne edellyttäisivät asianomaisten isäntien käyttöoikeudet. Manifest V3:n myötä myös isäntäkäyttöoikeudet muuttuvat merkittävästi, eikä niitä voida enää myöntää yleisellä tavalla asennuksen yhteydessä.
Google on myös käyttänyt suorituskyvyn yleiskustannuksia vaihdon motivaattorina. Verkkopyyntöjen arviointi tapahtuu laajennuksen JavaScript-säikeessä, mikä voi olla kallista suorituskyvyn kannalta. Vastaväitteenä uBlock Originin kehittäjä mainitsee tämän laajennuksen ei aiheuta merkittävää suoritussakoa vaikka käytössä olisi jopa 140 000 staattista suodatinta. Aiheutuneet kustannukset väitetään helposti katettavissa resursseista, joita estetään lataamasta etäpalvelimista ja joita selain ei siten käsittele.
Vaikka Google ei käytä tätä päättelyä, yksi argumentti Web Requestia vastaan voidaan esittää myös mainosten estämisen tehostamiseksi. Verkkopyynnön avulla, jos laajennus ei vastaa ajoissa (viiveen tai kaatumisen vuoksi), verkon käsittelypyyntö on selvästi sallittu, mikä antaa mainosten liukua mainosten eston läpi. Declarative Net Request ei toisaalta kärsisi tästä haitasta. Sen sijaan mainokset kulkevat läpi, jos ne eivät jää kiinni staattisten sääntöjen piiriin, ja näin tapahtuu useammin kuin ei.
Johtopäätös
Yllä olevista selityksistä on selvää, että Declarative Net Request ei ole 1:1 toiminnallisuuden klooni estämiselle Web Request API: n ominaisuudet, ja laajennuskehittäjät ovat varmasti hämmentyneitä, kun heidän kova työnsä vaikeutuu tällaisia muutoksia. Mutta Googlen päättelyllä on myös painoarvoa – Web Request on liian voimakas, ja sen voimien täytyy olla rajoitettu käyttäjäyhteisön (joka koostuu keskimääräisistä käyttäjistä ja harrastajat).
Siirtyminen Declarative Net Request -pyyntöön olisi voinut olla myös myönteinen PR-liike – Googlehan on lisäämässä Chromeen sisäänrakennetun sisällön estosovellusliittymän! Mutta koska uusi API sisältää omat raskaat rajoituksensa, yhteisö näkee tämän oikeutetusti siipien leikkaamisena. Ihanteellisessa maailmassa Googlen olisi pitänyt tutkia uBlock Originin kaltaisten mainosten estäjien toimintaa ennen uuden API: n levittämistä. Nykyisessä muodossaan uusi API voisi käyttää lisäkevennyksiä sääntörajoihinsa sopeutuakseen skenaarioihin, joissa käyttäjät haluaisivat käyttää kahta suodatinta vaativaa laajennusta.
Mukaan Rekisteri, ensimmäiset Manifest V3 -muutoksilla sisältävät koontiversiot ovat saatavilla heinäkuusta 2019 eteenpäin. Toivomme, että Google ottaa huomioon laajennuskehittäjäyhteisöltä saadun palautteen näissä versioissa.
Erityiset kiitokset XDA: n päätoimittajalle Mishaal Rahmanille hänen panoksestaan ja avusta!
Edit: Artikkeli rinnasti Adblock Plusin toiminnan virheellisesti Declarative Net Request API: n toimintaan. Artikkelia on muutettu vastaavasti. Web Request API: n estoominaisuuksien poistaminen vaikuttaa myös Adblock Plusiin.