微信小程序自动化采集方案

本文仅供学习交流,只提供关键思路不会给出完整代码,严禁用于非法用途,拒绝转载,若有侵权请联系我删除!

一、引言

1、对于一些破解难度大,花费时间长的目标,我们可以先采用自动化点击触发请求,拦截数据包的方式先将程序跑起来,今天分享某外卖小程序自动化点击采集方案。

2、拦截数据包,使用Fiddler Script

3、PC端模拟点击使用:pyautogui

4、手机端模拟点击使用:autoxjs

二、Fiddler Script

1、Fiddler Script使用 JScript.NET语言编写。点击Fiddler右上角的FiddlerScript即可进入编写,或者依次点击Fiddler左上角的Rules - Customize Rules 进入编写

2、Fiddler 包含了一个脚本文件可以自动修改Http Request 和Response

修改Request的内容: OnBeforeRequest

修改Response的内容: OnBeforeResponse

3、示例

fiddler中显示为红色:在OnBeforeRequest中添加

复制代码
if (oSession.HostnameIs("www.baidu.com")) {
            oSession["ui-color"] = "red";
        }

修改Request中的body

复制代码
   if(oSession.uriContains("http://www.baidu.com"))
       {
        // 获取Request 中的body字符串
        var strBody=oSession.GetRequestBodyAsString();
        // 用正则表达式或者replace方法去修改string
        strBody=strBody.replace("1111","2222");
        // 弹个对话框检查下修改后的body               
        FiddlerObject.alert(strBody);
        // 将修改后的body,重新写回Request中
        oSession.utilSetRequestBody(strBody);
      }}

域名重定向

复制代码
//将此段代码放在OnBeforeRequest方法下if(oSession.HostnameIs("www.baidu.com")){
    oSession.hostname = "www.hao123.com";    
}

替换请求地址

复制代码
if(oSession.fullUrl.Contains("wx.waimai.meituan.com/weapp/v1/user/favorite/getmyfavorite")){
    oSession.fullUrl = "http://127.0.0.1:8080/fiddler/getRest";
}

获取Response的内容:在OnBeforeResponse中

复制代码
oSession.GetResponseBodyAsString()

三、PC端自动化点击

1、使用 python的pyautogui模块实现自动化点击触发请求

2、安装:pip install pyautogui

如果安装不上,一般是网络超时,可以使用:

复制代码
pip install pyautogui -i http://mirrors.aliyun.com/pypi/simple/  --trusted-host mirrors.aliyun.com

3、示例:

打印鼠标的坐标:

复制代码
    mouse = pyautogui.position()
    array[i][0] = mouse.x
    array[i][1] = mouse.y
    print(mouse)

调整窗口大小,移动窗口位置:

复制代码
import pygetwindow as gw

# 调整窗口大小
title = "窗口名称"
title_window = gw.getWindowsWithTitle(title)
print(len(title_window))
for window in title_window:
    # window.moveTo(0, 0)
    window.resizeTo(250, 500)

获取窗口的坐标

复制代码
title = "窗口名称"
window = gw.getWindowsWithTitle(title)[0]
print(window.left, window.top)

点击:

复制代码
pyautogui.click(x, y) 

四、autoxjs

1、手机端模拟点击推荐使用autoxjs, 官网:主页 | autoxjs,文档:http://doc.autoxjs.com/

2、根据教程一步步安装,开启无障碍,编写JS文件,AutoX.js 使用 JavaScript 作为脚本语言,支持 ES5 与部分 ES6 特性。自动操作模块:基于控件,基础坐标。

3、示例

使用前请先开启无障碍(重要)

复制代码
auto();
log("点击测试开始!");
launchApp("APP名称");
sleep(5000);

常用方法;

  • back() 返回上一个页面

  • sleep(3000) 单位是毫秒

  • launchApp("APP名称"); 打开该APP

  • click("美食", 0) 点击屏幕上识别到的第一个美食

  • click(221, 1323) 点击该坐标

五、Fiddler抓不到微信小程序包的情况需要将Fiddler证书push到系统证书目录

1、Fiddler证书导出到桌面

2、安装 openssl:http://slproweb.com/products/Win32OpenSSL.html

3、将Fiddler cer证书转pem证书:

复制代码
openssl x509 -inform DER -in FiddlerRoot.cer -out FiddlerRoot.pem

4、显示pem证书的hash值

复制代码
openssl x509 -inform PEM -subject_hash_old -in FiddlerRoot.pem

5、生成Fiddler证书的hash值是269953fb ,重命名pem

复制代码
ren FiddlerRoot.pem 269953fb.0

6、我们需要将该证书文件push到 /system/etc/security/cacerts目录下,需要先获取该目录的写权限,进入 /system/etc/security目录执行 chmod 777 cacerts

7、如果提示该文件只读,执行以下命令重新挂载

复制代码
mount -o remount,rw /
或:
mount -o remount,rw /system

8、执行 adb push 269953fb.0 /system/etc/security/cacerts

9、如果直接push提示没有权限,可以先将证书push到 /data/local/tmp目录,再复制到/system/etc/security/cacerts目录

相关推荐
Csvn4 小时前
Python 两大经典坑点 —— 可变默认参数 & 闭包延迟绑定
后端·python
曲幽5 小时前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
用户556918817536 小时前
#从脚本到独立程序:Python + Playwright 批量抓取的完整踩坑记录
python·自动化运维
兵慌码乱20 小时前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2
luckdewei1 天前
FastAPI 资产管理系统实战:复杂 ORM 关联、Alembic 迁移与 N+1 查询优化
python
aqi001 天前
15天学会AI应用开发(八)使用向量数据库实现RAG功能
人工智能·python·大模型·ai编程·ai应用
Csvn1 天前
`functools.lru_cache` —— 一行代码搞定缓存加速
后端·python
金銀銅鐵2 天前
[Python] 从《千字文》中随机挑选汉字
后端·python
cup112 天前
[技术复盘] Windows Python 打包实战:Nuitka 环境踩坑总结与 CI 自动化构建全指南
python·ai·环境变量·ci·nuitka·skill