API 总览
约 3559 字大约 12 分钟
API 总览
这一部分现在按“对象”和“功能组”拆页。
左侧栏已经能直接展开到每个 API 小节,所以这个入口页不再重复铺一整套目录,而是只告诉你怎么读、去哪里速查、每类内容放在哪。
Web 逆向、接口分析与网页采集
ScriptX 不只适合调用接口,也包含一套面向网页、H5 和 App 内嵌 WebView 的分析能力。它可以把页面行为、JavaScript、网络请求和原生调用链放在同一条分析流程里,适合做 Web 逆向、接口复现、网页数据采集和前端加密定位。
这部分能力主要由 Web 逆向工作台 + CDP + MCP 工具提供,不是一个可以直接写成 web.xxx() 的脚本全局对象。脚本侧的 http、Hook、DexKit、Native 等 API 负责配合完成复现和验证;具体工具是否可用,还取决于当前是否已经打开工作台、连接了目标 WebView,以及对应权限和调试条件是否满足。
能做什么
| 方向 | 能力 | 适合解决的问题 |
|---|---|---|
| 页面调试 | WebView / CDP、Console、DOM、Sources、Storage、页面截图 | 页面到底加载了什么、脚本在哪里、数据存在哪、某个操作改变了什么 |
| 网络分析 | 请求列表、请求详情、请求体、响应体、实时记录、请求重放、响应对比、HAR 导入导出、网络归档 | 找到真正的接口、确认请求参数和响应结构、比较不同条件下的请求差异 |
| 网页操作 | 打开页面、前进后退、查询元素、点击、输入、下拉选择、滚动、等待元素或页面状态 | 需要先登录、点击按钮、触发懒加载后再采集数据的页面 |
| JavaScript 分析 | 静态分析、调用图、控制流/数据流、敏感数据流、加密识别、反调试识别、混淆与 JSVMP 分析 | 找签名函数、定位 token 生成、理解混淆代码和 WebAssembly 入口 |
| 网页采集 | 一次性搜索、抓取、抽取,持久化爬虫任务和 Web Research 任务 | 抓取多页内容、按链接继续发现、按 CSS 选择器抽取结构化字段、保存研究结果 |
| 证据整理 | 页面、脚本、请求、存储、爬虫结果和分析产物的归档、关联与导出 | 把“哪个脚本生成了哪个参数、哪个请求使用了它”整理成可追溯记录 |
和其他 API 怎么配合
- 分析网页接口:先在 WebView/CDP 的 Network 面板里观察真实请求,再查看请求详情、请求体和响应体;确认参数后,用 http HTTP 客户端 在脚本中复现请求。
- 定位签名或加密:从 Network 请求找到可疑参数,再到 Sources 或 JavaScript 静态分析中寻找生成位置;如果参数来自原生桥接、APK 方法或 so,再配合 反射与类操作、DexKit 静态检索 和 native Native Hook 与 FFI。
- 需要页面交互才能触发请求:先用 Web 页面操作完成点击、输入、滚动和等待;如果目标是 Android 控件而不是网页 DOM,则使用 automator 自动化操作-模块、ui 用户界面 或 vdisplay 虚拟屏。
- 做批量采集:简单请求优先使用
http;需要执行页面动作、等待动态内容或按链接继续发现时,使用 Web 爬虫任务。任务支持页面数量、深度、同域限制、URL 包含/排除规则、延迟、重试和结构化字段抽取。 - 分析 App 内嵌网页:先选择并连接目标应用中的 WebView,再使用目标侧的 Network、Console、DOM、Storage、截图和调试能力。目标 WebView 需要具备可连接的调试条件,未连接时不要把它和 ScriptX 自己打开的浏览器标签混为一谈。
- 交给 AI 协同分析:Web 工作台中的页面、网络、爬虫、研究、证据和诊断能力通过
web.*MCP 工具提供;MCP 的完整工具说明以当前版本工具目录为准,脚本内需要对外暴露能力时再看 mcpServer MCP 服务。
一个典型的接口复现流程
- 在 Web 逆向工作台打开目标网页,或连接目标 App 中已经授权调试的 WebView。
- 触发页面上的登录、搜索、提交或加载更多,观察 Network 记录。
- 根据 URL、方法、请求头、查询参数、请求体和响应体确认目标接口;不要只凭页面上的按钮名称猜接口。
- 对比成功和失败请求,重点查看时间戳、随机数、签名、设备信息、Cookie 以及请求体编码的变化。
- 如果参数由前端脚本生成,就从 Sources、调用关系和静态分析入口继续追踪;如果经过 Java bridge 或原生 so,再转到 Hook、DexKit 和 Native 分析。
- 将已经确认的请求改写成
http.get()、http.post()或 JSON 请求,在脚本中打印状态码、响应头和响应体,逐项与浏览器记录比对。 - 需要批量处理时,把已经验证过的请求放进线程、定时任务或爬虫流程,并设置合理的间隔、页数和重试次数。
使用边界
Web 逆向、接口复现和网页采集能力应仅用于你拥有权限或明确获准测试的应用与网站,并遵守目标站点的服务条款、隐私要求和访问频率限制。工作台中的请求、响应、Cookie、存储和脚本内容可能包含敏感信息,归档或交给 MCP 分析前应先确认数据范围。
怎么用这部分
你可以先按下面这个思路用:
- 第一次接触 ScriptX,先看 运行时与 Hook。
- 要开工作线程、做同步、在线程里挂定时器,去 threads 线程与同步。
- 要做自定义事件、广播、按键、Toast、通知、触摸监听,去 events 事件与观察器。
- 要做无障碍选择器、控件树、前台应用判断,去 automator 自动化操作-模块。
- 要做虚拟屏创建、预览、截图、输入,以及把其他 API 指到指定显示器,去 vdisplay 虚拟屏。
- 要做屏幕点击、长按、滑动,去 coordinates 自动化操作-坐标。
- 要做返回、回桌面、通知栏、
KeyCode、文本注入,去 keys 按键模拟。 - 要做 ScriptX 输入法启用、切换、文本提交、选区控制、编辑器动作,去 inputMethod 输入法控制。
- 要做原始触摸驱动、Root 主屏 synthetic pointer、shell 虚拟屏原始手势,去 touchDriver 触摸驱动。
- 要做固定 BLE HID 点击、滑动、键盘报文和虚拟屏坐标映射,去 bleHID 蓝牙 HID。
- 要做脚本弹窗、输入框、选择框、可编排对话框实例,去 dialogs 对话框。
- 要做屏幕截图、图像处理、找色、模板匹配,去 images 图像与截图。
- 要做 OCR 文字识别和识别前预处理,去 rapidOcr OCR 识别。
- 要做两张图或两块区域的相似度比较,去 siamese 图像相似度。
- 要做 YOLOv8 NCNN 目标检测,去 yolo YOLO 检测。
- 要做位图绘制、
Paint / Path / Rect / Matrix、画布变换,去 canvas 画布。 - 要做颜色解析、通道拆分、颜色常量,去 colors 颜色模块。
- 要做脚本页面、XML 布局、列表、分页、画布视图和自定义控件,去 ui 用户界面。
- 要做系统悬浮窗,去 floaty 悬浮窗。
- 要做
console风格日志输出和悬浮日志窗口控制,去 console 控制台。 - 要做格式化、类型判断和 Java 桥接辅助,去 util 工具模块。
- 要读写 ScriptX 当前公开的运行时开关,去 settings 设置。
- 要在项目脚本里挂长期任务、做按时触发、按周重复和脚本调度,去 work_manager 定时任务。
- 要把项目脚本拆模块、写
require(...)、理解exports/module.exports,去 module 模块。 - 要做传感器监听、多媒体播放或多脚本引擎调度,去 sensors 传感器、media 多媒体、engines 脚本引擎。
- 要做类查找、字段读写、调用 Java 方法,去 反射与类操作。
- 要临时实现 Java / Kotlin 接口实例、监听器、回调对象,去 JavaAdapter 接口适配。
- 要做 DexKit 静态检索、类/方法/字段定位、结果对象回转,去 DexKit 静态检索。
- 要做 so 符号解析、Native Hook、FFI 调用、结构体和缓冲区,去 native Native Hook 与 FFI。
- 要对当前进程做倍率控制和状态检查,去 processSpeed 进程加速。
- 要做电池优化白名单判断和拉起系统授权页,去 power_manager 电源管理。
- 要找某个具体对象或方法,直接用左侧栏,或者去 API 速查。
- 只有当你准备认真用某个对象时,再进它自己的专页看详细参数、默认值和失败行为。
这里和速查页怎么分工
为了避免重复,这里现在按下面的方式分工:
- 入口页:只负责说明“怎么读这部分文档”。
- API 速查:负责一页看全局函数、全局对象和源码映射。
- 具体 API 正文页:只在对应页面里保留完整参数、取值、返回值、示例和边界行为。
也就是说,如果你看到某个对象已经有独立正文页,这个入口页就不再把它的方法列表重新抄一遍。
文档约定
- 会尽量按
对象.方法(参数)的形式建章节。 - 别名尽量并到主方法,不再单独造重复小节。
- 左侧导航已经承担目录作用,所以正文页里的重复目录块已去掉。
- 说明以当前源码实现为准,不按旧记忆补。
先从哪几页开始最省时间
- 想确认脚本环境、Hook 生命周期、
lpparam、context:看 运行时与 Hook - 想开工作线程、做跨线程传值、挂线程内定时器、做锁同步:看 threads 线程与同步
- 想做脚本内部事件总线、同包广播、按键/Toast/通知/触摸监听:看 events 事件与观察器
- 想做无障碍自动化、选择器、
UiObject、前台页面识别:看 automator 自动化操作-模块 - 想做虚拟屏创建、预览、跨显示器输入和跨模块 target 传递:看 vdisplay 虚拟屏
- 想做点击、长按、按压、滑动这类坐标动作:看 coordinates 自动化操作-坐标
- 想做返回、回桌面、通知栏、最近任务、分屏、
KeyCode派发:看 keys 按键模拟 - 想做 ScriptX 输入法启用、切换、等待就绪、文本提交、选区控制和编辑器动作:看 inputMethod 输入法控制
- 想做 Root 主屏原始触摸、多 synthetic pointer 或 shell 虚拟屏原始触摸:看 touchDriver 触摸驱动
- 想做固定 BLE HID 点击、长按、滑动、Home / Back / 键盘报文:看 bleHID 蓝牙 HID
- 想做提示框、确认框、输入框、列表选择框、可编排对话框:看 dialogs 对话框
- 想做屏幕截图、读图存图、找色、模板匹配、简单图像分析:看 images 图像与截图
- 想做截图文字识别、区域 OCR 和识别前图像预处理:看 rapidOcr OCR 识别
- 想做两张图、两块区域的相似度打分:看 siamese 图像相似度
- 想做 YOLO 目标检测并拿回目标框:看 yolo YOLO 检测
- 想做位图画布、
Paint、Path、Rect、Matrix、绘制与变换:看 canvas 画布 - 想把颜色字符串、数字颜色、数组颜色互相转换,或直接拿通道值:看 colors 颜色模块
- 想做脚本页面、动态插入控件、列表、分页、自定义 Widget、UI 事件:看 ui 用户界面
- 想做系统悬浮窗、可调窗口、悬浮工具面板:看 floaty 悬浮窗
- 想做
console.log(...)风格日志、悬浮日志窗口、脚本调试输出:看 console 控制台 - 想做格式化、对象检查、Java 数组 / Map / JS 对象互转:看 util 工具模块
- 想读写 ScriptX 当前公开的运行时开关:看 settings 设置
- 想给项目脚本挂长期定时任务、按周重复任务、启停任务:看 work_manager 定时任务
- 想把项目拆成多个脚本文件、用
require(...)组织模块:看 module 模块 - 想做传感器监听、音频播放、脚本拉起脚本:看 sensors 传感器、media 多媒体、engines 脚本引擎
- 想做反射、调用 Java、读写字段:看 反射与类操作
- 想做接口代理、监听器、Kotlin
FunctionN/Continuation适配:看 JavaAdapter 接口适配 - 想做 DexKit 查类、查方法、查字段、批量字符串分组:看 DexKit 静态检索
- 想做 so 导出符号、Native Hook、回调桩、FFI 调用、结构体和托管缓冲区:看 native Native Hook 与 FFI
- 想调当前进程倍率、确认是否支持加速、读当前状态:看 processSpeed 进程加速
- 想做文件、存储、设备控制、电池优化白名单:看 files 文件系统、storages 持久化存储、device 设备能力、power_manager 电源管理
- 想做网络、HTTP 服务、MCP:看 http HTTP 客户端、httpServer HTTP 服务、mcpServer MCP 服务
- 想做运行时面板:看 imgui 运行时面板
- 想先知道“有没有这个 API”:先翻 API 速查
API 总览 来源
这批页面主要整理自下面这些源码:
hook/javascript/JavaScriptBridge.kthook/javascript/ScriptAutomatorApi.kthook/javascript/ScriptVDisplayApi.kthook/javascript/ScriptThreadsApi.kthook/javascript/ScriptEventsApi.kthook/javascript/ScriptKeysApi.kthook/javascript/ScriptDialogsApi.kthook/javascript/ScriptWorkManagerApi.kthook/javascript/ScriptImagesApi.kthook/javascript/ScriptInputMethodApi.kthook/javascript/ScriptRapidOcrApi.kthook/javascript/ScriptSiameseApi.kthook/javascript/ScriptYoloApi.kthook/javascript/ScriptBleHidApi.kthook/javascript/ScriptTouchDriverApi.kthook/javascript/ScriptCanvasApi.kthook/javascript/ScriptColorsApi.kthook/javascript/ScriptDexKitApi.kthook/javascript/ScriptNativeApi.kthook/javascript/ScriptProcessSpeedApi.kthook/javascript/ScriptPowerManagerApi.ktcore/display/ScriptVirtualDisplayManager.ktcore/schedule/ScheduledTaskManager.kthook/javascript/JavaScriptRuntime.kthook/javascript/JavaScriptCrypto.kthook/javascript/ScriptFilesApi.kthook/javascript/ScriptStoragesApi.kthook/javascript/ScriptDeviceApi.kthook/javascript/ScriptPluginsApi.kthook/javascript/ScriptImGuiApi.kthook/javascript/McpServerBridge.ktcore/input/ime/ScriptInputMethodController.ktcore/vision/RapidOcrOnnxSession.ktcore/vision/SiameseOnnxSession.ktcore/vision/NcnnYoloSession.ktcore/input/ble/FixedBleHidManager.ktcore/input/MergedTouchDriverManager.ktui/manual/Manual.kt
如果后面你继续扩 API,优先补这些文件对应的专页,不要再往入口页堆方法清单,这样整套结构会干净很多。
