iOS自动化实战,Quantumult X脚本功能使用详解

Quantumult X脚本功能使用涵盖重写与定时任务两大场景,通过JavaScript可实现自动签到、去广告及数据抓取,本文详解配置流程、脚本调试技巧及常见问题排查,助你构建高效的iOS网络自动化工作流。

脚本功能的核心价值

Quantumult X脚本功能使用区别于传统代理工具的核心优势,在于其基于JavaScript的 runtime 环境,通过重写(Rewrite)与任务脚本(Task),用户可在HTTP请求/响应阶段插入自定义逻辑,实现从简单的去广告到复杂的API自动化调用,满足学术资源访问与数据同步的自动化需求。

基础配置流程

重写脚本配置

在配置文件的[rewrite_local][rewrite_remote]段落添加规则:

[rewrite_local]
^https?://api\.example\.com/v1/user$ script-response-body https://raw.githubusercontent.com/user/script.js

关键参数说明:

  • script-response-body:修改响应体,常用于解锁会员标识
  • script-request-body:修改请求参数,用于注入设备信息
  • script-echo-response:直接返回本地构造的响应,阻断远端连接

定时任务配置

[task_local]段落定义Cron表达式:

[task_local]
0 9 * * * https://raw.githubusercontent.com/user/check-in.js, tag=每日签到, enabled=true

注意:Quantumult X脚本功能使用中的定时任务依赖后台刷新,需保持应用在后台运行而非强制关闭。

实战应用场景

自动签到脚本开发

以下模板展示如何构造带Cookie持久化的签到请求:

const $ = new Env('自动签到');
const url = 'https://app.example.com/api/checkin';
const headers = {
  'Cookie': $prefs.valueForKey('app_cookie'),
  'User-Agent': 'Mozilla/5.0'
};
$.post({url, headers}, (err, resp, data) => {
  const result = JSON.parse(data);
  $.msg('签到结果', result.message);
  $.done();
});

响应体重写技巧

针对国际网络加速场景,修改地理位置验证接口的返回值:

let body = $response.body;
let obj = JSON.parse(body);
obj.data.region = 'US';
obj.data.vip = true;
$done({body: JSON.stringify(obj)});

调试与异常处理

Quantumult X脚本功能使用过程中的日志查看路径:设置 > 调试 > 日志记录,常见报错Script Error: SyntaxError通常由以下原因导致:

  • 远程脚本URL返回404或重定向至HTML页面
  • JavaScript语法未兼容iOS JSCore环境(避免使用ES6+新特性)
  • 内存溢出:循环请求未设置终止条件

建议本地调试时使用$notify()推送关键变量值,生产环境移除调试代码。

节点配置与脚本协同

脚本功能需配合稳定的网络环境执行,对于涉及跨境办公需求的定时任务,建议选择低延迟专线节点以避免请求超时,若需批量管理订阅,可参考支持Clash YAML格式的转换工具生成Quantumult X兼容配置,确保脚本执行时的DNS解析稳定性。

FAQ

现象:脚本提示$request is undefined 原因:在非重写环境下调用了请求对象,定时任务脚本应使用$task.fetch() 解决:区分脚本类型,重写脚本使用$request/$response,任务脚本使用标准HTTP客户端方法

现象:定时任务不自动执行 原因:iOS后台限制或Quantumult X通知权限未开启 解决:设置 > 通知 > 允许通知,并在iOS设置中关闭该应用的"低数据模式"

通过合理配置Quantumult X脚本功能使用,可将iOS设备转化为自动化网络终端,建议从简单的重写规则入手,逐步构建复杂的任务流水线。

您可以还会对下面的文章感兴趣: