autojs和Auto.js Pro获取微信7.0.4聊天页面会话内容的方法,取微信聊天记录 您所在的位置:网站首页 pr中如何放大缩小视频 autojs和Auto.js Pro获取微信7.0.4聊天页面会话内容的方法,取微信聊天记录

autojs和Auto.js Pro获取微信7.0.4聊天页面会话内容的方法,取微信聊天记录

2022-05-08 17:46| 来源: 网络整理| 查看: 265

前言

有位小伙伴要开发微信机器人。需要获取微信好友消息。

机器人软件要求在免root环境运行。 那么按键精灵是不行的,因为要依赖root。 所以考虑使用Auto.js Pro。

在手机上打开微信聊天会话窗口,查看节点信息,发现不显示text内容。 因此这里没办法通过autojs的text()函数来获取到聊天内容。

实现过程

首先百度一下,看看能不能找到相关的资料。 搜索“autojs 微信”

找到了这篇文章 初探 Autojs ,写了个简单的微信群聊机器人

我把文章内的部分开源代码复制到这里

"auto"; //设置无障碍模式 fast为启用缓存 auto(); //请求截屏权限 因为增加了这个权限请求 启动脚本必须在 autojs APP界面 否则会有问题,主要是连电脑调试要注意 if(!images.requestScreenCapture()){ toast("请求截图失败"); exit(); } function getMsg(){ if(currentActivity() != 'com.tencent.mm.ui.LauncherUI'){ //不在聊天Activity //先判断是否在微信中 if(currentActivity().search('com.tencent.mm') == -1){ //当前 APP 不是微信 return false; //app.launch("com.tencent.mm"); } //不在聊天Activity ,则有可能是文字详情界面 点击任意区域回到聊天界面(点状态栏区域比较保险) press(1 ,1,1); sleep(100); //这个时间根据手机的响应速度可能要稍微调整 ***这里可以根据情况调整*** } if(!id('aab').exists() || !id('y').exists()){ //没有找到输入框则表示当前界面不是聊天窗口 return false; } var last_y = id('y').findOnce(id('y').find().size()-1) if(last_y.childCount() != 2){ return false; } var ji = last_y.child(1).findOne(id('ji')); if(ji){ return ['text' , getText(ji)]; }else { var aec = last_y.child(1).findOne(id('aec')); if(aec){ var jh = last_y.child(1).findOne(id('jh')); if(jh){ var nickname = jh.text(); }else{ var nickname = last_y.child(0).findOne(id('jg')).contentDescription.replace('头像',''); } return ['img' , getImg(aec) ,nickname]; } } return false; } function getText(uiObj){ //微信的聊天文本不能直接获取到 这里模拟双击在文本详情界面获取内容 //获取文字区域 模拟双击 var last_ji_rect = uiObj.bounds(); press(last_ji_rect.centerX() ,last_ji_rect.centerY(),1); sleep(40); //双击间隔时间 ***这里可以根据情况调整*** press(last_ji_rect.centerX() ,last_ji_rect.centerY(),1); var afv = id('afv').findOne().text(); press(last_ji_rect.centerX() ,last_ji_rect.centerY(),1); return afv; } function sendMsg(str){ //设置输入框文本 id('aab').setText(str); //获取标题栏区域并点击,解决发送按钮获取不到的问题 var hj = id('hj').findOne().bounds(); click(hj.centerX(), hj.centerY()); //点击发送 id('aah').click(); }

这段代码是2018年2月份写的,当时的微信版本和autojs的版本都比现在要低很多。 上面的代码,只能作为参考,有些语法和写法,现在的autojs可能已经不再使用了。

代码里有一个getText()函数。

function getText(uiObj){ //微信的聊天文本不能直接获取到 这里模拟双击在文本详情界面获取内容 //获取文字区域 模拟双击 var last_ji_rect = uiObj.bounds(); press(last_ji_rect.centerX() ,last_ji_rect.centerY(),1); sleep(40); //双击间隔时间 ***这里可以根据情况调整*** press(last_ji_rect.centerX() ,last_ji_rect.centerY(),1); var afv = id('afv').findOne().text(); press(last_ji_rect.centerX() ,last_ji_rect.centerY(),1); return afv; }

这段代码的思路,是先找到会话气泡。双击会话气泡的中心点坐标,在弹出的内容里获取文本。 其中uiObj参数,就是会话气泡的节点对象。 在微信7.0.4版本里,测试并没有作用。弹出的内容页,跟前面一样,无法通过text()获取文字内容。 那么,有没有其他办法,能获取微信聊天内容呢?

经过一番研究,找到了一个不错的方法。 这个方法除了微信,其他的能获取到会话气泡节点的APP也可以使用。 在文字右侧下载代码,可查看实现过程。 下面是代码在Visual Studio Code中的调试输出内容:

21:44:58.625/V: 开始运行[[remote]获取微信会话内容聊天记录.js] 21:45:00.531/D: 第1条:又停电了吗? 21:45:00.788/D: 第2条:还没有来电呀? 21:45:00.789/V: ------------ [[remote]获取微信会话内容聊天记录.js]运行结束,用时2.163000秒 开发环境与工具

微信版本:7.0.4 开发IDE:Visual Studio Code1.3.5.1 Auto.js:Pro 7.0.3-7 终端设备1:红米NOTE5A高配版 终端设备1分辨率:720X1280像素 终端设备1安卓版本:7.1.2 终端设备2:红米NOTE7 终端设备2分辨率:1080X2340像素 终端设备2安卓版本:9

开发文档

UI选择器

相关教程

Auto.js Pro安卓全分辨率免ROOT引流脚本开发教程

常见问题 代码下载后可以直接在auto.js PRO 上面运行吗?

代码在Visual Studio Code中写,可以直接发送到autojs中运行和调试。

auto.js4.1普通版能运行吗?

可以。

代码调用了autojs的函数吗?

是的。基于autojs封装的接口来编写的,肯定调用autojs的函数。

脱离autojs能独立运行吗?

当然不能。

其他编程语言怎么获取微信聊天记录?

易语言和java应该都可以实现。本文的代码主要是提供一种思路,一种解决方案。知道了这种思路,其他编程语言也可以实现。

代码支持最新版本的微信吗?

微信版本更新的比较多,不保证此方法一定能支持最新版本。 本文的代码只在微信7.0.4版本下有效。 只提供一种思路,要学会举一反三,活学活用。 其他版本的微信适配问题,请自行研究,不在售后范围。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有