Usurpation de la localisation réseau Apple (gs-loc) sur iOS : Guide complet pour Surge, QX, Loon et Stash
Apprenez à modifier le service de localisation réseau d'Apple (gs-loc) pour usurper la position de votre appareil iOS à l'aide d'outils proxy comme Surge, Quantumult X, Loon et Stash.
Usurpation de la localisation réseau Apple (gs-loc) sur iOS : Guide complet pour Surge, QX, Loon et Stash
Le service de localisation réseau d'Apple (gs-loc) détermine la position approximative de votre appareil en fonction des points d'accès Wi-Fi et des antennes relais à proximité. Il est distinct de la localisation GPS et est utilisé lorsque les signaux GPS sont faibles ou indisponibles. Le projet open source Yu9191/wloc offre un moyen astucieux d'intercepter et de modifier les réponses de gs-loc.apple.com, permettant ainsi d'usurper efficacement votre localisation réseau sur les appareils iOS.
Ce guide couvre tout ce que vous devez savoir : comment cela fonctionne, comment le configurer avec divers outils proxy, et comment utiliser le raccourci compagnon pour changer de localisation en un clic.
Pourquoi usurper la localisation réseau ?
L'usurpation de la localisation réseau est utile pour :
- Tester des applications basées sur la localisation sans se déplacer physiquement.
- Contourner les restrictions géographiques qui reposent sur la localisation réseau (pas seulement l'IP).
- Confidentialité : empêcher les applications de connaître votre véritable localisation lorsque le GPS est désactivé.
Contrairement à l'usurpation GPS (qui nécessite un jailbreak ou du matériel spécial), cette méthode fonctionne sur les appareils iOS standard avec un outil proxy installé.
Comment cela fonctionne
Le projet se compose de deux scripts principaux :
- wloc.js — Intercepte les réponses de
/clls/wloc(le point de terminaison de localisation Apple), analyse la réponse protobuf et remplace les coordonnées par des valeurs définies par l'utilisateur. - wloc-settings.js — Intercepte les requêtes vers
/wloc-settings/saveet écrit les coordonnées souhaitées dans le stockage persistant ($persistentStore).
Lorsque vous utilisez le sélecteur web (ou le raccourci), il envoie une requête à gs-loc.apple.com/wloc-settings/save?lon=x&lat=y. Le module proxy intercepte cela et stocke les coordonnées. Lors de la prochaine demande de localisation réseau, wloc.js lit ces coordonnées stockées et modifie la réponse protobuf avant qu'elle n'atteigne l'application.
Instructions de configuration
Prérequis
- Un outil proxy : Surge, Quantumult X, Loon, Stash ou Shadowrocket.
- Certificat MITM (Man-in-the-Middle) installé et approuvé pour
gs-loc.apple.cometgs-loc-cn.apple.com. - Le proxy doit être actif (icône VPN visible).
Étape 1 : S'abonner au module
Choisissez votre outil et abonnez-vous à l'URL du module correspondant :
| Outil | URL du module |
|---|---|
| Surge | https://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.sgmodule |
| Quantumult X | https://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.conf |
| Loon | https://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.lpx |
| Stash | https://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.stoverride |
| Shadowrocket | https://raw.githubusercontent.com/Yu9191/wloc/refs/heads/main/modules/wloc.module |
Pour Egern, vous pouvez utiliser directement le module Surge.
Étape 2 : Activer MITM
Dans votre outil proxy, activez MITM et ajoutez gs-loc.apple.com et gs-loc-cn.apple.com à la liste des hôtes MITM. Installez le certificat CA généré sur votre appareil iOS et approuvez-le (Réglages > Général > À propos > Réglages de confiance des certificats).
Étape 3 : Choisir une localisation
Vous avez deux options :
Option A : Utiliser le sélecteur web (manuel)
Ouvrez la page du worker public : https://wloc-spoofer.wloc.workers.dev/ (ou votre instance auto-déployée). Recherchez un lieu, appuyez longuement sur la carte pour placer un repère, puis appuyez sur "Enregistrer sur l'appareil". Les coordonnées seront stockées dans le stockage persistant du proxy.
Option B : Utiliser le raccourci (recommandé)
Installez les deux raccourcis :
- Définir la localisation : https://www.icloud.com/shortcuts/a82717d8fdad4e6280866fcf911173f7
- Effacer la localisation : https://www.icloud.com/shortcuts/f42632d406504f24a2cd163af4fe012f
Pour définir une localisation : Ouvrez Apple Plans ou Amap (Gaode), appuyez longuement sur un point, appuyez sur Partager, puis sélectionnez le raccourci "wloc Définir la localisation". Le raccourci extrait les coordonnées (gère la conversion GCJ-02 en WGS84 via un worker) et les envoie au proxy.
Étape 4 : Vérifier
Ouvrez une application qui utilise la localisation réseau (par exemple, Météo, Plans) et vérifiez si la localisation usurpée apparaît. Sinon, assurez-vous que le proxy est actif et que MITM fonctionne.
Problèmes de cache sur iOS 26+
À partir d'iOS 26, Apple a introduit une mise en cache agressive dans locationd. Le système peut réutiliser les données de localisation mises en cache même après que le module a modifié la réponse WLOC. Si vous ne voyez pas de changements :
- Redémarrez votre appareil — Cela vide le cache de
locationd. Activer le mode Avion ou désactiver les services de localisation seul ne fonctionnera pas. - Flux de travail recommandé :
- Définissez la localisation souhaitée via le raccourci ou le sélecteur web.
- Activez le mode Avion, désactivez les services de localisation, puis redémarrez.
- Après le redémarrage, désactivez le mode Avion (gardez le Wi-Fi désactivé), connectez-vous à votre proxy (icône VPN apparaît), puis activez les services de localisation.
- Ouvrez Plans pour vérifier.
Restaurer la localisation réelle
Pour revenir à votre localisation réseau réelle :
- Méthode 1 : Désactivez ou supprimez le module. Le script cesse d'intercepter les requêtes et le système utilise les données réelles. Sur iOS 26+, redémarrez l'appareil pour vider le cache.
- Méthode 2 : Effacez les données du stockage persistant. Le script passe en "mode transparent" lorsqu'aucune coordonnée personnalisée n'est stockée et que les paramètres du module sont par défaut. Exécutez ce qui suit dans l'éditeur de script de votre outil proxy :
- Surge :
$persistentStore.write(null, "wloc_settings") - Quantumult X :
$prefs.removeValueForKey("wloc_settings") - Loon :
$persistentStore.write(null, "wloc_settings")
- Surge :
Redémarrez ensuite l'appareil.
Auto-déploiement du worker
Le worker public a des limites d'utilisation. Pour plus de fiabilité, déployez votre propre instance sur Cloudflare Workers ou Pages :
Workers (un clic)
Workers (manuel)
git clone https://github.com/Yu9191/wloc.git
cd wloc/worker
npm install
npx wrangler login
npm run deploy
Pages (manuel)
git clone https://github.com/Yu9191/wloc.git
cd wloc/worker
npm install
npx wrangler pages deploy dist --project-name <nom-de-votre-projet>
Après le déploiement, mettez à jour l'URL du worker dans le raccourci avec la vôtre.
Paramètres de configuration
| Paramètre | Description | Défaut |
|---|---|---|
longitude |
Longitude cible (le sélecteur web écrase) | null (transparent) |
latitude |
Latitude cible (le sélecteur web écrase) | null (transparent) |
accuracy |
Précision en mètres | 25 |
logLevel |
Niveau de journalisation | info |
Priorité : Stockage du sélecteur web > Paramètres du module > Valeurs par défaut.
Considérations sur la confidentialité
Le worker (/api/parse) est un simple relais : il reçoit un lien de carte, suit les redirections, extrait les coordonnées, convertit GCJ-02 en WGS84 si nécessaire, et renvoie du JSON. Il ne journalise, ne met en cache ni ne stocke aucune donnée. Si vous êtes préoccupé, déployez votre propre instance en utilisant le code open source.
Limitations
- Modifie uniquement la localisation réseau (basée sur le Wi-Fi/antennes relais), pas le GPS. Si le GPS est fort, iOS peut privilégier les données GPS.
- Fonctionne mieux à l'intérieur où le GPS est faible.
- Le sélecteur web doit être accessible via le proxy (Safari doit passer par l'outil proxy) pour que la requête de sauvegarde soit interceptée.
Crédits
- Concept original d'usurpation WLOC par FFF686868
- Cadre de script multiplateforme par NSNanoCat/Util
Avec cette configuration, vous pouvez facilement usurper la localisation réseau de votre appareil iOS pour des tests, la confidentialité ou le déblocage géographique. La combinaison de modules proxy et de raccourcis rend l'opération aussi simple que le partage d'un repère sur une carte.