py企业微信自动打卡解决程序

 解决思路为使用Windows的任务计划程序,定时开启脚本打包好的exe文件,实现定时用电脑打卡

1、脚本编写

主要思路为ctypes库打开安卓模拟器上的企业微信快捷方式,然后使用 pyautogui获取指定位置的像素于设定的像素进行对比判读企业微信是否打开,使用opencv+ pyautogui组合点击工作台,打卡及立即打卡的三个按钮完成打卡,打卡完成后关闭企业微信。

这里使用的是腾讯应用宝模拟器,使用腾讯应用宝的原因有以下

(1)其他模拟器的虚拟定位功能会挂,万一哪天挂了导致打不了卡会亏钱,如果有稳定的虚拟定位功能的模拟器请@我,mumu,夜神都试过了好像是百度地图的服务到期了不让用了。应用宝的定位功能是和电脑定位走的,Windows定位有默认位置的功能(我们无法检测到更精确的位置时,Windows、应用和服务可以使用默认位置)应用宝是获取的基站定位,这个定位会被企业微信判读为不精确的位置,从而企业微信会得到我们设定的默认位置达到定位打卡。

(2)腾讯对自家的软件打开的效率稳定性比较高,现在还没有烦人的广告这点还是不错的

2、脚本编写

脚本程序采用python3.13.2版本注意pyautogui需要管理员权限,调试需要使用管理员打开

import pyautogui
import time
import ctypes
import subprocess
import cv2
import numpy as np

# 定义比较颜色的函数
def compare_color(pixel_color, target_color):
    return pixel_color == target_color

# 定义打开快捷方式的函数
def open_shortcut(path):
    ctypes.windll.shell32.ShellExecuteW(None, 'open', path, None, None, 1)

def close_program(process_name):
    try:
        subprocess.run(["taskkill", "/F", "/IM", process_name], check=True)
        print(f"{process_name} has been closed.")
    except subprocess.CalledProcessError as e:
        print(f"Failed to close {process_name}. Error: {e}")

# 定义寻找并点击图像的函数
def find_and_click_image(image_path, confidence=0.9):
    # 截取屏幕
    screenshot = pyautogui.screenshot()
    screenshot = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR)
    
    # 读取目标图像
    target = cv2.imread(image_path, cv2.IMREAD_COLOR)
    
    # 匹配图像
    result = cv2.matchTemplate(screenshot, target, cv2.TM_CCOEFF_NORMED)
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
    
    # 如果匹配度大于设定的置信度,则进行点击
    if max_val >= confidence:
        target_width = target.shape[1]
        target_height = target.shape[0]
        center_x = max_loc[0] + int(target_width / 2)
        center_y = max_loc[1] + int(target_height / 2)
        pyautogui.click(center_x, center_y)
        return True
    return False
def countdown(t):
    while t:
        mins, secs = divmod(t, 60)
        timer = '{:02d}:{:02d}'.format(mins, secs)
        print(timer, end="\r")  # \r返回行首,实现覆盖当前行
        time.sleep(1)
        t -= 1
    print("定时结束")


# 主循环
while True:
    # 第一步:打开企业微信
    open_shortcut(r"C:\Users\Desktop\企业微信.lnk"修改一下企业微信的位置)
    # 第二步:获取指定位置的像素颜色
    countdown(10)
    pixel_color = pyautogui.pixel(800, 110)
    # 第三步:比较颜色
    if compare_color(pixel_color, (57, 117, 198)):
        # 第四步:屏幕截图寻找""的位置并点击他
        if find_and_click_image(r"C:\Users\工作台图片的位置):
            countdown(2)
            # 第五步:屏幕截图寻找""的位置并点击他
            if find_and_click_image(r"C:\Users\打卡图片的位置"):
                countdown(6)
                # 第六步:点上一个位置相对位置(用微信的截图算一下打卡的坐标和确定打卡位置的坐标相对位置)
                pyautogui.moveRel(x, y)
                pyautogui.click()
                countdown(2)
                close_program("Androws.exe")
                print("颜色匹配,关闭企业微信")
                break
            else:
                print("未找到图像2,重新执行")
                continue
        else:
            print("未找到图像1,重新执行")
            continue
    else:
        # 如果颜色不匹配,重新执行循环
        print("颜色不匹配,重新执行")
        countdown(5)  # 等待一段时间再重新执行

调试完成后打包脚本,先安装pyinstall包终端输入pyinstaller 脚本名.py得到 exe文件

4、定时任务设置

建议做一个定时关机和定时开机配合使用,定时开机可以用主板自带的设置,定时关机可以用任务计划里面的定时关机自行哔哩哔哩,开机免密码使用修改注册表实现自行哔哩哔哩

### 设置企业微信在安卓模拟器上的自动打卡 #### 使用Xposed框架实现自动打卡 对于希望在安卓模拟器上设置企业微信自动打卡的情况,一种方法是利用Xposed框架。该框架能够增强Android系统的功能并修改应用程序行为而不需更改应用本身源码[^2]。 由于企业微信具有防止虚拟定位打卡的能力,在某些情况下可能会识别出通过第三方工具篡改的位置信息作为异常情况处理[^1]。因此,在尝试自动打卡之前应当了解可能存在的风险以及公司政策对此类操作的态度。 #### 准备工作 - **安装合适的模拟器**:选择支持Xposed模块的安卓模拟器版本。 - **获取root权限**:确保所使用的模拟环境已获得超级用户访问权以便于后续步骤顺利执行。 - **下载并配置Xposed Framework**:按照官方指南完成安装过程,并启用相关服务。 #### 实现地理坐标伪造 考虑到企业微信的安全机制,建议先在一个安全可控环境下测试位置欺骗效果。可以通过如下方式调整当前位置数据: - 利用特定的Xposed插件(如GPS Status & Toolbox),这些工具允许开发者轻松改变设备报告给其他程序的实际经纬度数值; - 或者直接编辑模拟器内部属性文件来指定固定的地理位置参数; 值得注意的是,上述做法仅适用于开发调试阶段而非生产环境中实际部署使用。 #### 编写或选用现有的企业微信打卡脚本/插件 一旦解决了地理位置模拟的问题之后,则可以根据需求编写相应的逻辑代码用于触发定时发送签到请求至服务器端口。如果不想自己动手编码的话也可以寻找开源社区里已经成熟的解决方案加以借鉴学习。 ```java // 假设有一个名为WeComAutoCheckInPlugin.java 的Java 类实现了自动登录与提交表单等功能... public class WeComAutoCheckInPlugin { public void performAutomaticSignIn() { // ...具体业务逻辑省略... } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值