本篇目的在于折腾。

用户痛点

因为公司上下班需要打卡,而可能出现忘记打卡的情况。针对此情况,公司有了人性化的考虑,每月免费提供2次补卡机会。但是对于贪婪的程序员,这是远远不够的。所以我们想通过技术改变些什么

需求分析

打卡需要通过公司自己的客户端输入手机号获取验证码登陆,然后定位在公司附近N公里,点击上班打卡或者下班打卡。

要素

  • 手机号登陆
  • 位置
  • 时间
  • 点击操作

方案设计

  • 接口调用方式
    通过抓包获取打卡接口请求,然后调用接口请求完成打卡
  • 篡改位置信息方式
    手机上安装可修改定位信息的软件,修改地址,突破地域限制

可行性调研

通过Fiddler 抓包分析发现请求中有签名
签名通过客户端里的算法规则生成。
拿不到规则就拿不到签名,就无法直接调用请求。
获取规则这可能涉及到客户端的反编译了,暂时未接触过。
调接口的方式走不通,尝试篡改位置信息
网上可以找到虚拟定位软件,但是多数都收费。
虽然能满足当前需求,但是总感觉被收费不舒服,而且整个过程还是有很多机械化的操作。

重新给需求加戏

我希望把整个过程自动化解放双手,比如发一条“打卡”的消息,就能把事情做了
既然提高了效率,就应该提供更大的输出,最好能够帮对那些忘记打卡的同事伸出援手。
那不如开个公众号吧,谁需要了,发送手机号码,和验证码,就可以帮你完成。
既然提供服务了,就不能用自己的手机了。需要一台长期不关机的电脑做服务器
在“服务器”里用虚拟机来完成。这样一来,自己的手机也不必安装各种所需的工具软件

摸索过程

模拟器先用了蓝叠,后来发现有些软件在上面提示装不了
又换了mumu模拟器,所需的软件都能安装而且开启速度也更快了。
自动化实现上,先用了按键精灵,但是因为按键精灵的脚本的触发条件感觉不能做到对事件监控触发。
后来改用Tasker。

最终方案一句话总结:
主QQ发消息指令给 ,公司电脑模拟器上的QQ,触发模拟器上Tasker的监听,触发打卡任务执行

具体实现

Tasker及其插件下载地址
mumu模拟器下载地址

  • 在模拟器中安装Tasker及其插件
  • 在模拟器中安装 QQ 作为接收消息的服务号
  • 打开Tasker,完成相应的授权

Tasker首页点击右下角的 +
在弹出的列表中依次选择 事件——插件——NotificationListener——NotificationListener
操作后看到如图

点击右侧铅笔进入如下界面,并按照图示设置
Apps :是你要监听的应用,这里我选择手机QQ
Title :是你的QQ收到消息的标题,如下图中的,我用的是Test(也就是我要发消息给过来的QQ,在这个QQ上的备注名称是Test)
Text :是发过来的文本,如图,我填写的是“打卡”

配置好后,自动弹出新建任务,输入任务名称后
依次选择 【程序】——【启动应用】——【选择你要打卡的应用】——返回(找不到确认按钮,就返回到上层确认)
设置后如图,可以点击左下角的运行按钮测试能否成功启动设置的应用

如果成功启动,再尝试能否在接受到消息时触发
这里我们可以理解到
这个软件本质上通过【配置】+【任务】组合的方式为我们提供了一个【在什么场景触发】【做什么任务】的自动化支持
我们现在已经做了,当收到QQ推送的由Test发出的内容为“打卡”的消息时,则启动需要签到的应用,过程中你可能需要解决如下问题

  • 【授权】为确保QQ消息发过来会在通知栏显示,你可能需要给应用授权
  • 【杀进程】QQ如果没有启动,是不会通知的,如果在前台开着也不会通知。我的做法是,先打卡QQ,然后在任务栏把他×掉

请确保以上测试通过,再进行下一步

现在我们需要解决怎么打卡的问题
考虑到登陆后一直使用,我们的登陆态不会过期,所以暂时我们的自动化脚本暂时不必包含登陆
而打卡通常就是点一下按钮就完事了。那么我们来完成它
在【任务】Tab页,打开我们的任务,点击右下角的“+”,
依次选择【代码】——【运行外壳】
输入 命令 【input tap 33 44】 并勾选【使用Root】
这个命令意思是在屏幕上坐标为 33,44点一下


这个坐标如何获取呢?
打开模拟器【设置】,搜索【指针】,选择【指针位置】开启【开发者】和【指针位置】


开启后,会多出如图一栏,你在屏幕上的点击,将会显示坐标,其中X,Y就是我们需要的坐标

获取你需要点击打卡按钮的坐标,修改刚填写的33 44

现在你已经会点击APP里的任意地方了,我们再来理一理关于打卡,我们需要做的事情

  • 打开应用
  • 延时(为了避免应用打开了,但是页面没加载好啥的,或者你可能还需要点击下【获取定位】)
  • 点击【打卡】
  • 延时(为了等打卡结果出来)
  • 截图(为了确保是打卡成功了,后面可以发到你的QQ上来确认)
  • 延时(为了等截图完成)
  • 打开QQ(为了把截图发回去)
    • 点击要回复的QQ(可以在QQ里置顶聊天,确保位置不变)
    • 点击【选择图片按钮】
    • 延时
    • 点击【选择图片】因为用模拟器,可以确保没有其他图片,而我们截图的图片每次是覆盖,所以位置固定,可以点击固定位置来选择这个图片
    • 延时

    • 点击【发送】按钮
    • 延时
    • 点击【返回】按钮
    • 延时
    • 点击【左上角自己的头像】(为了弹出菜单页面)
    • 延时
    • 点击【设置】按钮
    • 点击【账号管理】选项
    • 延时
    • 点击【退出QQ】选项
    • 延时
    • 点击【确认】按钮(退出QQ,如果不退出QQ,则再次发消息,因为QQ在前台,消息会直接到QQ里,不会进通知栏)

以上我们总得来说也就用了几个简单的命令
【点击指定位置】 input tap x y
【截图】screencap -p /sdcard/ImgCheck/screen.png
【延时】sleep 秒数

尝试下,用QQ,给模拟器登陆的QQ发送“打卡”指令,测试下是否可行吧

本文纯属娱乐,采用本博文章提供的解决方案,风险读者自担。
所造成的损失,如程序,文件,数据造成损失和混坏,博主不承担责任。
转载本博文章须在文章明显处注明原文的链接和作者信息。便于读者找到原文的更新版。

自动化打卡,Tasker+模拟器远程打卡相关推荐

  1. 上传音乐到Android模拟器的SD卡,并在Android模拟器上播放

    这几天学习Android,准备写个音乐播放软件,以后会介绍.不过,在新建的模拟器中并没有音乐.因为模拟器是新配置的,里面没有音乐或视频等文件,需要用户自己添加进去.下面介绍一下我添加文件到模拟器的SD ...

  2. Android模拟器中sd卡的创建和文件的上传

    在使用android 模拟器的sd卡上传文件的时候出现过如下的错误: ailed to push selection: Invalidargument Failed to push the item( ...

  3. 逍遥安卓模拟器卡android,逍遥安卓模拟器怎么设置不卡 逍遥模拟器不流畅解决方法...

    逍遥安卓模拟器是一款非常好用的电脑手游模拟器,不过有很多小伙伴表示在玩手游的时候会出现卡顿的情况,下面通过这篇文章给大家讲讲解决方法. 类别:模拟器类   大小:282.74M    语言:简体中文 ...

  4. 全自动化处理每月缺卡数据,输出缺卡人员信息

    不管是上学还是上班都会统计考勤,有些学校或公司会对每月缺卡次数过多(比如三次以上)的人员进行处罚.有些公司还规定对于基层员工要在工作日提交日志.管理人员要提交周报或月报,对于少提交的人员要进行处罚.如 ...

  5. 崩坏3卡池模拟器及毕业期望概率计算(含保底)

    目录 崩坏3卡池模拟器及毕业期望概率计算(含保底) 简介 程序演示 得出的一些有趣结果 readme code 崩坏3卡池模拟器及毕业期望概率计算(含保底) 简介 最近学概率论要求写论文,没什么好写的 ...

  6. 思路分享 | 指纹考勤机实现远程打卡测试

    0×00 指纹考勤机被越来越多的使用在企业中, 实现了人.地.时三者合一,为企业职员的出勤考察提供了极大的方便.在考勤机验证指纹成功的一瞬间,会向服务器发送一条职员打卡请求,然后服务器将打卡信息存入数 ...

  7. 雷电模拟器一直android正在启动,雷电模拟器启动失败卡在0-29%怎么解决 加载卡0-29%教程...

    雷电模拟器启动失败卡在0-29%怎么解决?有很多用户在启动雷电安卓模拟器程序时,发现程序启动卡在0-29%,启动失败的情况,下面通过这篇文章给大家讲讲怎么解决. 雷电模拟器使用教程==>雷电安卓 ...

  8. 关于12代Intel处理器性能偏向于小核心的问题解决办法,以及安卓模拟器多开卡的问题。

    一,关于核心问题. 1,控制面板电源管理设置成为平衡模式 2,系统设置电源模式设置成性能模式(平衡模式状态才能设置) 完成以上两步,CPU核心会平均分配. 二,关于模拟器多开卡的问题. 1,内存大小如 ...

  9. 逍遥安卓模拟器卡android,逍遥安卓模拟器怎样设置不卡 逍遥模拟器不流畅处理办法...

    软件安装:装机软件必备包 关于电脑装机必须的软件,比如windows office系列办公软件.网页浏览器.杀毒软件.安全防护软件.刻录软件.压缩软件.下载工具.多媒体播放软件.多媒体编辑软件.输入法 ...

最新文章

  1. hdu1160FatMouse's Speed(DP)
  2. 原理 msc_解析应用在气象站中的GPRS通信原理及优势
  3. texmaker中图片过大怎么办_【社工面试】社区居民楼起火,你怎么办?
  4. 51单片机的配p10端口c语言,stc12c5a16s2的单片机的p5口做普通端口怎么定义?
  5. 在Windows 7 Media Center中创建音乐播放列表
  6. Linux Mysql 安装方法
  7. java类型之间的转换_JAVA基本数据类型及之间的转换
  8. 随想录(推荐『步步惊芯 - 软核处理器内部设计分析』这本书)
  9. this全面解析(二)
  10. 合工大计算机学院吴辽源,计算机学院智能计算系统系召开人才培养大讨论专题会议...
  11. 【sampleDateFormat】对日期进行解析
  12. 火山视窗多窗口交互操作
  13. cron 在线表达式
  14. python转exe
  15. 小郡肝火锅点餐系统——部分代码实现
  16. 战神引擎传奇手游源码【诛仙玛法单职业五大陆】
  17. C/C++ 宏参数名前加#变为字符串
  18. 印刷企业数字化建设时,如何让ERP与MES做到优势互补
  19. 血手耳机与笔记本驱动冲突
  20. echarts省级地图显示(入门)

热门文章

  1. “讯飞杯”合肥市第三十届青少年信息学奥林匹克竞赛(小学组)试题
  2. qca9882 qca9880移植
  3. Echarts引入省级地图(简便快捷,以浙江省为例)
  4. macos 输入法切换卡顿 macos monterey (已解决)
  5. python获取cpu温度_Python如何读取CPU和GPU的温度?
  6. 如何利用免费工具轻松实现个人号裂变?
  7. [论文阅读]ICE: Inter-instance Contrastive Encoding for Unsupervised Person Re-identification(ICCV2021)
  8. 什么是SPU和SKU
  9. infor系统日常问题解决笔记
  10. C++对象的底层原理都在这儿了,还敢说学不会?