Το Manifest V3 της Google θα αλλάξει τον τρόπο με τον οποίο λειτουργούν οι επεκτάσεις αποκλεισμού διαφημίσεων του Chrome: Είναι για να τις ακρωτηριάσουν ή για λόγους ασφάλειας;

Το επερχόμενο Manifest V3 για τις επεκτάσεις του Google Chrome θα αλλάξει τον τρόπο λειτουργίας των προγραμμάτων αποκλεισμού διαφημίσεων στο Chrome. Είναι αυτός ο σωστός τρόπος για τους αποκλειστές διαφημίσεων και την Google;

Google Chrome είναι το πιο δημοφιλές cross-platform πρόγραμμα περιήγησης ιστού που διατίθεται στην αγορά αυτή τη στιγμή, διεκδικώντας το 62,7% του παγκόσμιου μεριδίου χρήσης του προγράμματος περιήγησης μέχρι τον Μάιο του 2019, με το Safari της Apple να έρχεται δεύτερο με 15,89% και τον Firefox της Mozilla να διεκδικεί 5,07%. Λόγω της μερίδας του λέοντος, οι μικρότερες αλλαγές που πραγματοποιεί ο Google Chrome για την πλατφόρμα του καταλήγουν να επηρεάζουν εκατομμύρια χρήστες σε όλο τον κόσμο. Έτσι, όταν η Google ανακοίνωσε την επόμενη έκδοση του μανιφέστου επεκτάσεων με τη μορφή Manifest V3 για τις επεκτάσεις Google Chrome, ξέραμε ότι επρόκειτο για κάποιες μεγάλες αλλαγές, ειδικά όταν αποκαλύφθηκε ότι η Google δημιουργούσε ένα API αποκλεισμού περιεχομένου εντός του Chrome εαυτό.

Τι είναι το Manifest V3;

Εάν είστε ενεργός χρήστης του Chrome, χρησιμοποιείτε αναμφίβολα μερικές επεκτάσεις. Οι επεκτάσεις είναι μικρά προγράμματα λογισμικού που προσαρμόζουν την εμπειρία περιήγησης χρησιμοποιώντας το API που παρέχει το πρόγραμμα περιήγησης, επιτρέποντας στους χρήστες να προσαρμόσουν τη λειτουργικότητα και τη συμπεριφορά ανάλογα με τις ατομικές ανάγκες και προτιμήσεις τους. Αυτές οι επεκτάσεις διανέμονται κυρίως μέσω του Chrome Web Store, το οποίο φιλοξενεί περισσότερες από 180.000 επεκτάσεις.

Από τέλη του περασμένου έτους, η Google εργάζεται για το "Manifest V3", ένα σύνολο προτεινόμενων αλλαγών στην πλατφόρμα των επεκτάσεων Chrome που μπορούν να ταξινομηθούν ως "ενδιάμεσες αλλαγές". Όπως το έγγραφο δημόσιας συζήτησης για το Manifest V3 δηλώνει, η έκδοση δήλωσης επέκτασης είναι ένας μηχανισμός για τον περιορισμό ορισμένων δυνατοτήτων σε μια συγκεκριμένη κατηγορία επεκτάσεων. Αυτοί οι περιορισμοί μπορεί να έχουν τη μορφή είτε ελάχιστης είτε μέγιστης έκδοσης. Ο περιορισμός σε μια ελάχιστη έκδοση επιτρέπει στα νεότερα API ή δυνατότητες να είναι διαθέσιμα μόνο σε νεότερες επεκτάσεις ενώ ο περιορισμός σε μια μέγιστη έκδοση δήλωσης επιτρέπει στα παλαιότερα API ή δυνατότητες να είναι σταδιακά καταργήθηκε.

Με απλούστερους όρους, μια νέα έκδοση μανιφέστου επιτρέπει στο Chrome να περιορίζει τα API και τις δυνατότητες σε αυτήν τη νέα έκδοση του μανιφέστου, στο προκειμένου να αναγκαστούν οι προγραμματιστές επεκτάσεων να μεταναστεύσουν μακριά από ορισμένα παλαιότερα API λόγω του αρνητικού τους αντίκτυπου στον χρήστη εμπειρία. Η εφαρμογή μιας επέκτασης στο Manifest V3 θα πρέπει θεωρητικά να παρέχει ισχυρότερες εγγυήσεις από την άποψη της ασφάλειας, του απορρήτου και της απόδοσης.

Ενώ υπάρχει ένα ευρύ φάσμα αλλαγών που περιγράφονται στο Manifest V3, η πιο αμφιλεγόμενη αλλαγή σχετίζεται με την απόφαση της Google να περιορίσει τις δυνατότητες αποκλεισμού που υπάρχουν στο υπάρχον chrome.webRequest API (και εστιάστε το API γύρω από την παρατήρηση αντί για τον αποκλεισμό) και στη συνέχεια παρουσιάστε αυτές τις ικανότητες αποκλεισμού μέσω ενός νέου chrome.declarativeNetRequest API. Η συγκεκριμένη αλλαγή έχει φούντωσε την κοινότητα καθώς καταλήγει να στοχεύει τον μηχανισμό αποκλεισμού διαφημίσεων της διάσημης επέκτασης αποκλεισμού διαφημίσεων, uBlock Origin, και επηρεάζει άμεσα τους 10+ εκατομμύρια χρήστες του.

Πριν ασχοληθούμε με αυτό το ζήτημα, ας ρίξουμε μια ματιά στο πώς το webRequest Το API συγκρίνεται με declarativeNetRequest API.

Web Request API και Declarative Net Request API

Η παρούσα

Η επίσημη περιγραφή του Web Request περιγράφει το API ως εξής:

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

Με το αίτημα Ιστού, το Chrome στέλνει όλα τα δεδομένα σε ένα δίκτυο ζητούν στην επέκταση που τα ακούει. Στη συνέχεια, η επέκταση έχει την ευκαιρία να αξιολογήσει το αίτημα και να δώσει οδηγίες στο Chrome σχετικά με το τι πρέπει να κάνει με το αίτημα: να το επιτρέψει, να το αποκλείσει ή να το στείλει με ορισμένες τροποποιήσεις.

Ακολουθήστε την ακολουθία των συμβάντων για να κατανοήσετε τι συμβαίνει όταν οι επεκτάσεις χρησιμοποιούν το API αιτήματος Ιστού. Όταν ένας χρήστης με εγκατεστημένη επέκταση αιτήματος Ιστού κάνει κλικ σε έναν σύνδεσμο, το Chrome ενημερώνει την επέκταση ότι έχει υποβληθεί αίτημα δεδομένων πριν φτάσει το αίτημα στον διακομιστή. Η επέκταση μπορεί να επιλέξει να τροποποιήσει το αίτημα σε αυτό το στάδιο. Στη συνέχεια, ο διακομιστής ανταποκρίνεται, αλλά η απόκριση περνά και πάλι από την επέκταση και η επέκταση μπορεί να υπαγορεύσει εάν η απόκριση πρέπει να τροποποιηθεί. Στη συνέχεια, το Chrome αποδίδει τελικά τη σελίδα και ο χρήστης μπορεί να δει το αποτέλεσμα της ενέργειας κλικ του.

Καθώς ο Chrome παραδίδει όλα τα δεδομένα σε ένα αίτημα δικτύου, οι επεκτάσεις που χρησιμοποιούν το Web Request API έχουν πρόσβαση για να διαβάζουν και να τροποποιούν όλα όσα κάνει ένας χρήστης στον ιστό. Έτσι, ενώ οι αποκλειστές περιεχομένου όπως το uBlock Origin χρησιμοποιούν με σύνεση τις δυνατότητες αυτού του API, η Google ισχυρίζεται ότι άλλες επεκτάσεις με κακόβουλες προθέσεις έχουν καταχραστεί το ίδιο για να αποκτήσουν πρόσβαση στα προσωπικά των χρηστών πληροφορίες. Σύμφωνα με την Google, το 42% των κακόβουλων επεκτάσεων έχουν χρησιμοποιήσει το Web Request API από τον Ιανουάριο του 2018. Η Google ισχυρίζεται επίσης ότι το API ως έκδοση αποκλεισμού συνεπάγεται «σημαντικό κόστος απόδοσης». απαιτεί μια επίμονη και συχνά μακροχρόνια διαδικασία που είναι θεμελιωδώς ασυμβίβαστη με το «τεμπέλης» διαδικασίες.

Με το Manifest V3, η Google προτείνει τον περιορισμό αυτού του API στη μορφή αποκλεισμού του. Εναλλακτικά, η Google παρέχει το API του Declarative Net Request.

Το μέλλον

Η επίσημη περιγραφή του Declarative Net Request περιγράφει το API ως εξής:

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

Με το Declarative Net Request, το Chrome δεν χρειάζεται να στείλει όλες τις πληροφορίες σχετικά με ένα αίτημα στην επέκταση ακρόασης. Αντίθετα, η επέκταση καταχωρεί κανόνες στο Chrome που ενημερώνουν εκ των προτέρων το πρόγραμμα περιήγησης για το τι πρέπει να κάνει εάν εμφανιστούν συγκεκριμένοι τύποι αιτημάτων.

Η επέκταση προσδιορίζει εκ των προτέρων τους κανόνες της. Στη συνέχεια, το αίτημα των χρηστών αντιστοιχίζεται σε αυτόν τον κανόνα από το πρόγραμμα περιήγησης (και όχι από την επέκταση) και η ενέργεια αναλαμβάνεται επίσης από το πρόγραμμα περιήγησης και στη συνέχεια η σελίδα αποδίδεται. Η Google αναφέρει ότι αυτό τους επιτρέπει να διασφαλίσουν την αποτελεσματικότητα, καθώς μπορούν να ασκήσουν έλεγχο στον αλγόριθμο που καθορίζει το αποτέλεσμα και μπορεί να αποτρέψει ή να απενεργοποιήσει τους αναποτελεσματικούς κανόνες. Παρέχει επίσης καλύτερες εγγυήσεις απορρήτου στον τελικό χρήστη, καθώς οι λεπτομέρειες του αιτήματος δικτύου δεν εκτίθενται στην επέκταση. Δεδομένου ότι οι επίμονες και μακροχρόνιες διαδικασίες δεν είναι πλέον απαραίτητες (καθώς οι κανόνες έχουν καταχωριστεί εκ των προτέρων), η Google ισχυρίζεται ότι Αυτή η προσέγγιση φέρνει επίσης βελτιώσεις απόδοσης που θα καταστήσουν τις επεκτάσεις σημαντικά πιο βιώσιμες σε περιορισμένους πόρους πλατφόρμες.

Το Declarative Net Request θα είναι διαθέσιμο τόσο στο Manifest V2 (τρέχον) όσο και στο Manifest V3, αλλά θα είναι ο κύριος τρόπος με τον οποίο η Google θα επιτρέπει την τροποποίηση αιτημάτων δικτύου στο Manifest V3.

Η διαμάχη

Οι αλλαγές της Google φαίνεται να έχουν νόημα μέχρι να ακούσετε την άλλη πλευρά της ιστορίας, κυρίως αυτή των προγραμμάτων αποκλεισμού διαφημίσεων. Αυτή η συγκεκριμένη μετεγκατάσταση API θεωρείται ως ο τρόπος της Google για να εξοντώσει τους αποκλειστές διαφημίσεων, καθώς αλλάζει ριζικά τον τρόπο λειτουργίας ενός από τους πιο δημοφιλείς αποκλειστές διαφημίσεων. Αυτό συνδέεται με τη "θεωρία" ότι η Google παρακινείται για αυτήν την αλλαγή περισσότερο από την επιχειρηματική σκοπιά παρά από την προοπτική της ασφάλειας των χρηστών. Εξάλλου, η Google εξαρτάται σε μεγάλο βαθμό από τη διαφήμιση για τα έσοδά της και οι αποκλειστές διαφημίσεων θεωρούνται ως άμεση απειλή για τους πελάτες της Google σε αυτό το μέτωπο, όπως αποκαλύφθηκε μέσω Κατάθεση φόρμας 10-K SEC 2018 της Alphabet (μέσω Το Μητρώο):

Νέες και υπάρχουσες τεχνολογίες θα μπορούσαν να επηρεάσουν την ικανότητά μας να προσαρμόζουμε διαφημίσεις ή/και να αποκλείουμε διαφημίσεις στο διαδίκτυο, κάτι που θα έβλαπτε την επιχείρησή μας.

Έχουν αναπτυχθεί τεχνολογίες για να κάνουν τις προσαρμόσιμες διαφημίσεις πιο δύσκολες ή να εμποδίζουν την προβολή των διαφημίσεων συνολικά και ορισμένων παρόχων των διαδικτυακών υπηρεσιών διαθέτουν ενσωματωμένες τεχνολογίες που θα μπορούσαν ενδεχομένως να βλάψουν τη βασική λειτουργικότητα των ψηφιακών τρίτων διαφήμιση. Τα περισσότερα από τα έσοδά μας από την Google προέρχονται από τέλη που καταβάλλονται σε εμάς σε σχέση με την προβολή διαφημίσεων στο διαδίκτυο. Ως αποτέλεσμα, τέτοιες τεχνολογίες και εργαλεία θα μπορούσαν να επηρεάσουν αρνητικά τα λειτουργικά μας αποτελέσματα.

Η Google έπρεπε κυκλοφορήσει μια δήλωση για να αντιμετωπίσει αυτό το πρόβλημα, επαναλαμβάνοντας τη θέση του ότι η αλλαγή είναι προς το συμφέρον του απορρήτου των χρηστών και όχι μια άμεση επίθεση εναντίον προγραμμάτων αποκλεισμού διαφημίσεων:

Δεν εμποδίζουμε την ανάπτυξη προγραμμάτων αποκλεισμού διαφημίσεων ούτε εμποδίζουμε τους χρήστες να αποκλείουν διαφημίσεις. Αντίθετα, θέλουμε να βοηθήσουμε τους προγραμματιστές, συμπεριλαμβανομένων των προγραμμάτων αποκλεισμού περιεχομένου, να γράφουν επεκτάσεις με τρόπο που να προστατεύει το απόρρητο των χρηστών.

Πρέπει να γίνει αναφορά σε δύο από τα πιο δημοφιλή προγράμματα αποκλεισμού διαφημίσεων που είναι διαθέσιμα στο Google Chrome: uBlock Origin και Adblock Plus, τα οποία ακολουθούν διαφορετικές προσεγγίσεις για να επιτύχουν το ίδιο αποτέλεσμα αποκλεισμού περιεχομένου. Το uBlock Origin βασίζεται σε μεγάλο βαθμό στο Web Request API και η κοινότητα έχει προτιμήσει αυτήν την επέκταση με τα χρόνια. Το Adblock Plus και άλλες επεκτάσεις αποκλεισμού περιεχομένου βασίζονται επίσης στο τμήμα αποκλεισμού του αιτήματος Ιστού, επομένως οι αλλαγές σε αυτό το API θα καταλήξουν να επηρεάζουν τους περισσότερους αποκλειστές περιεχομένου τουλάχιστον σε κάποια χωρητικότητα.

Η ώθηση της Google να καταργήσει το Web Request ουσιαστικά θα σκοτώσει το uBlock Origin στην τρέχουσα μορφή του, κάτι που θα επηρεάσει πράγματι πολλούς χρήστες. Ενώ οι χρήστες χωρίς αφοσίωση (και χωρίς πρόθεση να ασχοληθούν με τον τρόπο με τον οποίο επιτυγχάνεται το μπλοκ διαφημίσεων) θα βρουν εναλλακτικές λύσεις που έχουν τα δικά τους μειονεκτήματα, θα καταστεί αδύνατο για τους πιστούς και τους λάτρεις να δημιουργήσουν νέα σχέδια μηχανών φιλτραρίσματος για να παρακάμψουν τις διάφορες τεχνικές που θα αναπτύξουν τελικά οι ιστότοποι για την καταπολέμηση των αποκλειστών διαφημίσεων σε αυτό το συγκεκριμένο API.

Το Declarative Net Request προτάθηκε επίσης να είναι μια μάλλον περιορισμένη μηχανή φιλτραρίσματος, όπως ήταν αρχικά σχεδιάστηκε να υπάρχει όριο κανόνων 30.000 στους κανόνες στατικού φίλτρου ανά επέκταση (κανόνες που δηλώνονται κατά την εγκατάσταση). και όριο κανόνων 5.000 για κανόνες δυναμικού φίλτρου ανά επέκταση (κανόνες που μπορούν να προστεθούν μετά την εγκατάσταση). Τυχόν υπερβολικοί κανόνες θα αγνοηθούν, κάτι που είναι λίγο πρόβλημα καθώς το ίδιο το EasyList για το Adblock Plus έχει 70.000 κανόνες, ενώ το uBlock Origin μπορεί να ρυθμιστεί ώστε να εκτελείται με περισσότερους από 100.000 κανόνες. Μετά την αρχική αντίδραση από την κοινότητα, Η Google απάντησε με την υπόσχεση να αλλάξει το όριο στατικών κανόνων από 30.000 κανόνες ανά επέκταση σε παγκόσμιο μέγιστο 150.000 κανόνες. Αυτό έχει τότε την παρενέργεια να αποκλείει τους χρήστες από τη χρήση άλλων σεναρίων που βασίζονται σε κανόνες σε συνδυασμό με ένα πρόγραμμα αποκλεισμού διαφημίσεων, επομένως οι χρήστες θα πρέπει να κάνουν ταχυδακτυλουργίες με τις προτιμήσεις τους.

Εκτός από το περιορισμένο όριο φιλτραρίσματος, Δηλωτικό Καθαρό Αίτημα μπορεί να ανακατευθύνει μόνο σε στατικές διευθύνσεις URL, επομένως δεν περιλαμβάνεται υποστήριξη για την αντιστοίχιση μοτίβων. Το uBlock Origin βασίζεται σε μεγάλο βαθμό στην αντιστοίχιση μοτίβων και στον προγραμματιστή επεκτάσεων δήλωσε ότι δεν είναι δυνατή η μετασκευή τον αλγόριθμο αντιστοίχισης της επέκτασής του για να καλύψει τις απαιτήσεις των API. Το API θα απαιτούσε επίσης μια πλήρη ενημέρωση επέκτασης για την απλή ενημέρωση της λίστας φίλτρων, κάτι που θα ήταν μια πολύ συχνή δραστηριότητα λαμβάνοντας υπόψη συχνότητα με την οποία ενημερώνονται αυτές οι λίστες φίλτρων. Φυσικά, αυτές οι ενημερώσεις θα εξαρτώνται επίσης από τα κριτήρια και τις διαδικασίες ελέγχου της επέκτασης της Google.

Από την άλλη πλευρά, η Google διατήρησε πάντα τη θέση της ότι η πρόθεσή της να απομακρυνθεί από το αίτημα Ιστού προέρχεται από προοπτική ασφάλειας, καθώς το Web Request API είναι πολύ ισχυρό στην τρέχουσα μορφή του και αφήνει ένα πολύ ευρύ περιθώριο κατάχρηση. Αυτή η κατάχρηση δεν είναι μόνο θεωρητική, καθώς η Google ανέφερε ότι το 42% των κακόβουλων επεκτάσεων έχουν κάνει κατάχρηση αυτού του API. Το Apple Safari Content Blocker API σχεδιάστηκε όπως το Declarative Net Request για παρόμοιους λόγους, καθώς υπάρχει μικρότερο περιθώριο εκμετάλλευσης από έναν αδίστακτο προγραμματιστή. Στο nerfed Web Request, τα αιτήματα δικτύου θα εξακολουθούσαν να είναι παρατηρήσιμα, αλλά θα χρειάζονταν δικαιώματα στους σχετικούς κεντρικούς υπολογιστές. Με το Manifest V3, οι άδειες κεντρικού υπολογιστή αλλάζουν επίσης σημαντικά και δεν μπορούν πλέον να παραχωρηθούν με γενικό τρόπο κατά την εγκατάσταση.

Η Google χρησιμοποίησε επίσης γενικά έξοδα απόδοσης ως κίνητρο για τη μετάβαση. Η αξιολόγηση των αιτημάτων δικτύου πραγματοποιείται στο νήμα JavaScript της επέκτασης, η οποία μπορεί να είναι δαπανηρή για την απόδοση. Ως διάψευση, ο προγραμματιστής του uBlock Origin αναφέρει ότι η επέκτασή του δεν επισύρει καμία σημαντική ποινή απόδοσης ακόμη και όταν υπάρχουν έως και 140.000 στατικά φίλτρα για επιβολή. Οι δαπάνες που πραγματοποιήθηκαν υποστηρίζεται ότι ανακτώνται εύκολα από τους πόρους που εμποδίζονται να ληφθούν από απομακρυσμένους διακομιστές και επομένως δεν υποβάλλονται σε επεξεργασία από το πρόγραμμα περιήγησης.

Παρόλο που η Google δεν χρησιμοποιεί αυτό το σκεπτικό, ένα επιχείρημα κατά του αιτήματος Ιστού μπορεί επίσης να προβληθεί για αποτελεσματικότητα με τον αποκλεισμό διαφημίσεων. Με το αίτημα Ιστού, εάν μια επέκταση δεν ανταποκρίνεται έγκαιρα (λόγω καθυστέρησης ή σφάλματος), το αίτημα διαχείρισης δικτύου επιτρέπεται ξεκάθαρα, γεγονός που επιτρέπει στις διαφημίσεις να περάσουν από το πρόγραμμα αποκλεισμού διαφημίσεων. Το δηλωτικό καθαρό αίτημα, από την άλλη πλευρά, δεν θα υποφέρει από αυτό το μειονέκτημα. Αντίθετα, οι διαφημίσεις θα περάσουν αν δεν εμπίπτουν στους στατικούς κανόνες και αυτό θα συμβαίνει πιο συχνά.

συμπέρασμα

Από τις παραπάνω εξηγήσεις, είναι σαφές ότι το Declarative Net Request δεν είναι ένας κλώνος λειτουργικότητας 1:1 για τον αποκλεισμό οι δυνατότητες του Web Request API και οι προγραμματιστές επεκτάσεων είναι βέβαιο ότι θα ταλαιπωρηθούν όταν η σκληρή δουλειά τους θα μειώσει τέτοιες αλλαγές. Αλλά το σκεπτικό της Google έχει επίσης βάρος -- Το Web Request είναι πολύ ισχυρό και οι δυνάμεις του πρέπει να είναι περιορίζεται για το ευρύτερο ενδιαφέρον της κοινότητας χρηστών (η οποία αποτελείται από μέσους χρήστες μαζί με ενθουσιώδεις).

Η κίνηση προς το Αίτημα Δηλωτικού Δικτύου θα μπορούσε να ήταν επίσης μια θετική κίνηση δημοσίων σχέσεων -- σε τελική ανάλυση, η Google προσθέτει ένα ενσωματωμένο API αποκλεισμού περιεχομένου στο Chrome! Αλλά δεδομένου ότι το νέο API έρχεται με τους δικούς του βαρείς περιορισμούς, η κοινότητα δικαίως το βλέπει αυτό ως απόκομμα των φτερών της. Σε έναν ιδανικό κόσμο, η Google θα έπρεπε να είχε εξερευνήσει τη λειτουργία προγραμμάτων αποκλεισμού διαφημίσεων όπως το uBlock Origin πριν προωθήσει το νέο API. Όπως έχει τώρα, το νέο API θα μπορούσε να χρησιμοποιήσει περαιτέρω χαλαρώσεις στα όρια κανόνων του για να καλύψει σενάρια όπου οι χρήστες θα ήθελαν να χρησιμοποιήσουν δύο επεκτάσεις που δεν απαιτούν φίλτρα.

Σύμφωνα με Το Μητρώο, οι πρώτες εκδόσεις με αλλαγές Manifest V3 θα είναι διαθέσιμες από τον Ιούλιο του 2019 και μετά. Ελπίζουμε η Google να ανταποκριθεί στα σχόλια που έλαβε από την κοινότητα προγραμματιστών επεκτάσεων με αυτές τις εκδόσεις.


Ιδιαίτερες ευχαριστίες στον αρχισυντάκτη του XDA Mishaal Rahman για τις εισροές και τη βοήθειά του!

Επεξεργασία: Το άρθρο εξίσωσε λανθασμένα τη λειτουργία του Adblock Plus με αυτή του API Declarative Net Request. Το άρθρο έχει τροποποιηθεί ανάλογα. Το Adblock Plus θα επηρεαστεί επίσης από την κατάργηση των δυνατοτήτων αποκλεισμού του Web Request API.