VPN для асобных праграм на Android і рэжым інкогніта ў Chrome: што ахоплівае правіла
Правілы для асобных праграм выбіраюць пакеты, а не карткі браўзера, і апавяшчэнне прыходзіць пасля першага запыту. Праверце ахоп, момант і патрэбнае прымусовае выкананне.
Хтосьці збудаваў аўтаматызацыю, якая ўключае 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 нясе трафік, але не сцірае ўваходы і нічога адпраўленага ў прыватным сеансе.