安卓逆向 - mitmproxy+uiautomator2自动化
文章旨在学习和记录,若有侵权,请联系删除
前言
本期主要介绍纯python实现的一个app自动化采集方案,模拟用户操作无视反爬,当遇见风控很严格的、逆向不出来的app时,可以尝试使用。
一、uiautomator2介绍
1.简介
uiautomator2是一个python库,用于Android的UI自动化测试,其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作。
GitHub地址:https://github.com/openatx/uiautomator2
2. 安装
环境要求:python 3.6 、android 4.4 、adb
首先设备连接到PC,并能够adb devices发现该设备。
2.1. 安装uiautomator2
pip install --pre uiautomator2
2.2. 初始化电脑端
python -m uiautomator2 init
2.3. 初始化手机端
python -m uiautomator2 init --serial 'SERIAL' # 'SERIAL' 填入设备id
最后提示success,代表uiautomator2初始化成功,手机上会安装一个名ATX的小黄车应用。
3. 使用
先简单介绍下常用操作:
import uiautomator2 as u2
# USB链接设备
d = u2.connect_usb('123456789F') # 设备id
# 打开应用
d.app_start(pakagename) # app包名
# 点击
d.xpath('//*[@text="主页"]').click() # 选中并点击主页文字的对象
# 截图
d.screenshot()
# 滑到底部
d(scrollable=True).scroll.toEnd()
...
二、weditor介绍
1. 简介
weditor是一个很好用的UI元素定位的工具。它能够提供辅助编写脚本,定位元素,调试代码等功能,是基于python的一个查看APP元素的工具。
2. 安装
pip install weditor
3. 使用
python -m weditor
输入命令后,会自动打开链接 http://localhost:17310/# ,展示手机ui界面,可以定位元素,activity,以及控件xpath路径。
三、mitmproxy介绍
1. 简介
这是一个通过控制台形式操作的抓包程序,支持HTTP和HTTPS。
它有两个关联组件:
- mitmdump,它是mitmproxy的命令行接口,利用它可以对接python脚本,实现监听后的处理,这也是我们本期的重点
- mitmweb,它是一个web程序,可以通过它提供的网页接口观察mitmproxy捕获的请求
2. 安装
电脑端:
pip install mitmproxy
手机端:
访问链接 http://mitm.it/ 安装证书
3. 使用
这里只演示mitmdump对接python脚本,实现监听数据包的用法
-
手机电脑同个wifi,且设置手动代理、端口
详情百度下mitmproxy抓包 -
新建拦截脚本 test_intercept.py
from mitmproxy import http, ctx def request(flow: http.HTTPFlow): # 设置请求的头信息 flow.request.headers["myheader"] = "zfbdr" print(flow.request.headers) def response(flow: http.HTTPFlow): ...
-
命令行运行
mitmdump -s test_intercept.py -p 8889
-
接着滑动手机任意app页面,命令行打印出了捕获到的请求信息,并且打印了我们print的请求头信息和设置的myheader=zfbdr键值对。
四、某app采集数据
这边只演示app搜索接口
1. 抓包
命令行键入 mitmdump -p 8889
, 因为刚刚手机设置了手动代理端口为8889,直接指定该端口抓包
成功找到搜索接口
2. 开发/注入拦截脚本
我们只需要拦截该url路径的数据包,然后进行输出/保存数据即可
# test_intercept.py
from mitmproxy import http, ctx
def request(flow: http.HTTPFlow):
...
def response(flow: http.HTTPFlow):
if '/search/notes' in flow.request.url:
# 此处开发自己的业务保存逻辑,这边只演示下打印
print(flow.response.text)
print('拦截到指定url\n')
...
3. 开发自动化搜索程序
此处配合weditor来定位元素,进行点击等操作,操作简单玩几把就熟悉了,下图实现了简单的自动化搜索操作代码:
# auto_test.py
class TESTAPP(object):
def __init__(self, device):
self.pakagename = 'xxx'
self.d = u2.connect_usb(device)
def startApp(self):
self.d.unlock()
self.d.app_stop(self.pakagename)
self.d.app_start(self.pakagename)
self.d.sleep(5)
def search(self, keyword):
# 点击搜索栏
self.d.xpath('//*[@resource-id="xxx:id/cu4"]').click()
# 点击输入框
self.d.xpath('//*[@resource-id="xxx:id/bp_"]').click()
time.sleep(0.1)
# 输入关键词
self.d.send_keys(keyword, clear=True)
# 点击搜索
self.d.xpath('//*[@resource-id="xxx:id/bpe"]').click()
if __name__ == "__main__":
d = XXXhs(device="123456789F")
d.search('2023')
4. 运行程序
- 注入mitmproxy脚本:
mitmdump -s test_intercept.py -p 8889
- 另起命令行窗口:
python auto_test.py
随着手机一系列自动化操作后,数据成功打印/保存。
总结
本文介绍了基于uiautomator2 mitmproxy的python自动化采集方案,功能强大,实现简单,能有效绕过绝大多数的反爬手段和一定的风险控制,可以配合群控技术批量化采集。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggfjhg
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13