E 2019, softurile pentru blocarea reclamelor nu mai sunt de mult o noutate și probabil mulți internauți măcar au auzit de existența lor, dacă nu le și folosesc. Vreau să explic în articolul ăsta, tehnic, cum funcționează, cum le putem folosi, astfel încât să puteți decide singuri care e cea mai bună soluție pentru voi.
Sunt două categorii mari de adBlockere, iar ele funcționează total diferit: adblocker pentru browser și adblocker pentru rețea (DNS). Pentru a le înțelege, avem nevoie de puțin background.
Ce înseamnă HTML?
Orice pagină web e formată din acel „cod HTML” de care toată lumea se ferește. Arată urât și, la prima vedere, nu are nicio logică. Paranteze ascuțite, cuvinte fără sens și semne de punctuație aruncate peste tot. Dar în realitate nu e chiar așa. HTML (Hypertext Markup Language) e o structură arborescentă în care sunt reprezentate toate documentele menite să fie deschise într-un browser, adică paginile web.
De exemplu, următorul cod HTML reprezintă o pagină simplă cu un antet și un link:
<html>
<head>
<title>My title</title>
</head>
<body>
<h1>A heading</h1>
<a href>Link text</a>
</body>
</html>
Reprezentarea arborescentă a aceleiași pagini arată așa:
Iar aceeași pagină deschisă într-un browser arată așa:
În momentul în care browserul încarcă o pagină web, o transformă în memorie în Document Object Model (DOM), care este o interfață de programare pentru JavaScript. Astfel, folosind cod JavaScript, se pot căuta anumite elemente HTML, șterge, adăuga, modifica.
Printre atributele elementelor HTML (cum e atributul href al elementului a) din corpul paginii (body) se numără și id și class. Id reprezintă un identificator unic în pagină, iar class reprezintă un nume de colecție din care face parte elementul respectiv (o clasă a obiectului din DOM). Ele sunt folositoare atât în stilizarea elementelor (prin Cascading Style Sheets, sau CSS) cât și în căutarile elementelor în DOM.
Reclamele, ca orice alt element vizibil sau invizibil al unei pagini web, sunt bucăți de cod HTML care vor intra în componența DOMului. Ele sunt livrate de adservere la cererea browserului. Orice reclamă necesită un cod JavaScript care o cere. Reclamele sunt introduse în DOM cu anumite atribute (de obicei class sau id) pentru a fi controlate și urmărite ulterior.
AdBlockerul pentru browser.
Soluțiile adBlock pentru browser sunt, de obicei, extensii sau pluginuri (uBlock Origin, adBlock Plus) care au scopul de a manipula DOMul. Ele au în spate colecții (liste – mențiunute, de obicei, de comunitate) de clase și id-uri cunoscute ca fiind folosite de adserverele de pe piață. Zeci, chiar sute de mii de clase, id-uri și combinații de tipuri de elemente și atribute pentru identificarea elementelor din componența reclamelor.
Pluginurile adBlock sunt ca un filtru pentru browser și intervin în orice tip de manipulare a DOMului, fie la încărcarea inițială, fie ulterior. În momentul în care un element HTML îndeplinește vreuna din condițiile listelor de mai sus, el este exlus cu totul din DOM și nu se mai afișează.
Deși par o modalitate smart, adblockerele pentru browser ingreunează semnificativ încărcarea paginilor și experiența navigării web în ansamblu. Procesoarele moderne fac față cerințelor, dar, în cazul dispozitivelor mobile, autonomia bateriei are de suferit, iar pentru a le instala și configura, trebuie să folosești un browser care suportă extensii.
Internet Protocol (IP) și Domain Name Servers (DNS)
Toate dispozitivele conectate la internet au alocată o adresă IP (Internet Protocol) pentru a se găsi unele pe celelalte și a putea comunica între ele. Asta e internetul, de fapt: o rețea mare de dispozitive care trimit și primesc informații. Nici serverele nu fac excepție, dar aici lucrurile se complică puțin. Nu ai vrea să fii nevoit să ții minte câte o adresă IP pentru fiecare site pe care vrei să îl accesezi. În cazul fericit dar (aproape) învechit, IPv4, ea arată așa: 144.76.226.111. Dar, de-a lungul timpului, dispozitivele conectate la internet au crescut atât de mult în număr încât s-au epuizat aproape toate combinațiile IPv4, așa că intervine IPv6 care rezolvă această problemă. Ăsta ar fi cazul nefericit și de viitor, unde ar trebui să ții minte adrese de genul: fe80::ea39:35ff:feb9:2914/64.
Sunt, în total, 2³², adică 4294967296 de adrese IPv4 posibile, dintre care 3706452992 sunt publice. Numărul total al adreselor IPv6 este mult mai mare, 2¹²⁸, adică 340282366920938463463374607431768211456.
Din fericire, însă, există DNS sau Domain Name Servers, care au rolul de a translata un nume de domeniu într-o adresă IP asociată. De exemplu, buzera.ro e un pointer către adresa IPv4 144.76.226.111.
Fiecare configurație de rețea cu acces la internet trebuie să conțină adresele IP ale DNS-urilor. De obicei ele sunt trimise automat de ISP (Internet Service Provider) în momentul în care routerul sau PC-ul tău se conectează la internet, dar pot fi configurate și manual. De exemplu, Google DNS au adresele IP: 8.8.8.8 și 8.8.4.4.
AdBlockerul pentru rețea.
După cum spuneam mai sus, orice reclamă este cerută de browser (folosind JavaScript) printr-un request către un adserver. Aceste requesturi se fac către un nume de domeniu, translatat ulterior de DNS într-o adresă IP.
Așa cum există colecții cu id-uri sau clase de elemente HTML cunoscute ca fiind reclame, la fel există și colecții de domenii cunoscute ca fiind adservere sau servicii conexe lor. Ele se pot încărca în softuri speciale (ex.: AdGuard, Pi-hole) care au rol de DNS doar pentru rețeaua ta. Acestea pot fi instalate fie pe echipamente de rețea compatibile (router, switch), fie pe echipamente dedicate (un computer vechi, Raspberry Pi, Network Attached Storage).
Acest DNS local, fiind izolat, nu știe să traducă domeniile în adrese IP. El trebuie conectat, din setări, la servere publice (upstream DNS) pe care le va interoga de câte ori este nevoie. Apoi vom configura routerul sa ofere tuturor dispozitivelor care se conectează la el (cablu, wireless) ca DNS serverul nostru local, nu unul public cum ar face-o implicit.
În momentul în care este cerut conținut de la un domeniu recunoscut ca fiind adserver, el este translatat într-o adresă IP unde nu găsește nimic (de obicei 127.0.0.1, sau localhost) și reclama nu se poate încărca.
Avantajul major al soluțiilor adBlock DNS este faptul că întreaga rețea locală este acoperită, indiferent de dispozitiv sau browser. Iar toată această filtrare de reclame se face fără a consuma resursele dispozitivelor conectate.
Există și dezavantaje, principalul fiind dificultatea instalării și configurării, dar și faptul că soluția e activă doar în aria de acoperire a routerului tău, adică rețeaua de acasă/la birou. Pe lângă dificultate, domeniile și subdomeniile de pe care se livrează publicitate se schimbă mult mai des decât clasele sau id-urile elementelor HTML, drept urmare listele de domenii (hosts) se actualizează mai greu. Un alt dezavantaj ar fi acela că unele elemente HTML sunt preprocesate, local, de JavaScript înainte să ceară reclama (li se dau dimensiuni, se fac stilizări pe ele), iar în acest caz, chiar dacă reclama nu se afisează, rămân spații goale în pagină. Reclamele din YouTube, de exemplu, se livrează de pe aceleași domenii ca videourile în sine, iar asta face mult mai dificilă blocarea lor prin DNS.
Concluzii
Dacă ai nevoie de o soluție rapidă și la îndemână oriunde te-ai afla, folosește o extensie de browser.
Dacă ai răbdarea și hardware-ul necesare instalării și configurării soluției DNS acasă, folosește-o. Pe lângă reclame, poți bloca și scripturile de tracking/analytics, dar îți poți defini și propriile reguli.