Autox.js 网络请求 http WebSocket 让脚本和服务器对话
脚本不只是"点屏幕",还能"和服务器对话"
Autox.js v7 内置了 HTTP 和 WebSocket 支持(Node.js 模式下更完整)。这意味着你的脚本可以:
- 从服务器拉取任务指令
- 把执行结果上报服务器
- 接收实时消息推送(比如有人发了新订单 → 脚本自动处理)
- 调用第三方 API(天气、股票、翻译……)
HTTP 请求
Rhino 模式
// GET 请求
let res = http.get("https://api.example.com/tasks");
console.log("状态码:" + res.statusCode);
console.log("响应:" + res.body.string());
// 带参数
let res2 = http.get("https://api.example.com/search", {
params: { keyword: "autox", page: 1 }
});
// POST 请求(JSON)
let res3 = http.postJson("https://api.example.com/submit", {
name: "test",
data: [1, 2, 3]
});
console.log("POST 响应:" + res3.body.json());
// 带自定义 Header
let res4 = http.get("https://api.example.com/protected", {
headers: {
"Authorization": "Bearer your-token",
"User-Agent": "Autox.js Bot"
}
});
Node.js 模式(更完整)
"nodejs";
// 用 axios(需要 npm install axios)
const axios = require("axios");
async function main() {
try {
let res = await axios.get("https://api.example.com/tasks", {
params: { keyword: "test" },
headers: { "Authorization": "Bearer xxx" },
timeout: 5000
});
console.log("拿到数据:", res.data);
// 处理拿到的数据
res.data.forEach(item => {
console.log("任务:" + item.title);
});
} catch (err) {
console.error("请求失败:" + err.message);
}
}
main();
WebSocket 实时通信
v7 内置 WebSocket 支持,可以做实时双向通信——脚本发消息给服务器、服务器也能随时推消息给脚本。
客户端
let ws = http.ws("wss://api.example.com/realtime");
// 连接成功
ws.on("open", () => {
console.log("WebSocket 已连接");
ws.send("Hello from Autox.js!");
});
// 收到消息
ws.on("message", (data) => {
console.log("收到:" + data);
// 解析 JSON 消息并执行
let msg = JSON.parse(data);
if (msg.action === "click" && msg.target === "button_a") {
text("按钮A").findOne().click();
}
});
// 错误
ws.on("error", (err) => {
console.error("WebSocket 错误:" + err);
});
// 断开
ws.on("close", () => {
console.log("连接断开,3 秒后重连");
sleep(3000);
// 重连逻辑
});
实战:远程控制脚本
服务器下发指令 → 脚本执行 → 脚本上报结果:
服务器 → "点击登录按钮"
脚本 → 执行点击
脚本 → 上报 "已点击,登录响应成功"
这相当于把 Autox.js 变成了一个远程可控制的手机代理。
实战:每日任务自动领取
console.show();
// 从服务器获取今天的任务列表
let res = http.getJson("https://api.example.com/daily-tasks", {
headers: { "User-Agent": "autox-bot/1.0" }
});
if (res.statusCode === 200 && res.body.tasks) {
console.log("今日有 " + res.body.tasks.length + " 个任务");
res.body.tasks.forEach(task => {
console.log("执行:" + task.name);
executeTask(task);
// 上报执行结果
http.postJson("https://api.example.com/task-report", {
taskId: task.id,
result: "success",
timestamp: Date.now()
});
});
} else {
console.log("获取任务失败");
}
function executeTask(task) {
launchApp(task.targetApp);
sleep(2000);
// ... 根据 task 内容执行操作
}
网络请求注意事项
| 问题 | 说明 |
|---|---|
| 权限 | 需要网络权限(Autox.js 打包的 APK 默认会声明) |
| SSL 证书 | 自签名证书可能被拒绝,开发环境可临时关闭校验 |
| 超时 | 网络请求可能卡住,始终加 timeout 和 try-catch |
| 后台执行 | Android Doze 模式下后台网络请求会被延迟 |
| 并发 | 用 threads 模块或 Node.js async 处理并发请求 |
Node.js 模式的优势
HTTP/WebSocket 在 Node.js 模式下有以下优势:
- 完整支持 npm 生态的
axios、socket.io-client等库 async/await写法更整洁fs、path、crypto等 Node 标准库可用- 可以用
fetch(Node 18+ 原生支持)
安全提醒
- 不要硬编码密钥——API key、Token 等敏感信息不要写在源码里,用户输入或远程下发
- HTTPS 优先——生产环境强制用 HTTPS,防止中间人攻击
- 用户隐私——上传用户数据(手机号、位置等)前必须经过用户同意
- 频率控制——不要对目标服务器发过高频率的请求,可能被限流或封号