帮助中心

快到年底了,又到了拼手速抢红包的时候了;其实很早之前就做过抢红包软件了,包括QQ和微信;所以自己开始重新写一个抢红包的软件(其实是因为实在是太简单了),只做微信,因为QQ发红包的确用的太少了,而且QQ红包花样也太多了,什么唱歌、画画、成语接龙...配置要求Android系统 7.0及以上,辅助功能7.0以上支持模拟点击,模拟点击不是必须的,但是对于实现快很重要。实现原理实现方法就是利用Androi

当前位置: 首页  >> 新闻中心  >> 帮助中心  >> 查看详情

安卓(Android)平台如何用微信抢红包服务器搭建抢微信红包辅助系统

浏览量:1139 时间:2023-08-16 05:34:05

快到年底了,又到了拼手速抢红包的时候了;其实很早之前就做过抢红包软件了,包括QQ和微信;所以自己开始重新写一个抢红包的软件(其实是因为实在是太简单了),只做微信,因为QQ发红包的确用的太少了,而且QQ红包花样也太多了,什么唱歌、画画、成语接龙...

配置要求

序列号 CPU RAM HDD 带宽 售价(美元) 免费试用
香港服务器1 E5-2620 32G 1T HDD 50M/无限流量 $196.00 立即申请
香港服务器2 E5-2650 32G 1T HDD 50M/无限流量 $256.00 立即申请
香港服务器3 E5-2680 32G 1T HDD 50M/无限流量 $316.00 立即申请
香港服务器4 E5-2690 32G 1T HDD 50M/无限流量 $336.00 立即申请
香港服务器5 E5-2697 32G 1T HDD 50M/无限流量 $376.00 立即申请
香港服务器6 E5-2620*2 32G 1T HDD 50M/无限流量 $376.00 立即申请
香港服务器7 E5-2650*2 32G 1T HDD 50M/无限流量 $436.00 立即申请
香港服务器8 E5-2680*2 32G 1T HDD 50M/无限流量 $476.00 立即申请
香港服务器9 E5-2690*2 32G 1T HDD 50M/无限流量 $556.00 立即申请
香港服务器10 E5-2697*2 32G 1T HDD 50M/无限流量 $596.00 立即申请
香港服务器11 E5-2680v4*2 32G 1T HDD 50M/无限流量 $696.00 立即申请
香港服务器12 E5-2698v4*2 32G 1T HDD 50M/无限流量 $796.00 立即申请

Android系统 7.0及以上,辅助功能7.0以上支持模拟点击,模拟点击不是必须的,但是对于实现快很重要。

实现原理

实现方法就是利用Android辅助功能,开启辅助功能相当于开启了一个服务,在手机界面改变的时候,就能监听到该页面的一些信息并且能拿到界面的一些控件,然后可以对控件进行模拟点击,从而实现我们想要的功能。

除此以外,不仅能够对获取到的控件进行模拟点击,在Android7.0及以上的版本,我们可以模拟任意位置的点击包括触摸、滑动等等,就是说我们可以实现任何人能够进行的操作,这个是很有用的,可以做出很多有意思的东西,如果再配上截图、录屏和图像识别,就更有意思了。

模拟点击,就是说我们的手机界面自己动,整个流程像是一只手在帮你操作一样的;其实我见过更牛逼的方法,连解锁都不需要直接就领了红包,界面没有任何变化的;感觉上是通过通信,发数据给微信服务器实现的,当然这种是需要root权限的,并且得去解析微信的通信协议,我自然没时间去搞(其实有时间也不一定能搞出来)。

具体实现

辅助功能

首先是辅助功能,新建一个Service继承AccessibilityService

public class LuckMoneyService extends AccessibilityService

然后去AndroidManifest文件里面去注册一下这个Service

android:name=".service.LuckMoneyService"

android:label="小圆脸的红包助手"

android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">

android:name="android.accessibilityservice"

android:resource="@xml/accessible_service_wx_config" />

在meta-data节点下有个resource值,这是个xml文件,里面配置了该辅助的一些信息,在res目录下新建一个文件夹,名字叫xml,然后新建一个xml文件,名字和resource配置的一样就行了

android:accessibilityEventTypes="typeWindowStateChanged|typeWindowContentChanged|typeNotificationStateChanged"

android:accessibilityFeedbackType="feedbackAllMask"

android:accessibilityFlags="flagDefault|flagRetrieveInteractiveWindows|flagIncludeNotImportantViews|flagReportViewIds"

android:canRetrieveWindowContent="true"

android:canRequestFilterKeyEvents="true"

android:description="@string/wx_luck_money"

android:canRequestEnhancedWebAccessibility="true"

android:notificationTimeout="20"

android:packageNames="com.tencent.mm"

android:canPerformGestures="true" />

里面配置了一些参数,比如notificationTimeout是指定多少毫秒监听一次界面变化的,packageNames是指定监听哪个应用的,删掉这个配置就是监听全局,建议一定要删除掉,我这里只是展示用,description是对于该辅助的描述,其他配置不管也罢。

然后在LuckMoneyService里面重写一下onAccessibilityEvent方法

@Override

public void onAccessibilityEvent(AccessibilityEvent event) {

//界面发生了变化

}

每当界面改变的时候就会回调这个方法,通过event我们就可以获取到界面的信息包括界面上的控件

简单的用法

//获取当前界面包名

String packageName = event.getPackageName().toString();

//获取当前类名

String className = event.getClassName().toString();

//获取当前界面父布局的控件

AccessibilityNodeInfo accessibilityNodeInfo = getRootInActiveWindow();

//在父布局里面根据子控件**显示的文字**找到该子控件

List nodeInfoList = accessibilityNodeInfo.findAccessibilityNodeInfosByText(text);

//在父布局里面根据子控件的**id**找到该子控件

List nodeInfoList = accessibilityNodeInfo.findAccessibilityNodeInfosByViewId(id);

//点击该控件

nodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK);

上面的操作都比较基础,根据控件显示的文字查找控件,找出来的肯定是TextView和Button了,根据ID查找控件,ID就是指的写布局文件的时候设置的控件的ID

模拟触摸

模拟触摸就是可以模拟人的触摸动作,也比较简单

protected void gestureOnScreen(Path path, long startTime, long duration,

AccessibilityService.GestureResultCallback callback) {

GestureDescription.Builder builde = new GestureDescription.Builder();

builde.addStroke(new GestureDescription.StrokeDescription(path, startTime, duration));

GestureDescription gestureDescription = builde.build();

dispatchGesture(gestureDescription, callback, null);

}

可以看到需要传入path就是一个路径嘛,模拟滑动的路径,用canvas画过画的都知道这东西还是比较简单的,不清楚也没关系,继续看,startTime就是多久后开始模拟事件,duration就是该滑动的时间,其他回调什么的为空就可以了;

辅助功能能做的东西大概就上面这些了,接下来看看

微信应用外的红包处理

首先实现在微信界面外怎么抢红包,在微信界面外有红包出现必然会在通知栏会显示微信红包(如果没开通知消息,那你自己开一下不就完事了吗),只需要在回调方法里面判断一下是不是通知消息,如果是通知消息,获取里面的信息,判断是不是微信红包通知消息,是就点击该消息,会自动跳转到聊天界面;

因为我们是监听界面变化来实现功能的,所以在一个界面触发了界面变化的时候,接下来的处理就应该交给下一个界面的方法了,所以微信界面外的操作就是这些了

/**

* 红包标识字段

*/

public static final String HONG_BAO_TXT = "[微信红包]";

//通知栏消息,判断是不是红包消息

if (event.getParcelableData() != null && event.getParcelableData() instanceof Notification) {

Notification notification = (Notification) event.getParcelableData();

//获取通知消息详情

String content = notification.tickerText.toString();

//解析消息

String[] msg = content.split(":");

String text = msg[1].trim();

if (text.contains(HONG_BAO_TXT)) {

PendingIntent pendingIntent = notification.contentIntent;

try {

//点击消息,进入聊天界面

pendingIntent.send();

} catch (PendingIntent.CanceledException e) {

24小时服务器机房客服
帮助中心
  • 24H在线
  • Tg纸飞机