当前位置: 首页 > article >正文

告别手动添加!用Python+pywinauto+pytesseract搞定企业微信批量加好友(附完整源码)

Python自动化实战企业微信批量加好友解决方案销售团队每天需要添加上百个潜在客户HR部门要为新员工批量建立联系运营人员得持续拓展合作伙伴——这些场景都绕不开企业微信的添加好友操作。传统手动点击不仅效率低下还容易因疲劳导致错误。今天我们就用Python打造一个全自动批量加好友工具结合pywinauto的界面操作能力和pytesseract的图文识别技术彻底告别重复劳动。1. 环境配置与核心原理1.1 工具选型逻辑为什么选择pywinauto而非其他自动化方案先看几个关键对比工具类型代表方案适用场景企业微信适配性网页自动化Selenium浏览器操作完全不支持原生客户端控制Win32 API底层Windows程序开发复杂度高图像识别控制PyAutoGUI通用屏幕操作适配性差UI自动化pywinauto现代客户端最佳支持pywinauto的独特优势在于直接操作UI元素而非模拟鼠标键盘支持Windows UI Automation API能够获取窗口层级结构和控件属性但企业微信的部分弹窗使用自定义渲染这时就需要pytesseract进行OCR识别# OCR识别示例 import pytesseract from PIL import Image text pytesseract.image_to_string(Image.open(dialog.png), langchi_sim) if 验证消息 in text: print(检测到验证对话框)1.2 环境搭建指南安装核心依赖建议使用Python 3.8pip install pywinauto pytesseract opencv-python pillowTesseract OCR引擎安装注意事项从官方GitHub下载安装包安装时勾选中文语言包chi_sim将安装目录加入系统PATH验证安装print(pytesseract.get_tesseract_version()) # 应输出版本号2. 企业微信窗口控制实战2.1 应用连接与窗口定位企业微信的窗口结构需要特殊处理from pywinauto import Application # 启动或连接企业微信 try: app Application(backenduia).connect(title企业微信) except Exception: app Application(backenduia).start(C:\Program Files\WXWork\WXWork.exe) main_window app.window(title企业微信) rect main_window.rectangle() # 获取窗口坐标(L, T, R, B)提示企业微信4.x版本主窗口类名为Qt5152QWindowIcon若连接失败可尝试修改匹配条件2.2 精准坐标计算方案不同分辨率下的点击适配是关键难点。我们采用相对坐标计算法def get_relative_coords(base_rect, x_percent, y_percent): 基于窗口区域的百分比坐标转换 width base_rect.right - base_rect.left height base_rect.bottom - base_rect.top return ( int(base_rect.left width * x_percent / 100), int(base_rect.top height * y_percent / 100) ) # 示例点击通讯录按钮(位于窗口左侧5%底部15%位置) contact_pos get_relative_coords(rect, 5, 85) main_window.click_input(coordscontact_pos)建议制作分辨率适配表操作项横坐标百分比纵坐标百分比通讯录按钮585新联系人标签1510添加按钮9553. OCR增强的弹窗处理3.1 动态弹窗捕获机制企业微信的验证对话框需要特殊处理import cv2 def detect_dialog(window): screenshot window.capture_as_image() screenshot.save(temp.png) # 使用OpenCV增强识别率 img cv2.imread(temp.png) gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) _, binary cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY) text pytesseract.image_to_string(binary, langchi_sim) return any(keyword in text for keyword in [验证, 备注, 发送]) if detect_dialog(main_window): print(发现验证对话框执行自动填充...)3.2 多场景处理策略针对不同弹窗类型设计处理流程验证消息对话框自动填充预设欢迎语随机延迟2-3秒模拟人工操作使用TAB键切换输入焦点频繁操作警告记录出现时间暂停程序30分钟发送邮件通知管理员用户不存在提示记录到错误日志继续处理下一条# 典型处理流程 for phone in phone_list: try: add_contact(phone) if detect_dialog(main_window): handle_dialog() except Exception as e: log_error(f{phone} 处理失败: {str(e)})4. 工程化部署方案4.1 配置文件设计使用YAML管理可配置参数# config.yaml coordinates: contact_tab: [5, 85] add_button: [95, 5] messages: welcome: 您好我是XX公司的客户经理 throttle: interval: 3 # 操作间隔秒数 daily_limit: 300对应的Python读取逻辑import yaml with open(config.yaml) as f: config yaml.safe_load(f) def get_config(key, defaultNone): return config.get(key, default)4.2 打包与分发使用PyInstaller生成独立可执行文件pyinstaller --onefile --add-data config.yaml;. wechat_bot.py打包注意事项将Tesseract的tessdata语言包复制到dist目录测试不同Windows版本兼容性建议使用虚拟环境减少依赖冲突5. 反检测策略与性能优化5.1 行为伪装技术避免被识别为自动化工具的关键策略随机延迟操作间隔加入0.5-3秒随机波动鼠标移动轨迹采用贝塞尔曲线而非直线移动输入节奏模拟人工打字速度变化界面检查定期验证窗口焦点状态import random import time from pywinauto import mouse def human_like_click(x, y): # 生成随机移动路径 for i in range(1, 4): mid_x x * 0.3 * i random.randint(-50, 50) mid_y y * 0.3 * i random.randint(-50, 50) mouse.move(coords(mid_x, mid_y)) time.sleep(random.uniform(0.1, 0.3)) mouse.click(coords(x, y)) time.sleep(random.uniform(0.5, 1.2))5.2 性能监控体系建立运行健康指标看板class PerformanceMonitor: def __init__(self): self.start_time time.time() self.success_count 0 self.error_count 0 def log_success(self): self.success_count 1 def log_error(self): self.error_count 1 def get_stats(self): elapsed time.time() - self.start_time return { requests_per_hour: self.success_count / (elapsed / 3600), success_rate: self.success_count / (self.success_count self.error_count), avg_time_per_op: elapsed / (self.success_count self.error_count) }实际项目中我们团队用这套方案将客户添加效率提升了20倍日均处理量从50人提升到1000同时错误率降低到0.3%以下。最关键的突破是解决了不同分辨率屏幕的适配问题——通过相对坐标计算法同一套代码可以在1080p到4K屏幕上稳定运行。

相关文章:

告别手动添加!用Python+pywinauto+pytesseract搞定企业微信批量加好友(附完整源码)

Python自动化实战:企业微信批量加好友解决方案 销售团队每天需要添加上百个潜在客户,HR部门要为新员工批量建立联系,运营人员得持续拓展合作伙伴——这些场景都绕不开企业微信的"添加好友"操作。传统手动点击不仅效率低下&#xf…...

避坑指南:SAP客户主数据维护中,CVI_EI_INBOUND_MAIN与BAPI_BUPA_CREATE到底该怎么选?

SAP客户主数据维护技术选型:CVI_EI_INBOUND_MAIN与BAPI_BUPA_CREATE深度对比 在SAP客户主数据维护领域,技术选型往往直接决定了数据一致性和系统稳定性。当面对CVI_EI_INBOUND_MAIN、CL_MD_BP_MAINTAIN和BAPI_BUPA_CREATE这三个核心接口时,许…...

如何用PicAComic下载器5分钟打造你的专属漫画图书馆

如何用PicAComic下载器5分钟打造你的专属漫画图书馆 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器,带图形界面 带收藏夹,已打包exe 下载速度飞快 项目地址: https://gitcode.com/gh_mirrors/pi/pi…...

LM惊艳效果案例分享:基于LM_20.safetensors的10组高清人像作品

LM惊艳效果案例分享:基于LM_20.safetensors的10组高清人像作品 1. 惊艳效果开场 今天我要分享的是基于LM_20.safetensors模型生成的10组高清人像作品。这个模型在时尚人像、写实风格方面表现尤为出色,生成的图片质量达到了专业摄影师水准。下面这些案例…...

CSV AI Analyzer:基于Next.js与AI SDK的本地化智能数据分析工具

1. 项目概述:当AI遇见你的数据表格 如果你和我一样,经常需要处理一堆CSV或Excel文件,对着密密麻麻的数字和文本发呆,试图从中找出点规律或洞察,那你肯定知道这活儿有多磨人。传统的工具要么功能单一,要么学…...

从测试数据到仿真模型:如何用Simcenter T3STER校准你的Package Creator封装模型(实现99%精度)

从测试数据到仿真模型:如何用Simcenter T3STER校准你的Package Creator封装模型(实现99%精度) 在半导体封装热设计领域,仿真精度直接关系到产品可靠性与开发周期。当工程师使用Package Creator快速生成封装模型后,如何…...

PCL2启动器Java环境配置:彻底解决Forge安装失败的终极指南

PCL2启动器Java环境配置:彻底解决Forge安装失败的终极指南 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher(PCL)。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL 当你在PCL2启动器中安装Minecraft Forge时遇到"…...

艾尔登法环存档迁移终极指南:EldenRingSaveCopier完整解决方案

艾尔登法环存档迁移终极指南:EldenRingSaveCopier完整解决方案 【免费下载链接】EldenRingSaveCopier 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingSaveCopier 在艾尔登法环的世界中,数百小时的游戏进度承载着每位褪色者的珍贵记忆。…...

如何用Python快速创建你的专属桌面宠物?DyberPet框架完整指南

如何用Python快速创建你的专属桌面宠物?DyberPet框架完整指南 【免费下载链接】DyberPet Desktop Cyber Pet Framework based on PySide6 项目地址: https://gitcode.com/GitHub_Trending/dy/DyberPet 还在寻找一款能够为你的数字生活增添温暖陪伴的桌面应用…...

把 SAP Business Partner 安全真正落到地上,权限边界、字段控制与支付卡保护的一整套思路

安全这件事,在 Business Partner 这里从来不是小题目 在很多 SAP S/4HANA 项目里,Business Partner 不是一个孤立主数据对象,它往往同时承接客户、供应商、联系人、员工相关对象,甚至还会和信用管理、财务往来、销售流程、供应链协同串在一起。所以,BP 安全做得粗,最后暴…...

3分钟免费解决NVIDIA显卡色彩失真问题:novideo_srgb终极指南

3分钟免费解决NVIDIA显卡色彩失真问题:novideo_srgb终极指南 【免费下载链接】novideo_srgb Calibrate monitors to sRGB or other color spaces on NVIDIA GPUs, based on EDID data or ICC profiles 项目地址: https://gitcode.com/gh_mirrors/no/novideo_srgb …...

别再问M3U8怎么用了!VLC/FFmpeg实战:从直播源到本地播放列表,保姆级制作指南

M3U8播放列表实战手册:从零构建你的专属流媒体库 每次在各大论坛看到有人求直播源合集时,总会有热心网友甩出一个神秘的.m3u8文件。双击这个看似普通的文本文件,却能瞬间在VLC里加载出上百个电视频道——这种魔法般的体验,其实你自…...

告别std::sort的begin/end!C++20 ranges::sort实战:从基础排序到自定义规则

告别std::sort的begin/end!C20 ranges::sort实战:从基础排序到自定义规则 如果你已经用C写过排序算法,一定对std::sort的begin/end迭代器对再熟悉不过了。每次写std::sort(vec.begin(), vec.end())时,有没有想过——这些重复的迭代…...

别再被Gradle JDK版本坑了!手把手教你统一Android Studio与项目的JDK设置

彻底解决Android Studio与Gradle的JDK版本冲突指南 每次新建Android项目时,那个刺眼的"Could not resolve com.android.tools.build:gradle"报错是不是让你血压飙升?别担心,这几乎是每个Android开发者都会遇到的"成人礼"…...

基于Fastify与Prisma的FastCRUD框架:快速构建企业级Node.js后端API

1. 项目概述:为什么我们需要一个“快”的CRUD框架?如果你是一名后端开发者,或者正在构建一个需要与数据库频繁交互的Web应用,那么“CRUD”这个词对你来说一定不陌生。它代表着创建(Create)、读取&#xff0…...

AI代理知识库维护协议:7条军规与8阶段编译法实现代码库维基自动化

1. 项目概述:一个为AI代理设计的“维基维护宪法”如果你正在用Claude Code、Cursor这类AI编程助手,或者任何能访问文件系统的AI代理来开发项目,你肯定遇到过这个痛点:每次开启一个新的对话会话,AI都得从头到尾把你的代…...

QMCDecode:3分钟解锁QQ音乐加密格式的完整解决方案

QMCDecode:3分钟解锁QQ音乐加密格式的完整解决方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换…...

从直觉到数据:GBFR Logs如何用实时分析改变你的《碧蓝幻想:Relink》战斗体验

从直觉到数据:GBFR Logs如何用实时分析改变你的《碧蓝幻想:Relink》战斗体验 【免费下载链接】gbfr-logs GBFR Logs lets you track damage statistics with a nice overlay DPS meter for Granblue Fantasy: Relink. 项目地址: https://gitcode.com/g…...

从设计到动画:如何用AEUX实现Figma/Sketch到After Effects的无缝转换

从设计到动画:如何用AEUX实现Figma/Sketch到After Effects的无缝转换 【免费下载链接】AEUX Editable After Effects layers from Sketch artboards 项目地址: https://gitcode.com/gh_mirrors/ae/AEUX 你是否曾经花费数小时将Figma或Sketch中的精美设计手动…...

WebSite-Downloader终极教程:5分钟掌握网站离线下载完整方案

WebSite-Downloader终极教程:5分钟掌握网站离线下载完整方案 【免费下载链接】WebSite-Downloader 项目地址: https://gitcode.com/gh_mirrors/web/WebSite-Downloader 想要永久保存重要网站内容吗?想要在无网络环境下也能浏览完整网站吗&#x…...

山东大学软件学院项目实训-创新实训-计科智伴(二)——只能互动与练习

在前一篇博客中,我介绍了"计科智伴"知识库底座的构建思路,确立了"双库协同"的技术格局。本篇博客进行了智能互动与练习模块的设计与实现。其核心可以概括为:以教学闭环中的"学习—练习—诊断—反馈"四个环节为…...

Translumo终极指南:3步实现屏幕实时翻译的完整教程

Translumo终极指南:3步实现屏幕实时翻译的完整教程 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 还在为外语…...

思源宋体TTF:为什么这款免费字体能解决你90%的中文排版难题?

思源宋体TTF:为什么这款免费字体能解决你90%的中文排版难题? 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为商业项目找不到合适的中文字体而烦恼吗&…...

C语言—简单认知函数递归

C语言—简单认知函数递归 1. 什么是递归 在C语⾔中&#xff0c;递归就是函数⾃⼰调⽤⾃⼰。 #include <stdio.h> int main() {printf("hehe\n");main();//main函数中⼜调⽤了main函数return 0; }上述就是⼀个简单的递归程序&#xff0c;只不过上⾯的递归只是为…...

Scan2CAD:三维扫描到CAD模型的智能翻译官如何革新工业设计

Scan2CAD&#xff1a;三维扫描到CAD模型的智能翻译官如何革新工业设计 【免费下载链接】Scan2CAD [CVPR19] Dataset and code used in the research project Scan2CAD: Learning CAD Model Alignment in RGB-D Scans 项目地址: https://gitcode.com/gh_mirrors/sc/Scan2CAD …...

3步彻底解决键盘冲突:Hitboxer让你的游戏操作如丝般顺滑

3步彻底解决键盘冲突&#xff1a;Hitboxer让你的游戏操作如丝般顺滑 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 还在为格斗游戏中的连招失败而懊恼&#xff1f;FPS游戏里转身延迟让你错失良机&#xff1f;M…...

【YOLO26实战全攻略】16——模型训练技巧:从Epoch设定到断点续训的全方位指南

摘要:在YOLO26目标检测模型的实战训练中,多数开发者会遭遇训练中断、过拟合、指标震荡、收敛缓慢等核心痛点,这些问题的根源往往在于对Epoch、学习率、早停机制、断点续训等关键训练参数的理解不深、配置不当。本文基于Ultralytics官方文档(截至2026年4月)、500+次工业级实…...

Zotero SciPDF插件终极指南:5分钟实现学术文献自动下载

Zotero SciPDF插件终极指南&#xff1a;5分钟实现学术文献自动下载 【免费下载链接】zotero-scipdf Download PDF from Sci-Hub automatically For Zotero7 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-scipdf 如果你是一名研究人员、学生或学术工作者&#xf…...

新手开发者首次使用Taotoken从注册到调用成功全流程体验记录

新手开发者首次使用Taotoken从注册到调用成功全流程体验记录 1. 注册与初始准备 作为第一次接触大模型API的新手开发者&#xff0c;我选择从Taotoken平台开始尝试。注册流程非常直观&#xff0c;只需提供邮箱和设置密码即可完成基础账户创建。登录后控制台布局清晰&#xff0…...

终极免费词典API指南:如何为你的应用添加13种语言支持

终极免费词典API指南&#xff1a;如何为你的应用添加13种语言支持 【免费下载链接】freeDictionaryAPI There was no free Dictionary API on the web when I wanted one for my friend, so I created one. 项目地址: https://gitcode.com/gh_mirrors/fr/freeDictionaryAPI …...