影刀RPA 微信小程序数据采集:绕过限制的正确思路
title: “影刀RPA 微信小程序数据采集绕过限制的正确思路”date: 2026-07-01author: 林焱影刀RPA 微信小程序数据采集绕过限制的正确思路小程序没有网页URL不能直接用浏览器自动化很多人以为无从下手。但小程序本质也是发HTTP请求到后端API找到这个API就能拿到数据。本文讲清楚思路不绕弯子。什么情况用什么适合采集小程序数据的场景竞品的小程序商品信息、价格行业报告类小程序的数据自己企业的小程序数据统计工具选择场景推荐方案小程序接口未加密抓包 → 直接重放API请求数据量小100条ADB 手机UI自动化截图OCR店群矩阵自动化突破运营极限| 数据在PC版微信小程序里 | 影刀直接操作PC微信 || 数据有严格加密 | 放弃或找非自动化渠道 |怎么做方法1抓包分析小程序API核心方法小程序的数据来自后端API抓到这个接口就一切简单了。工具准备安装Fiddler或Charles代理手机设置代理到电脑IP【影刀操作】- 抓包步骤添加【Python】指令启动Fiddler进行代理抓包说明# 这一步需要手工操作影刀无法替代# 1. 打开FiddlerTools→Options→HTTPS→Decrypt HTTPS traffic勾选# 2. 手机WiFi设置代理服务器电脑IP端口8888# 3. 手机浏览器访问 http://ipv4.fiddler:8888安装Fiddler CA证书# 4. 打开目标小程序滑动翻页触发数据加载# 5. 在Fiddler里过滤Host目标API域名找到返回JSON的请求# 6. 右键该请求→Copy→Copy as cURL commandprint(请手工完成抓包获取API的URL、Headers和Body)抓到请求后用影刀发API请求importrequestsimportjson# 从cURL命令转换过来的Python请求headers{Host:api.target-mini-program.com,User-Agent:MicroMessenger/8.0.30,Content-Type:application/json,X-Token:eyJhbGci...,# 从抓包获取Referer:https://servicewechat.com/wxXXXXXXXX/xxx/page-frame.html}all_data[]page1whileTrue:payload{page:page,pageSize:20,category:123}resprequests.post(https://api.target-mini-program.com/api/v1/products,headersheaders,jsonpayload,timeout10)resultresp.json()itemsresult.get(data,{}).get(list,[])ifnotitems:breakall_data.extend(items)print(f第{page}页{len(items)}条累计{len(all_data)}条)page1ifpageresult.get(data,{}).get(totalPages,1):breakprint(f采集完成{len(all_data)}条)yda.set_variable(mini_program_data,json.dumps(all_data,ensure_asciiFalse))方法2PC版微信小程序 影刀UI自动化PC版微信里也能打开小程序界面和移动端类似可以直接用影刀操作。【影刀操作】添加【打开应用】指令应用名称微信添加【等待】指令2秒添加【点击】指令点击微信界面底部的「小程序」或搜索目标小程序添加【循环】指令处理翻页在循环内添加【截图】指令截取商品列表区域添加【OCR识别】指令提取文字添加【Python】指令解析OCR结果importre ocr_textyda.get_variable(ocr_result)# 解析商品名和价格# OCR结果通常是按行的文本列表linesocr_text.split(\n)products[]fori,lineinenumerate(lines):# 检测价格行以¥或数字开头ifre.match(r^[¥]?\d\.?\d*,line.strip()):pricere.search(r[\d.],line).group()# 价格前一行通常是产品名namelines[i-1].strip()ifi0else未知products.append({name:name,price:price})print(f解析到{len(products)}个商品)添加【点击】指令点击「下一页」或「加载更多」添加【等待】指令1秒等待加载方法3手机ADB 截图识别适合必须在手机上操作的场景。【影刀操作】添加【Python】指令importsubprocessimporttimedefadb_screenshot(save_path):截取手机屏幕subprocess.run([adb,shell,screencap,-p,/sdcard/screenshot.png])subprocess.run([adb,pull,/sdcard/screenshot.png,save_path])defadb_swipe_up():向上滑动翻页subprocess.run([adb,shell,input,swipe,540,1200,540,400,500])defadb_tap(x,y):点击屏幕坐标subprocess.run([adb,shell,input,tap,str(x),str(y)])# 采集当前屏幕forpageinrange(10):# 滑动10页save_pathfC:\\截图\\page_{page}.pngadb_screenshot(save_path)print(f第{page1}页截图已保存)adb_swipe_up()time.sleep(1.5)# 等待内容加载有什么坑temu店群自动化报活动案例坑1Token有时效性抓包拿到的Token通常只有几小时有效期重放时失效报401。分析方法用抓包工具看每次打开小程序时哪个请求在获取新Token通常是login接口拿到Token的逻辑和传参在Python里复现。坑2请求带签名验证某些小程序的接口有sign参数是请求参数时间戳密钥的MD5直接重放会报签名错误。解决方法在Fiddler里找小程序的JS文件搜索sign生成逻辑关键词md5、sign、secret。坑3小程序没有PC版有些小程序只能在手机上运行PC微信里没有。解决方法只能用ADB手机自动化或抓包方式。坑4OCR识别错误率高手机截图的商品价格或名称识别出来有错字后续处理出错。解决方法优先用抓包API方式OCR只作为最后选项。如果必须用OCR对关键数字字段加正则验证。总结小程序数据采集的最优路径抓包找API → Python直接调接口 → 干净的JSON数据。如果接口有加密再退而求其次用UI自动化OCR。核心原则数据最终来自服务端接口找到这个接口才是根本。