微信群控系统的实现原理,微信群控系统源码的核心实现代码

       微信群控系统是市场上比较流行的微信加人营销工具,很多人在很好的利用这一工具后掘到了一桶桶金。其应用的行业也是十分广泛,只要是需要网络营销推广,需要获取大量粉丝的行业,需求任意定位加人的,批量自动加人的等等,都能用到该工具。本人带领技术团队也开发了一套完整的群控系统,下面就微信群控系统的实现原理,以及部分核心代码供大家参考。

      不同于市场上的其他群控系统,我们研发的群控系统是可以运行在任何电脑上的,不用再购买另外一台服务器,对群控系统的操作便捷性以及实用性都做了极大的优化。该系统的实现主要分为几个部分,一是pc端操作软件,二是adb底层传输,三是手机端模拟点击,四是,手机端底层劫持。如果是想控制授权,还在再加一个部分就是web服务器端授权系统。

      pc端操作软件,主要是把所有手机的界面投射到电脑上,实现手机和电脑的同步操作,以及一些自动化操功能。其中比较核心的问题是手机界面实时投射到电脑上,网上有很多介绍使用asm等方法实现,也有介绍各种截图传输方式的。但这里我想告诉大家大部分方式都不能实现实时传输,都会延迟几秒钟。如果是正常的截图传输的方式很多时候都是感觉很卡顿。    

     解决这个问题就是要用到adb了,adb相当于电脑和手机的传输通道,群控系统的实现主要环节就在于adb的各种命令的应用。但正常的adb是无法完成所有的功能的,在本项目的开发过程中,我们在Linux平台上下载Google的Android源码,修改了adb的文件后,重新编译生成我们自己想要的adb。

    手机界面的实时传输在我们项目中用的是socket传输的,在进行了各种优化之后,传输不会有任何延迟,无任何卡顿现象。

     手机端主要是模拟点击和底层劫持,模拟点击实现这里我们使用的是uiautomator,当然,这里模拟点击实现的方式各不先同,大家可以选择一种自己熟悉的方式来实现。底层劫持的话主要用到xposed,在全国定位,自动摇一摇等功能时都要用到底层劫持,还有就是为了减少执行的步骤,打开微信的时候直接跳到微信的某个页面,都会用到底层劫持。

     以下是手机端的核心实现代码,主要是手机端视频流的获取,实时向pc端传输。实时投屏的具体实现。利用socket实时传输,每秒传送的帧数可以自由控制,在实际的实现过程中,我们大概用到的是每秒30帧左右就十分流畅。核心代码为:


new Thread(new Runnable() {
    public void run() {
        try {
            if(popUp)
            screenshot = Utilities.bitmapMatrix(screenshot);
            else
                screenshot = Utilities.bitmapMatrix1(screenshot);
            baos = new ByteArrayOutputStream();
            screenshot.compress(Bitmap.CompressFormat.JPEG, 30, baos);
            data = baos.toByteArray();
            dos.writeInt(data.length);
            dos.write(data);
            if (baos != null) {
                baos.flush();
            }
        } catch (Exception e) {

        } finally {
            if (baos != null) {
                try {
                    baos.close();
                    baos = null;
                } catch (IOException ioe) {
                }
            }
            screenshot.recycle();
            screenshot = null;
            data = null;
        }
        try {
            if (baos != null) {
                baos.close();
                baos = null;
            }
            if (screenshot != null) {
                screenshot.recycle();
                screenshot = null;
                data = null;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.gc();
    }}).run();

      pc端接收实时传输,获取每一帧图片的处理代码为:互相学习请加V:393231639。


   public static Bitmap ReceiveVarData(Socket s)
        {
            string ss = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff");
            try
            {
                int total = 0;
                int recv = 0;
                byte[] datasize = new byte[4];
                recv = s.Receive(datasize, 0, 4, 0);
                if (recv == 0)
                {
                    //已经断开连接,需要重新连接
                    return null;
                }
                byte[] datasize3 = new byte[4];
                for (int i = 0; i < 4; i++)
                {
                    datasize3[i] = datasize[3 - i];
                }
                int size = BitConverter.ToInt32(datasize3, 0);


                int dataleft = size;
                byte[] data = new byte[size];
                MemoryStream fs = new MemoryStream();


                while (total < size)
                {
                    recv = s.Receive(data, total, dataleft, 0);


                    if (recv == 0)
                    {
                        //已经断开连接,需要重新连接
                        data = null;
                        return null;
                        // break;  
                    }
                    // fs.Write(data, 0, recv);
                    total += recv;
                    dataleft -= recv;
                }
                fs.Write(data, 0, size);
                Bitmap ImgBitmap = new Bitmap(fs);
                fs.Close();
                // fs.Flush();
                // return data;
                string ss1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff");


                return ImgBitmap;
            }
            catch (Exception e)
            {
                return null;
            }
        }


获取到每帧传输后实时显示在电脑端。以下为效果图。







©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页