de Mátyás Fodor

Cum să depășești blocul incognito

Cum sa depasesti blocul incognito

Recent am întâlnit mai multe site-uri care afișau un avertisment sau un paravan de plată, deoarece foloseam modul incognito. Cred că este nedrept. Ar trebui să mi se permită să folosesc orice browser și mod doresc. Acesta este un mod de a pune în aplicare instrumentele lor de urmărire. stiu asta incognito nu este sigur dar este minimul pe care îl puteți face pentru a evita reclame care să vă urmărească.

Întregul lucru mi-a luat aproximativ două ore și am învățat multe despre extensiile browserului și hacking-ul codului client ca utilizator final. M-am gândit că acest lucru ar merita împărtășit.

În primul rând, a trebuit să caut cum să detectez modul privat. Conform celor mai bune cunoștințe ale mele, nu există API-ul browserului pentru a detecta direct modul privat, așa că am fost destul de sigur că este un script mic. Acest Răspunsul StackOverflow mi-a dat un indiciu, așa că știam că va trebui să caut webkitRequestFileSystem. am găsit acest a intrat într-unul dintre codurile JavaScript minificate ale acestor site-uri private de detestare. Iată partea interesantă:

Aș putea testa modul lipindu-l în incognito și în consola dev a ferestrei publice a browserului și rulați:

var module = {};incognito(null, module);module.exports.detectIncognito().then(console.log)

Bingo! Acesta este, trebuie doar să găsesc o modalitate de a nu apela apelul de eroare window.webkitRequestFileSystem(..). Cea mai ușoară cale este de a corecționa maimuța funcției:

(function(webkitRequestFileSystem) {  window.webkitRequestFileSystem = function(t, s, success, error) {    webkitRequestFileSystem(t, s, success, success);  }})(window.webkitRequestFileSystem);

Dacă nu sunteți familiarizați cu tehnica, patch-uri de maimuță este o modalitate de a adăuga, modifica sau suprima comportamentul implicit al unei bucăți de cod în timp de execuție fără a modifica codul sursă original.

Ocol 1: Mai întâi am început să scriu propria mea extensie Chrome folosind Extensionizr. Este un instrument grozav care generează codul de cazan al extensiei Chrome. Dar, în cele din urmă, am găsit o soluție mai ușoară.

Ori de câte ori este vorba de personalizarea site-urilor pe care le folosesc Tampermonkey (de exemplu ascunderea anunțurilor de locuri de muncă pe Stack Overflow atunci când într-adevăr nu ar trebui să petrec timp căutând noi poziții). Nu trebuie să instalați o extensie n + 1 și oferă o interfață frumoasă pentru a vă gestiona scripturile. Ok, frumos este probabil o exagerare, este urât, dar la îndemână.

Așa că am adăugat scriptul de patch-uri de maimuță la care am făcut referire mai sus, chicotind deja cât de ușor era, dar prost, nu a funcționat. Am încercat alte câteva lucruri, de exemplu:

window.foobar="baz";

Dar în consola de dezvoltare, această proprietate a lipsit din window variabil. S-a dovedit scripturi de conținut rulează într-un mediu izolat, partajează DOM doar cu scripturile paginii web. Am început să lucrez cu soluția de referință de la SO. Totuși, a existat un lucru foarte important: a trebuit să execut acest cod înainte de codul paginii curente. Iată cu ce am venit:

function injectScript(file_path, node) {        var element = document.createElement('script');        element.setAttribute('type', 'text/javascript');        element.setAttribute('src', file_path);        element.setAttribute('async', false);        node.appendChild(element);}injectScript(url, document.documentElement);

Ocol 2: După cum am început cu o extensie, încărcarea unui alt fișier JavaScript a fost banală. Cu toate acestea, nu este cazul scripturilor Tampermonkey (cel puțin nu știu despre asta). Așa că am decis să pun codul într-un esențial GitHub și am încercat să încarc fișier brut. Dar apoi browserul se plângea de tipul MIME. În cele din urmă am ajuns să folosesc https://rawgit.com/, care a fost exact instrumentul potrivit pentru aceasta.

Mi-am dat seama că ar trebui să adaug acele câteva linii de cod de patch-uri de maimuță ca un șir și să completez textul elementului de script cu asta. Iată soluția mea finală:

Un lucru important de știut dacă lucrați cu Tampermonkey în modul incognito: modificările efectuate în modul incognito nu vor apărea în modul normal și invers: trebuie să închideți toate ferestrele private dacă doriți să încercați cele mai recente modificări făcute în modul public.

Ai grija! Dacă decideți să utilizați scriptul meu, trebuie să știți că acest lucru ar putea (deși nu foarte probabil) rupe unele pagini web. Puteți oricând să le dezactivați în Tampermonkey. Folosiți-l pe propriul risc.