„Android“ programos lygio VPN ir „Chrome“ inkognito: ką apima taisyklė
Programos lygio taisyklės pasirenka paketus, o ne naršyklės skirtukus, ir pranešimas ateina po pirmos užklausos. Patikrinkite apimtį, laiką ir reikalingą vykdymą.
Kažkas sukūrė automatizaciją, kuri įjungia VPN, kai atsiranda inkognito skirtukas, ir ji neveikia patikimai. Tam yra struktūrinė priežastis, ir verta ją suprasti prieš derinant automatizaciją. „Android“ programos lygio VPN taisyklės pasirenka programų paketus, o inkognito yra vieno paketo vidinė būsena, todėl taisyklė negali atskirti jų dviejų. Pranešimas suveikia po to, kai naršyklė jau pradėjo dirbti, todėl net teisingas trigeris ateina per vėlai. Atlikite toliau pateiktus patikrinimus iš eilės; nesėkmė ketvirtame patikrinime reiškia, kad keisti reikia požiūrį, o ne konfigūraciją.
Pirmas patikrinimas: patvirtinkite, ką gali pasirinkti programos lygio taisyklė
„Android“ VPN programa stato savo tunelį naudodama leidžiamų arba draudžiamų programų sąrašus, o tie sąrašai priima paketų pavadinimus. „Chrome“ įprastu režimu ir „Chrome“ inkognito režimu yra tas pats paketas su tuo pačiu naudotojo ID ir ta pačia tinklo teise, todėl taisyklė, kuri įtraukia arba išskiria „Chrome“, abiem taikoma vienodai. Platforma neturi su skirtuku susietos tapatybės, su kuria būtų galima lyginti.
Tai ne defektas, kurį reikia apeiti; tai detalumas, kurį siūlo API. Jei jūsų reikalavimas yra „Chrome“ srautas per tunelį, o visa kita – lauke, programos lygio taisyklė tai išreiškia tiksliai. Jei jūsų reikalavimas yra tik privatūs skirtukai per tunelį, o įprasti skirtukai eina tiesiogiai, jokia programos lygio taisyklė to negali išreikšti, ir joks pranešimų logikos kiekis nepridės selektoriaus, kurio platforma neturi.
Patikrindami atkreipkite dėmesį į paketo tapatybės spąstus. Beta arba gamintojo versija yra kitas paketas nei stabili naršyklė, todėl taisyklė, apimanti vieną, tyliai praleidžia kitą:
adb shell pm list packages | grep -i chrome
Antras patikrinimas: patikrinkite, ar trigeris kada nors gali būti pakankamai ankstyvas
Pranešimų klausytojas stebi pranešimus, kuriuos jam leidžiama matyti. Stebėjimas nėra perėmimas: naršyklė jau išsprendė vardą ir atidarė ryšį, kai pranešimas egzistuoja, ir niekas tame kelyje nelaukia, kol jūsų automatizacija baigsis. Užduotis, kuri tada paleidžia VPN klientą, turi laukti kliento sąsajos, bet kokio sutikimo raginimo ir tunelio rankos paspaudimo, kurie matuojami sekundėmis, o pirmoji užklausa – milisekundėmis.
Pats aptikimas yra trapus dėl antros priežasties. Pranešimo tekstas keičiasi tarp versijų ir lokalizacijų, todėl šablonas, suderintas su vienu leidimu, po atnaujinimo nebesutampa, o nesėkmė yra tyli. Trūkstamas pranešimas nėra įrodymas, kad nėra privataus naršymo; jis gali reikšti tik tai, kad pasikeitė eilutė arba kanalas buvo nutildytas.
Yra teisėta šio darbo eigos versija, ir ji yra išdėstyta, o ne reaktyvi: pirmiausia prijunkite patvirtintą VPN, patvirtinkite pasirengimo signalą, kuris tikrai įrodo, kad tunelis perduoda srautą, tada atidarykite inkognito sesiją per palaikomas naršyklės valdiklius ir sustokite, jei pasirengimo patikrinimas nepavyksta. Tai apsaugo sesiją, kurią ketinate pradėti, neapsimetant, kad saugote jau veikiančią.
Trečias patikrinimas: audituokite leidimą, kurį ketinate suteikti
Prieiga prie pranešimų yra jautrus leidimas, leidžiantis paslaugai skaityti visų programų pranešimus, ne tik naršyklės. Suteikti jį nepažįstamam automatizavimo įrankiui, kad būtų stebima viena naršyklės būsena, yra blogas mainas, o prieiga išlieka pasibaigus eksperimentui. Prieinamumo valdomi bakstelėjimai yra dar blogesni: jie yra scenarijų sluoksnis virš sąsajos, o ne palaikoma VPN valdymo sąsaja, ir lūžta su kiekvienu maketo pakeitimu.
Prieš ką nors suteikdami, paklauskite, ar tas pats rezultatas pasiekiamas palaikomu mechanizmu. Jei atsakymas yra politikos reikalavimas, paprastai taip: platforma gali priverstinai taikyti tunelį programai ar profiliui be jokios klausymosi paslaugos.
Ketvirtas patikrinimas: kai reikalavimas yra vykdymas, naudokite visada įjungtą ir blokavimą
Jei naršyklė niekada neturi bendrauti už tunelio ribų, vykdymas priklauso platformos nustatymams, o ne makrokomandai. „Android“ palaiko visada įjungtą VPN su blokavimo režimu, kuris neleidžia srauto, kai tunelis nesukurtas, o valdomi įrenginiai gali jį gauti pagal politiką. Patvirtinkite, ką įrenginys dabar turi, o ne darykite prielaidų:
adb shell settings get global always_on_vpn_app
adb shell settings get global always_on_vpn_lockdown
Ne nulinė programos reikšmė reiškia, kad paketas sukonfigūruotas kaip visada įjungtas, o blokavimo reikšmė 1 reiškia, kad ryšiai už tunelio ribų yra blokuojami. Būtent ši pora paverčia geriausių pastangų įprotį garantija ir visiškai pašalina lenktynes, nes tunelis sukuriamas prieš leidžiant programos srautą.
Čia verta paminėti dvi ribas. Darbo profiliai turi savo VPN konfigūraciją, todėl asmeniniame profilyje patikrinta taisyklė nieko nesako apie darbo profilį. O atskirai įdiegta naršyklė, kitos programos atidarytas pasirinktinis skirtukas arba programos viduje esanti webview yra kitas paketas ar kontekstas su savo maršrutizavimu, todėl patikrinkite tikrąjį paketą, o ne manykite, kad kitokio stiliaus langas yra atskiras domenas.
Penktas patikrinimas: užrašykite darbo eigą ir išbandykite nesėkmės kelią
Kad ir ką pasirinktumėte, dokumentuokite tvarką ir sustabdymo sąlygą. Patogumo darbo eigai tai reiškia: tunelis įjungtas, pasirengimas įrodytas, inkognito atidarytas ir kietas sustojimas, jei pasirengimas nepavyksta. Vykdymo keliui tai reiškia: visada įjungta programa sukonfigūruota, blokavimas įjungtas ir laukiamas elgesys, kai tunelis apskritai negali būti pakeltas, tai yra jokio srauto, o ne neapsaugoto srauto.
Tada išbandykite nesėkmę, o ne tik sėkmę. Atjunkite tunelį sesijos metu ir stebėkite, ką daro naršyklė; užblokuokite VPN programos procesą ir patvirtinkite, kad niekas nenuteka. Galiausiai naudotojo dokumentacijoje laikykite du privatumo modelius atskirai: inkognito valdo laikiną naršyklės būseną ir neslepia srauto nuo tinklo, o VPN perduoda srautą, bet netrina prisijungimų ar nieko, kas išsiųsta privačioje sesijoje.