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

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

一、引言

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

你可能感兴趣的:(爬虫,自动化,爬虫,python)