Хтосьці збудаваў аўтаматызацыю, якая ўключае VPN, калі з’яўляецца картка інкогніта, і яна не працуе надзейна. Прычына структурная, і яе варта зразумець, перш чым наладжваць аўтаматызацыю: правілы VPN для асобных праграм на Android выбіраюць пакеты праграм, а інкогніта — гэта стан унутры аднаго пакета. Правіла не можа адрозніць іх. Апавяшчэнне таксама прыходзіць толькі пасля таго, як браўзер пачаў працу, таму нават правільны трыгер спазняецца. Прайдзіце пяць праверак па парадку; збой на чацвёртай азначае, што змяніць трэба падыход, а не налады.

Праверка першая: што можа выбраць правіла

Праграма VPN будуе тунель з спісаў дазволеных або забароненых праграм, а гэтыя спісы прымаюць назвы пакетаў. Chrome у звычайным рэжыме і Chrome у рэжыме інкогніта — адзін пакет, з адным ідэнтыфікатарам карыстальніка і адным дазволам на сетку, таму правіла, якое ўключае або выключае Chrome, дзейнічае на абодва аднолькава. Платформа не мае ідэнтычнасці на ўзроўні карткі, з якой можна было б супаставіць.

Гэта не дэфект, які трэба абыходзіць; гэта дакладнасць, якую дае API. Калі патрэбна, каб трафік Chrome ішоў праз тунель, а ўсё астатняе — па-за ім, правіла для асобнай праграмы выказвае менавіта гэта. Калі патрэбна, каб праз тунель ішлі толькі прыватныя карткі, а звычайныя напрамую, ніводнае такое правіла гэтага не выкажа, і ніякая логіка апавяшчэнняў не дадасць селектар, якога платформа не мае.

Сцеражыцеся пасткі ідэнтычнасці пакета: бэта- або зборка вытворцы — іншы пакет, чым стабільны браўзер, таму правіла, якое ахоплівае адзін, моўчкі прапускае другі:

adb shell pm list packages | grep -i chrome

Праверка другая: ці можа трыгер калі-небудзь прыйсці дастаткова рана

Слухач апавяшчэнняў назірае за апавяшчэннямі, якія яму дазволена бачыць. Назіранне — не перахоп: на момант існавання апавяшчэння браўзер ужо вырашыў імя і адкрыў злучэнне, і нішто на гэтым шляху не чакае вашай аўтаматызацыі. Задача, якая потым запускае кліент VPN, мусіць чакаць інтэрфейс кліента, любы запыт згоды і рукапоціск тунеля; гэта вымяраецца секундамі, а першы запыт — мілісекундамі.

Выяўленне нетрывалае і з другой прычыны. Тэкст апавяшчэння мяняецца паміж версіямі і лакалізацыямі, таму шаблон, які супадаў з адным выпускам, перастае супадаць пасля абнаўлення, і збой адбываецца моўчкі. Адсутнасць апавяшчэння не даказвае адсутнасці прыватнага аглядання; яна можа азначаць толькі, што радок змяніўся або канал быў заглушаны.

Існуе законны варыянт гэтага працэсу, і ён упарадкаваны, а не рэактыўны: спачатку падключыце адаброны VPN, пацвердзіце сігнал гатоўнасці, які сапраўды даказвае, што тунель нясе трафік, потым адкрыйце сеанс інкогніта праз падтрыманыя сродкі браўзера і спыніцеся, калі праверка гатоўнасці не ўдалася. Гэта абараняе сеанс, які вы вось-вось пачняце, не прыкідваючыся, што абараняеце той, які ўжо ідзе.

Праверка трэцяя: аўдыт дазволу, які вы збіраецеся даць

Доступ да апавяшчэнняў — адчувальны дазвол, які дазваляе службе чытаць апавяшчэнні ўсіх праграм, а не толькі браўзера. Даць яго незнаёмаму інструменту аўтаматызацыі, каб сачыць за адным станам браўзера, — дрэнны абмен, і доступ застаецца пасля заканчэння эксперыменту. Націскі праз спецыяльныя магчымасці яшчэ горшыя: гэта слой сцэнарыяў над інтэрфейсам, а не падтрыманы інтэрфейс кіравання VPN, і любое змяненне кампаноўкі яго ламае.

Перш чым што-небудзь даваць, спытайце, ці дасягаецца той жа вынік падтрыманым механізмам. Калі адказ — патрабаванне палітыкі, то звычайна так і ёсць: платформа можа прымусова ўключыць тунель для праграмы або профілю наогул без службы праслухоўвання.

Праверка чацвёртая: пастаянная праца і блакіроўка, калі патрэбна прымусовае выкананне

Калі браўзер ніколі не павінен выходзіць за межы тунеля, прымусовае выкананне належыць наладам платформы, а не макросу. Android падтрымлівае пастаянны VPN з рэжымам блакіроўкі, які перашкаджае трафіку, калі тунель не ўсталяваны, і кіраваныя прылады могуць атрымаць яго праз палітыку. Пацвердзіце, што прылада мае цяпер, замест здагадак:

adb shell settings get global always_on_vpn_app
adb shell settings get global always_on_vpn_lockdown

Непустое значэнне праграмы азначае, што пакет наладжаны як пастаянны, а значэнне блакіроўкі 1 азначае, што злучэнні па-за тунелем заблакаваныя. Гэтая пара ператварае звычку найлепшых намаганняў у гарантыю і цалкам прыбірае гонку, бо тунель усталёўваецца раней, чым дазваляецца трафік праграм.

Тут важныя дзве мяжы. Працоўныя профілі маюць уласную канфігурацыю VPN, таму правіла, праверанае ў асабістым профілі, нічога не кажа пра працоўны. І асобна ўсталяваны браўзер, нестандартная картка, адкрытая іншай праграмай, або вэб-прагляд унутры праграмы — іншы пакет або кантэкст са сваёй маршрутызацыяй, таму правярайце сапраўдны пакет, а не здагадвайце, што акно іншага выгляду — асобны дамен.

Праверка пятая: апішыце працэс і праверце шлях збою

Што б вы ні выбралі, дакументуйце парадак і ўмову спынення. Для зручнага працэсу гэта значыць: тунель узняты, гатоўнасць даказаная, інкогніта адкрыты, і жорсткае спыненне, калі гатоўнасць не пацвердзілася. Для прымусовага шляху гэта значыць: пастаянная праграма наладжана, блакіроўка ўключана, і чаканыя паводзіны, калі тунель наогул не можа ўзняцца, — гэта адсутнасць трафіку, а не незабаронены трафік.

Затым праверце збой, а не толькі поспех. Адключыце тунель падчас сеансу і паназірайце, што робіць браўзер; заблакуйце працэс праграмы VPN і ўпэўніцеся, што нічога не ўцякае. Нарэшце, трымайце дзве мадэлі прыватнасці асобна ў дакументацыі: інкогніта кіруе часовым станам браўзера і не хавае трафік ад сеткі, а VPN нясе трафік, але не сцірае ўваходы і нічога адпраўленага ў прыватным сеансе.

Падобныя артыкулы