Filtrare pagini web, eliminare frame-uri, reclame etc

Despre computere, telefoane, tehnologie

Moderator: Manu

IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

Am mai facut cateva imbunatatiri la scriptul care filtreaza reclamele.
In primul rand am facut ca modificarile facute de mine in cod sa fie mai elegante si sa fie mai usor de adaugat noi reclame care trebuie filtrate. Am ajuns la aceste modificari fiindca am facut ca acele modificari sa fie mai sigure decat pana acum, si cu aceasta ocazie am vazut ca noul cod este totodata si mai usor de intretinut.
Mai exista unele bucati din codul vechi de care s-ar putea sa nu mai fie nevoie, fiindca nu le-am sters inca pe toate, dar cum e acum functioneaza OK.

Acum sterge toate frame-urile si de pe ldv.ro si de pe logicus.ro.

Am mai adaugat si o linie ca sa stearga frame-ul cu comentarii disqus.
Va trebui sa mai imbunatatesc probabil putin codul ca sa se poata elimina usor anumite tipuri de continut care nu se doresc a fi sterse.
Eu as vrea sa las doar lucrurile utile si sa sterg alte elemente care ori ocupa mult loc, ori creaza apeluri inutile catre diverse site-uri care ingreuneaza afisarea paginii, dar poate ca unii vor totusi sa aiba acces la acele elemente. Cred ca nu ar avea rost sa creez pentru fiecare cate o optiune in meniu ca sa se activeze sau dezactiveze de acolo.

Se poate descarca noul fisier de la aceeasi adresa:
http://192.81.220.28/static/CustomRules.txt
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

Am restructurat scriptul pentru filtrarea reclamelor si acum codul care face inlocuirile se afla intr-o functie separata. Am vazut ca uneori programul Fiddler afisa o fereastra cu o eroare care nu reprezenta o problema, dar era neplacut sa apara. Acea eroare aparea din cauza ca marimea corpului paginilor era diferita de cea specificata in headerul HTTP, asta din cauza ca programul sterge unele scripturi si frame-uri.
Am corectat problema si acum nu mai apare acea eroare.

In noua varianta este si mai usor sa se adauge noi filtre dar si sa se stearga sau comenteze unele filtre care nu sunt dorite.

De exemplu, urmatorul filtru sterge toate scripturile javascript care contin urmatoarea expresie regulata, ca sa nu mai asteptam pana este rulat scriptul, contactat site-ul trafic.ro care sa ne contorizeze vizita etc:

sRegexes.push( /trafic\.ro\/js\/trafic\.js/i );

Daca cineva vrea sa nu se foloseasca acest filtru, poate sa adauge doua caractere / la inceputul liniei si sa salveze cu Control+S:

// sRegexes.push( /trafic\.ro\/js\/trafic\.js/i );

Sau urmatorul filtru sterge toate frame-urile care contin urmatoarea expresie:

fRegexes.push( /www\.facebook\.com/i );

Daca cineva vrea sa vada totusi frame-urile catre www.facebook.com, poate comenta aceasta linie cu doua slash-uri:

// fRegexes.push( /www\.facebook\.com/i );

Am mai adaugat filtre pentru multe tipuri de reclame care apar in general pe site-urile romanesti.

Scriptul se poate descarca tot de la:

http://3226590236/static/CustomRules.txt
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Intr-adevar,a cum merge bine, nu am mai gasit reclame.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Cornel
Locotenent
Mesaje: 376
Membru din: 02 Iun 2008, 23:17
Localitate: Targu Frumos

Mesaj de Cornel »

dupa rulare si substituirea continutului din script, mie imi pare ca e mai lenta incarcarea unor pagini. In plus, pe Money.ro nu intra, imi apare pagina clasica cu ".. cannot display the webpage...". Iarasi pe gandul.info programelul mi-a dat un mesaj cu "address violation" fara sa incarce pagina decat foarte lent. Hmm cine stie poate oi fi gresit ceva urmand pasii dar totusi compilarea s-a facut cum trebuie fara eroare.
Cornel
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

Hmm, ciudat. Tocmai am testat din nou money.ro si gandul.info si mi s-au incarcat foarte rapid. Ce sistem de operare si browser folosesti? Ma gandesc ca poate acele site-uri ar putea verifica browserul folosit si afisa un continut diferit in functie de browser si de aici sa apara ceva diferente.

Eu le-am testat cu Internet Explorer 8 si Firefox versiunile 31 si 32.

Sau daca nu ai mai vizitat cumva recent acele pagini si nu ai dezactivat afisarea imaginilor in browser, se poate sa fi durat mult descarcarea acelor pagini, fiindca sunt niste site-uri nasoale din punctul asta de vedere.
Cand accesezi pagina gandul.info se descarca mai mult de 5 mb doar imagini, fisiere javascript si css aditionale, cele mai grele fiind fisierele cu imagini. Si se descarca mai mult de 220 de fisiere. Deci cand accesezi gandul.info, daca nu ai imaginile dezactivate, nu se face doar un singur apel pentru a prelua o pagina, ci peste 220 de apeluri, iar asta dureaza.

Cand accesezi pagina money.ro se descarca mai mult de 10 MB de fisiere aditionale si in acest caz se descarca mai mult de 130 de fisiere.

Probabil ca unele dintre imagini sunt statice, adica fundaluri sau elemente de design, si nu se modifica in fiecare zi ci sunt pastrate in cache de browser. De aceea ma gandesc ca daca nu ai vizitat de mai mult timp aceste site-uri s-ar putea ca imaginile din cache sa fi expirat si sa fie descarcate din nou.

Daca nu iti sunt utile, poti eventual sa dezactivezi afisarea imaginilor in browser fiindca asta va face mult mai rapida afisarea tuturor paginilor caci va trebui sa se descarce doar fisierele cu cod javascript si css, care de obicei sunt mai mici.

Daca cumva o alta pagina decat pagina principala de pe acele site-uri s-a accesat mai greu, te rog sa imi dai adresa acelei pagini ca sa o testez. Eu de obicei am verificat pe toate site-urile pagina principala si o pagina cu continut, de exemplu cu un articol, gandindu-ma ca ele au sigur un design diferit, dar este foarte posibil sa existe si alte tipuri de pagini.

Mie mi-a aparut o data pe un site o eroare cum ca nu a gasit site-ul, fiindca Fiddler are un timeout mai mic si daca site-ul nu a raspuns destul de rapid, a ajuns la concluzia ca nu a fost gasit. Dar am facut un refresh cu F5 si apoi pagina s-a afisat. Cred ca tu s-ar putea sa ai totusi o alta problema. Am cautat in legatura cu aceasta problema si am gasit o informatie cum ca DotNet are o problema fiindca nu accepta raspunsul de la unele servere web care nu sunt configurate corect, doar ca problema ar fi trebuit sa apara la paginile care se acceseaza cu https cand sunt accesate de sub versiunile Windows Vista sau mai noi, , pe cand gandul.info si money.ro vad ca se acceseaza prin http simplu, asa ca tot nu am idee care o fi problema.

De gresit nu cred ca ai gresit fiindca nu prea aveai ce sa gresesti, deci problema trebuie sa fie altundeva.
Cornel
Locotenent
Mesaje: 376
Membru din: 02 Iun 2008, 23:17
Localitate: Targu Frumos

Mesaj de Cornel »

Gata, acum e in regula. E o excelenta facilitate mai ales pentru cei care se initiaza in navigarea pe internet. Imi amintesc de cand tineam cursuri de genul acesta si la lectia despre internet incercam sa-i obisnuiesc pe cursanti cu siteuri practice de genul Mersul trenurilor, ceva ziare chestii de astea; era foarte frustrant atat pentru mine, dapai pentru ei cand se impiedicau prin reclame sau ramaneau captivi pe acolo si trebuia sa reluam pasii; e desigur de inteles ca la inceput nu pricepeau acel dinamism al unei pagini web.Eu deja m-am obisnuit sa mitraliez cu sageata in jos sau taburi acele elemente intrucatva indezirabile, intrasera intr-un fel in normalitatea navigarii... Ma intreb daca nu cumva se vor simti deranjati cei ce au interes in a posta reclame? Cred ca nu isi bat capu' cata vreme numarul celor ce le filtreaza e mic - dar daca ar fi un procent de cestiu, 20-30% oare ce metode s-ar gasi pentru a impiedica potentialul client sa le tranteasca usa?
Cornel
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

Ma bucur ca ai reusit sa rezolvi problema.

Eu nu as fi chiar atat de mult impotriva reclamelor daca unele site-uri nu ar exagera cu ele.
Dar mi se pare de-a dreptul spam sa afisezi un articol de cateva randuri, si ala copiat din alte publicatii, sau tradus din articole care au aparut in publicatii straine, sau pur si simplu preluata o stire de la agentiile de presa, aceeasi stire pe care o preiau zeci si zeci de alte publicatii si adaugate cateva cuvinte in plus ca sa fie "articol original", iar in pagina cu acel articol sa afisezi 20 de frame-uri cu reclame.

Daca o pagina ar contine acolo o reclama doua, hai maxim trei daca are si un continut de calitate foarte buna, atunci as spune ca reclamele sunt singurul mijloc prin care proprietarii site-ului pot obtine un venit, si ca fara un venit pe termen lung nu le-ar mai renta iar eu nu as mai putea gasi informatii de calitate.
Dar daca si ei exagereaza pai atunci exagerez si eu si incerc sa elimin cat mai multe reclame.
Chiar daca folosesc de foarte mult internetul, si pentru mine este uneori frustrant cand incerc sa gasesc unde este continutul paginii curente. Unele pagini sunt imense, incat daca apas Page Down observ ca am ajuns la doar 2% din pagina, dar totusi oricat incerc sa apas H, sau PageDown, sau N sau alte taste ajung tot pe linkuri catre alte pagini si tot nu gasesc continutul principal al paginii curente.
Pentru vazatori nu exista aceasta problema fiindca ei pot intelege intr-o secunda care este structura paginii si unde incepe continutul de baza, dar pentru noi orbii este putin mai dificil.
In plus Jaws lucreaza mult mai greu cu paginile de dimensiuni foarte mari mai ales daca contin si cod Javascript care le modifica in mod dinamic.

Evident ca cei care posteaza reclame sunt deranjati ca reclamele pot fi filtrate. Nu atat de aceasta solutie care este mai complicata fiindca trebuie instalat programul Fiddler, inlocuit si recompilat acel script, cat mai ales de alte programe comerciale care au ca singur scop eliminarea reclamelor sau a altor tipuri de continut ofensator.

Se pot gasi metode de a bloca filtrarea reclamelor, insa nu exista metode definitive, ci trebuie ca site-urile care fac asta sa modifice incontinuu modul de afisare a reclamelor pentru ca programele care le blocheaza sa nu mai functioneze si sa trebuiasca a fi modificate si ele incontinuu.
Asta ar ingreuna insa munca si pentru proprietarii site-urilor si pentru majoritatea nu este rentabil tocmai fiindca dupa cum spuneai, nu sunt prea multi cei deranjati de reclame asa ca putini instaleaza un program care sa faca asta.

O metoda ar fi ca pagina sa incarce un fisier javascript mare, cu multe tipuri de scripturi incluse, atat unele neaparat utile pentru functionarea paginii, biblioteci javascript ca jQuery/DOJO/YUI, cat si codul care afiseaza reclamele.
In acest caz nu s-ar putea sterge pur si simplu scriptul care incarca acel fisier, fiindca pagina s-ar putea sa nu mai functioneze deloc.
Dar bineinteles, s-ar putea filtra nu doar fisierele care au ca MIME type text/html, adica paginile web, ci si cele care sunt de tip text/javascript adica fisierele cu scripturi, iar in ele s-ar putea face inlocuiri cu regular expressions la fel ca in paginile html pentru a sterge doar codul javascript care incarca reclame.

O alta metoda mai dificil de combatut ar fi sa se afiseze atat continutul principal al paginilorr, adica textul articolelor de ziar de exemplu cat si reclamele folosind aceeasi functie Javascript, dar cu parametrii diferiti cunoscuti doar de site.
Adica de exemplu functia show('oijo4ij4oij4') sa afiseze reclama iar functia show('adrfere333') sa afiseze textul articolului, unde textul dintre paranteze sa fie unul ales in mod aleatoriu si asociat in baza de date a serverului cu un anumit articol sau reclama, etc.
Iar acele texte aleatorii s-ar putea modifica frecvent in baza de date astfel incat daca un program care filtreaza reclamele tine cont de ele sa nu mai functioneze.
Dar o astfel de metoda ar avea dezavantajul ca textul articolelor nu ar putea fi indexat prea usor de Google ci ar trebui luate masuri suplimentare, deci ar insemna un efort mai mare, si probabil ca alte motoare de cautare nu ar indexa deloc acele articole deci nu ar fi prea bine.
Ar fi mai greu de combatut o astfel de metoda fiindca nu s-ar putea tine cont nici de numele functiei "show" care afiseaza articolul si nici de ceea ce se afla intre paranteze, fiindca diverse reclame ar avea diverse coduri si nu s-ar putea sti nici ce cod vor avea noile reclame.
Nu s-ar putea rezolva insa prea usor folosind o simpla inlocuire cu regular expressions, dar s-ar putea totusi rezolva folosind o biblioteca care poate analiza codul HTML si care poate permite selectii complexe ori bazate pe CSS selectors ori pe Xpath ori pe alte metode similare.
Xpath este o metoda care permite selectii complexe in fisiere XML si care poate fi utilizata si in fisiere HTML, dar este la fel de urata ca fisierele XML :-)
CSS selectors este o metoda de selectie mult mai simpatica, este un subset al Xpath si este folosita de multe biblioteci Javascript ca jQuery.
Daca se foloseste o biblioteca cu care se poate analiza codul HTML, inlocuirea se poate face si in functie de pozitia in care este aflata reclama pe site, adica se poate sti de exemplu ca reclama apare doar intr-un <div> care apare dupa un tabel care contine un paragraf care are un anumit atribut, pe cand ceea ce apare tot intr-un div care apare dupa un alt tabel care nu contine un paragraf cu acel atribut nu este reclama, ci continut util.

Deci cu alte cuvinte este o lupta continua. Daca o metoda este mai buna dar implica un efort prea mare, site-urile s-ar putea sa nu o foloseasca, iar daca eu gasesc o reclama foarte greu de eliminat s-ar putea sa o las acolo fiindca poate nu ar renta efortul suplimentar doar pentru o reclama.

Daca DotNet ar avea o clasa care sa ofere metode de analizare a continutului HTML intr-un mod simplu (adica daca s-ar putea sa nu foloseasca XPath), am putea face modificari si filtrari mult mai avansate astfel incat sa restructuram anumite pagini web cum dorim. Ar fi insa destul de mult de muncit si daca site-ul se modifica ar trebui muncit din nou, dar altfel rezultatul ar fi excelent, fiindca am putea de exemplu sa restructuram o pagina cu un articol astfel incat pagina sa inceapa cu titlul articolului, care sa fie marcat ca heading, apoi sa apara textul articolului, si la sfarsit linkuri catre alte articole sau sectiuni, depinde ce se afla pe acea pagina, deci fara reclame, fara o multime de linkuri duplicate si in pozitia dorita de noi.
Ma rog, nu orice pagina ar putea fi modificata prea usor, fiindca unele sunt atat de prost structurate incat nu poti sa iti dai seama prea bine care este titlul articolului curent decat daca esti om, nu computer, si intelegi legatura dintre continutul titlului si continutul articolului.
Dar pentru moment, daca se reduce macar numarul reclamelor tot e bine.
Golddy
Sergent
Mesaje: 37
Membru din: 26 Mai 2007, 23:10
Localitate: Arad
Contact:

Mesaj de Golddy »

Manu scrie:Da, suna bine, totul e ca va trebui ca pentru site-urile utilizate des sa fie facute reguli pe care sa le importe apoi si ceilalti...
Servus!
totusi, aceste lucruri nu se pot face si cu ajutorul lui "flexible web" din jaws? (insert spatiu, urmat de tasta x)?
Eu in felul asta am setat sa scot anumite zone din anumite site-uri sau o zona anume din toate site-urile cum ar fi de exemplu reclamele Google.
"aupatru" pentru skype, yahoo, twitter si facebook.
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

Ba da, si pare a fi o solutie mult mai buna fiindca pe de o parte Jaws ofera o interfata mai usor de folosit pentru toata lumea, iar pe de alta parte ascunde rezultatul final generat de DOM (Document Object Model), nu sterge efectiv din codul HTML si Javascript.

Din pacate eu nu pot folosi acea metoda fiindca a aparut doar in Jaws 14 iar eu folosesc Jaws 13, fiindca Jaws 14 si 15 crapa extrem de des pe computerul meu.
Scrie răspuns