Ці можна схаваць падмену геалакацыі ад праграм
«Як зрабіць, каб падмену не было відаць» пытаюцца часцей за ўсё астатняе. Кароткі адказ: схаваць першую і самую відавочную прыкмету тэхнічна магчыма, але выніку, дзеля якога гэта робіцца, яно не дае — праграма даведваецца пра падмену яшчэ трыма незалежнымі спосабамі, а кошт мадыфікацыі сістэмы не суразмерны. Ніжэй — як уладкавана выяўленне і чаму мы гэты шлях не апісваем і не падтрымліваем.
Як праграма даведваецца пра падмену
Узроўняў чатыры, і яны не залежаць адзін ад аднаго.
Першы — сцяжок у самой каардынаты. Android пазначае кожную кропку ад тэставай крыніцы асобным полем, і праграма чытае яго адным радком кода. Гэта адкрыты, убудаваны ў сістэму інтэрфейс, а не сакрэтная праверка.
Другі — цэласнасць прылады. Разблакаваны загрузчык і root бачныя для атэстацыі платформы незалежна ад таго, што адбываецца з каардынатамі. Праграме не трэба ведаць, ці падмяняеце вы месцазнаходжанне: дастаткова ведаць, што сістэма мадыфікаваная, і адмовіцца працаваць наогул.
Трэці — звярка з наваколлем. Тэлефон бачыць вакол сябе сеткі Wi-Fi і сотавыя вышкі, і іх набор не адпавядае каардынаце, у якую вы «пераехалі». Супаставіць адно з другім сэрвісу нескладана.
Чацвёрты — серверная аналітыка. Пералёт на пяцьсот кіламетраў за хвіліну, ідэальна роўная траекторыя, дакладнасць, якая не мяняецца ні на метр, — усё гэта відаць на баку сэрвісу без ніводнага сцяжка на прыладзе.

Што робіць шлях з root і чаго не робіць
Інструкцыі ў інтэрнэце апісваюць адно і тое ж: разблакаваць загрузчык, атрымаць root, усталяваць модуль, які ўмешваецца ў сістэмны ўзровень і здымае з каардынат сцяжок фіктыўнай крыніцы.
Гэта закрывае роўна першы з чатырох узроўняў. Атэстацыя прылады пасля разблакіроўкі загрузчыка па вызначэнні не праходзіць — і не праходзіць не з-за падмены, а з-за самой мадыфікацыі. Звярка з сеткамі і серверная аналітыка да прылады наогул не маюць дачынення: іх выконвае сэрвіс, і ніякі модуль на тэлефоне на іх не ўплывае.
У выніку атрымліваецца абмен: вы выключаеце самую прыкметную праверку і адначасова ўключаеце другую, значна больш грубую, — «прылада мадыфікаваная». Для праграм, дзеля якіх усё задумвалася (банкі, дастаўка, карпаратыўны ўлік), вынік горшы, чым быў: раней яны працавалі і проста ігнаравалі падменныя каардынаты, цяпер не запускаюцца зусім.
Што перастае працаваць пасля мадыфікацыі
На большасці прылад разблакіроўка загрузчыка сцірае ўсе дадзеныя і пазбаўляе гарантыі — гэта афіцыйная пазіцыя вытворцаў, а не дробны шрыфт.
Далей па спісе: банкаўскія праграмы і бескантактавая аплата адмаўляюцца працаваць на прыладзе, якая не прайшла атэстацыю; тое ж — частка дзяржаўных і карпаратыўных сэрвісаў; абнаўленні «па паветры» перастаюць усталёўвацца або ламаюць сістэму пры ўсталёўцы; праверкі цэласнасці перастаюць вас абараняць — шкодная праграма з доступам да root атрымлівае тыя ж магчымасці, што і карысная.
Асобны пункт — рызыка пакінуць тэлефон непрацаздольным. Памылка прашыўкі на прыладзе з заблакаваным крытычным раздзелам выпраўляецца ў сэрвісным цэнтры, і не заўсёды бясплатна.

Чаму гэта яшчэ і нестабільна
Нават калі адкласці ўсё вышэйсказанае, у такога рашэння кароткае жыццё. Сцяжок фіктыўнай крыніцы мяняўся разам з версіямі Android: да Android 12 праграмы чыталі адно поле, з Android 12 — іншае, і старыя абыходы перасталі працаваць. Атэстацыя платформы абнаўляецца на баку сэрвісу, а не прылады, — значыць, ламаецца без вашага ўдзелу і ў адвольны момант.
На практыцы гэта азначае пастаянную вазню: пасля кожнага абнаўлення сістэмы, праграмы або самой атэстацыі трэба правяраць, ці працуе яшчэ абыход, і зноў нешта пераналаджваць. Мы не лічым гэта прымальным і нікому не раім — менавіта таму Mock Location не хавае сцяжок і не будзе.
Чым гэта заканчваецца для акаўнта
Сэрвісы, якія правяраюць месцазнаходжанне, робяць гэта не са шкоднасці: для іх месцазнаходжанне — доказ факту. Кур'ер адзначыў дастаўку, супрацоўнік адзначыўся на аб'екце, карыстальнік пацвердзіў рэгіён для тарыфу. Падробка такога доказу парушае правілы сэрвісу, а часта і дагавор.
Следствы прадказальныя: блакіроўка акаўнта без вяртання сродкаў і без разгляду, у працоўных сцэнарыях — размова з працадаўцам, у асобных выпадках — юрыдычныя прэтэнзіі. Наша пазіцыя пра законнасць падмены як такой — у асобным адказе: мяняць уласнае месцазнаходжанне вы маеце права, а ўводзіць у зман сэрвіс, які на гэтае месцазнаходжанне абапіраецца, — ужо іншая гісторыя.
Што рабіць, калі падмена патрэбна для законнай задачы
Добрая навіна: пераважная большасць сцэнарыяў працуе без усякага хавання, бо праграмы там проста не чытаюць сцяжок.
Карты і навігацыя, надвор'е, пошук побач, мясцовая выдача і цэны, тэсціраванне геазалежных сцэнарыяў — усё гэта прымае падменныя каардынаты як ёсць. Ці ўваходзіць патрэбная праграма ў гэтую групу, можна праверыць за хвіліну: уключыце падмену і паглядзіце, што яна пакажа (як праверыць).
Калі праграма аказалася з тых, што чытаюць сцяжок, адзіны працоўны варыянт — не абыходзіць праверку, а вырашыць задачу інакш. Для рэгіянальнага кантэнту часцей патрэбна сетка, а не GPS: падмена геалакацыі або VPN. Для тэсціравання ўласнай праграмы — эмулятар і адладачныя зборкі, дзе падмена ўбудавана і нікога не падманвае (разбор для QA).
Калі коратка
Выключыць выяўленне падмены цалкам нельга: узроўняў праверкі чатыры, і мадыфікацыя сістэмы закрывае адзін з іх, адначасова ўключаючы сцяжок «прылада мадыфікаваная», з-за якога тыя ж праграмы адмаўляюць яшчэ раней.
Mock Location працуе строга ў межах штатнага механізму Android: што гэта за механізм, чаму root не патрэбны і чаму праграма бачыць сапраўдныя каардынаты, разабрана асобна. Інструкцый па абыходзе праверак мы не публікуем — не з асцярожнасці, а таму, што яны не вырашаюць задачу і ствараюць карыстальніку праблемы, большыя за зыходную.