本文仅供学习交流,只提供关键思路不会给出完整代码,严禁用于非法用途,拒绝转载,若有侵权请联系我删除!
一、引言
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方法去修改stringstrBody=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.xarray[i][1] = mouse.yprint(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目录