2025 年了,微信小程序虚拟定位用什么模块?

145 天前
 cheneydog
公司换了打卡程序了,LSposed 已装好,找不到合适的模块。
3479 次点击
所在节点    Android
3 条回复
hadesy
145 天前
private static void HookLocation(ClassLoader classLoader) throws ClassNotFoundException {
//坐标拾取系统 https://lbs.qq.com/getPoint/
double latitude = 0.0;
double longitude = 0.0;

Class clazz = classLoader.loadClass(
"com.tencent.map.geolocation.sapp.TencentLocationManager");
XposedHelpers.findAndHookMethod(clazz, "requestLocationUpdates",
"com.tencent.map.geolocation.sapp.TencentLocationRequest",
"com.tencent.map.geolocation.sapp.TencentLocationListener", new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
XposedBridge.log("requestLocationUpdates");
Class tencentLocationListenerClass = param.args[1].getClass();
XposedHelpers.findAndHookMethod(tencentLocationListenerClass,
"onLocationChanged",
"com.tencent.map.geolocation.sapp.TencentLocation",
int.class, String.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
Class tencentLocation = param.args[0].getClass();
XposedHelpers.findAndHookMethod(tencentLocation,
"getLatitude",
new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
XposedBridge.log("requestLocationUpdates.getLatitude:"+ param.getResult());
param.setResult(latitude);
}
});
XposedHelpers.findAndHookMethod(tencentLocation,
"getLongitude",
new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
XposedBridge.log("requestLocationUpdates.getLongitude:"+ param.getResult());
param.setResult(longitude);
}
});


}
});
}
}
);
}
hahiru
144 天前
运动模拟器+Websocket 插件
liyafe1997
144 天前
安卓上可能没有好的虚拟定位方案,因为现在很多定位是基于 WIFI 蓝牙的,甚至这个优先级比 GPS 高(也就是如果两者位置偏差大的话,优先信基于网络的定位)。因为 GPS 好模拟,网络位置真不好模拟,你没有特定坐标下的 WIFI 蓝牙 MAC 地址列表和基站信息。除非你跑去那个地方,抓一个回来。

可以尝试用 Fake Location ,这个原理似乎是屏蔽掉基于网络的位置(返回空 WIFI/蓝牙列表给 APP ),然后模拟 GPS 位置。但是在有的 App 比如支付宝上不管用,支付宝只会尝试使用网络定位,压根不管 GPS 的位置。如果它无法获取 WIFI/蓝牙列表和基站信息,那就直接显示定位失败。

之前尝试给支付宝搞虚拟定位(主要是因为在海外,支付宝没法用收款码,当时刷私人收款码花呗还能套现),拿安卓机折腾了半天都不行,就是上面的原因。最后拿 iPhone 搞定了。

iPhone 虚拟定位非常非常简单,用爱思助手这类软件就能做到(有 API 能通过 USB 虚拟定位,应该主要是给开发者的),然后因为 iOS 没有给 App 扫描 WIFI 的 API ,所以就算网络定位,也只能通过苹果的服务进行,App 只能调系统 API 来实现定位,听系统的。于是这类虚拟定位只要 Hook 了系统 API ,对 App 来说理论上就是透明的。

综上所述,试试拿 iOS 搞。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/1104800

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX