Yu9191/wloc
JavaScript0 / 0
iOS 네트워크 위치 응답을 가로채어 WiFi/기지국 기반 위치를 WLOC 응답 수준에서 대체하는 모듈로서 Surge·Quantumult X·Loon·Stash 등에서 동작한다.
TL;DR
이 레포지토리는 Apple의 네트워크 위치 서비스(WLOC) 응답을 프록시 수준에서 가로채어 반환 좌표를 대체함으로써 iOS에서 네트워크 기반 가상 위치를 적용하는 도구와 워커 파서를 제공한다. 핵심 동작은 온라인 선택 페이지에서 좌표를 저장하면 wloc-settings.js가 이를 $persistentStore에 기록하고 이후 wloc.js가 WLOC 호출 시 protobuf 응답을 파싱하여 좌표를 덮어쓰는 방식으로 이루어진다. 지도 공유 링크 처리는 Cloudflare Workers로 302 리다이렉트를 따라 좌표를 추출하고 GCJ-02→WGS84 변환을 적용하여 일관된 위경도를 반환하며 단축키 연동과 여러 프록시 플랫폼용 모듈을 제공하여 실제 사용 편의성을 높였다. 제약으로는 MITM 인증과 gs-loc 도메인 신뢰가 필수이며 iOS 26 이상에서는 locationd의 캐시 특성 때문에 재부팅이 필요할 수 있다.
핵심 포인트
- Apple Maps와 高德(고덕) 등 서로 다른 지도 서비스의 공유 링크를 하나의 파서로 통합하여 처리한다는 점에서 차별화된다. 공유 링크에서 302 리다이렉트 헤더나 URL 파라미터로 숨겨진 좌표를 워커가 직접 추출하고 GCJ-02→WGS84 변환을 적용하므로 단축키나 클라이언트 스크립트가 복잡한 변환 로직을 구현할 필요가 없다. 이 통합 파서 구조는 링크 포맷이 다른 지도 서비스 간에도 일관된 좌표를 반환하도록 설계되어 운영 편의성을 높인다.
- 여러 프록시 플랫폼용 모듈을 미리 준비하여 플랫폼별 API 차이를 추상화한 점이 실무적 강점이다. Surge와 Loon의 $persistentStore, Quantumult X의 $prefs 등 서로 다른 저장 방식에 맞춘 스크립트를 제공하므로 사용자가 플랫폼별로 코드를 새로 작성하지 않아도 된다. 또한 모듈은 저장된 값이 없을 때 투과 모드로 동작하여 원본 응답을 그대로 전달하는 안전성을 유지한다.
- 단축키(Shortcuts)로 직접 위치를 설정·복구하는 사용자 흐름을 지원하여 UI 기반의 간편성을 확보한 점이 눈에 띈다. 사용자는 지도 앱에서 선택한 지점을 공유 메뉴를 통해 바로 저장하거나 제거할 수 있으며, 단축키는 이 과정을 자동화하여 사용성 장벽을 낮춘다. 단축키와 네트워크 패치 로직을 결합한 설계는 수동 좌표 입력 없이도 즉시 위치를 변경할 수 있게 한다.
- 공용 워커 대신 사용자가 자체적으로 Cloudflare Workers/Pages에 배포할 수 있도록 소스와 배포 스크립트를 제공하여 운영 한계를 회피할 수 있다. README에 포함된 배포 버튼과 wrangler 명령어를 통해 개인 인스턴스를 얻을 수 있으며, 워커는 비영구적 처리 설계로 개인정보 유출 위험을 줄이는 구조로 배포 가능하다. 이 점은 공용 서비스의 요청 한도나 가용성 제약을 회피하려는 사용자에게 실용적이다.
9.1k
STARS
2k
FORKS
+204
TRENDING
0
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.