一个支持钉钉远程定时打卡脚本

介绍了一个基于AutoJs的钉钉自动打卡脚本,支持定时及远程指令打卡,并通过监听通知来触发打卡流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GitHub上发现一个有意思的脚本,可钉钉自动打卡、远程打卡脚本,基于AutoJs,免Root。

功能

  • 定时自动打卡
  • 远程指令打卡
  • 发送打卡结果

工具

  • AutoJs
  • Tasker
  • 网易邮箱大师

原理

在AutoJs脚本中监听本机通知,并在Tasker中创建定时任务发出打卡通知,或在另一设备上发送消息到本机,即可触发脚本中的打卡流程,实现定时打卡和远程打卡。
在这里插入图片描述

脚本

GitHub地址: https://github.com/georgehuan1994/DingDing-Automatic-Clock-in
Autojs、Tasker下载:http://xinhuoip.ys168.com/

### 开发钉钉自动打卡脚本 为了实现钉钉自动打卡的功能,通常会采用两种主要方法:一种是通过模拟手机操作来触发打卡;另一种则是利用API接口直接调用打卡服务。下面分别介绍这两种方式的具体实施过程。 #### 方法一:基于ADB命令控制设备完成打卡 这种方法依赖于Android Debug Bridge (ADB),它允许开发者向连接的安卓设备发送指令。对于想要创建一个简单的钉钉自动打卡解决方案来说,这可能是一个较为便捷的选择[^4]。 ```python import os import time def dingtalk_check_in(): # 解锁屏幕并启动钉钉应用 os.system('adb shell input keyevent 26') # 唤醒屏幕 time.sleep(1) os.system('adb shell input swipe 500 1800 500 900') # 向上滑动解锁 time.sleep(3) # 打开钉钉应用程序 package_name = 'com.alibaba.android.rimet' activity_name = '.biz.home.activity.HomeActivity' component = f'{package_name}/{activity_name}' os.system(f'adb shell am start -n {component}') # 进入工作台页面 time.sleep(5) os.system('adb shell input tap 970 1850') # 点击工作台按钮坐标 # 寻找考勤卡片并点击进入 time.sleep(3) os.system('adb shell input swipe 747 1413 747 323') # 上划查找考勤入口 time.sleep(1) os.system('adb shell input tap 600 1600') # 假设这是考勤卡位置 # 完成签到动作 time.sleep(2) os.system('adb shell input tap 540 1900') # 假定此为确认签到按键所在区域 if __name__ == '__main__': dingtalk_check_in() ``` 这段代码展示了如何使用`os.system()`函数执行一系列ADB命令以模仿人类用户的交互行为,从而达到自动登录和打卡的目的。需要注意的是,在实际部署前应当先手动定位好各个控件的确切坐标,并适当调整等待时间以便适应不同型号手机的速度差异。 #### 方法二:借助第三方库进行UI自动化测试 除了直接操控物理设备外,还可以考虑运用专门设计用于移动界面自动化测试框架——如uiautomator2来进行更复杂的场景处理。该方案不仅支持跨平台特性(iOS/Android),而且提供了更加友好易读的编程接口[^3]。 ```python from uiautomator2 import UiDevice, connect device = connect() # 自动检测当前已连上的唯一一台真机或者模拟器 app_package = "com.alibaba.android.rimet" # 启动钉钉客户端 device.app_start(app_package) # 查找工作台选项卡并通过文字匹配找到对应的“考勤”模块 workbench_tab = device(text="工作台").wait(timeout=10).exists if workbench_tab: device(text="工作台").click() attendance_card = device(resourceId=f"{app_package}:id/tv_title", textContains="考勤") if attendance_card.exists: attendance_card.click() # 实现具体的打卡逻辑... checkin_button = device(description="立即打卡") or device(text="立即打卡") if checkin_button.exists: checkin_button.click() time.sleep(2) device.press_home() # 返回桌面结束流程 ``` 上述例子中演示了怎样加载指定的应用程序、识别特定视图组件以及响应它们的动作事件。相比于单纯依靠固定坐标的触屏输入而言,这种方式显然更具灵活性与鲁棒性,尤其是在面对频繁更新迭代的目标APP时尤为明显。 无论采取哪种途径构建自己的钉钉自动打卡系统,都建议事先仔细阅读官方文档及相关法律法规条款,确保所编写软件不会违反任何规定或侵犯他人隐私权益。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值