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

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

一、引言

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目录

相关推荐
卷无止境5 分钟前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境11 分钟前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python
lpfasd12315 分钟前
MediaCrawler 项目深度分析
chrome·python·chrome devtools
Dxy12393102161 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
bamb001 小时前
一个项目带你入门AI应用开发01
python
0566461 小时前
Python康复训练——常用标准库
开发语言·python·学习
wechatbot8882 小时前
企业微信API开发:登录-联系人查询-消息发送完整开发流程分享
汇编·微信·自动化·企业微信·ai编程·rpa
hyf3266332 小时前
泛程序:从零开始搭建稳定程序项目框架
运维·服务器·爬虫·百度·seo
昆曲之源_娄江河畔2 小时前
Python如何安装flask, pymssql
开发语言·python·flask·pymssql
0566462 小时前
Python康复训练——控制流与函数
开发语言·python·学习