Script Hub
Advanced Script Converter for QX, Loon, Surge, Stash, Egern, LanceX and Shadowrocket
重写 & 规则集转换
社群
👏🏻 欢迎加入社群进行交流讨论
简介
• 支持将 QX 重写解析至 Surge Shadowrocket Loon Stash
• 支持将 Surge 模块解析至 Loon Stash
• 支持将 Loon 插件解析至 Surge Shadowrocket Stash
• Beta 支持将 Loon 3.5.1+ Script v2 转换为 Surge/Egern、Shadowrocket、Stash 或 Loon 插件
• 支持 QX & Surge & Loon & Shadowrocket & Clash 规则集解析,适用 app: Surge Shadowrocket Stash Loon
• 支持 将 QX 脚本转换成 Surge 脚本(兼容)
• 可以修改参数 argument
• 支持一键导入 Shadowrocket / Loon / Stash
• 高级功能 OR 修改任意文本
• 如果某些模块需要 加参数才能使用 但只想用远程链接,不想拉取到本地模块的情况 可以直接使用 纯文本 -> 高级操作、修改参数 功能修改远程链接 任意内容 或者 argument 参数, 不用再复制到本地模块
• 相关生态: Surge 模块工具 支持一键导入 Surge, 需要下载「Scriptable」app. 如果想把其他非 Script Hub 转换的 模块放在本地, 也可单独用此脚本
文档
Loon Script v2 跨端转换(Beta)
Beta 支持 Loon Script v2 的 request、response、cron、network-changed、generic 触发器,可转换为 Surge/Egern、Shadowrocket 和 Stash;转换为 Loon 时保留原生 v2 语法。
会保留可映射的 timeout、enable、requires_body、binary_body_mode 和脚本参数。binary_body_mode 不等同于 requires_body,需要完整响应体时请在源脚本显式设置 requires_body=true。WASM、加密逻辑和脚本内容不会被解密或改写,只转换宿主配置。
Surge/Shadowrocket 支持 Loon Rewrite Action 的 reject、response.json.、.body.、.header.、redirect、url.replace;JSON 映射为 Body Rewrite 的 jq,jq_file 由转换器服务端读取并内联。无法等价转换的条件或参数会提示,不会静默丢失。
不兼容项(如方法、响应状态码、Header 组合条件、debug)会进入提示。network-changed 映射为 Surge/Shadowrocket 的 event-name=network-changed,Stash 保留诊断;img_url 在 Loon 保留,Stash Generic 映射为 Tile icon,其他目标提示不支持。Shadowrocket 不支持 Generic/Tile Script;Stash 动态 enable 会转为注释。Loon 原生 v2 与旧式 Script 混排时保持源顺序。
Beta 模块使用官方 main 解析器,回归测试:
npm run test:loon-v2
鸣谢
Powered by _@Chavy‘s_ Env.js
原脚本作者 @小白脸
脚本修改_@chengkongyiban_
大量借鉴_@KOP-XIAO_佬的resource-parser.js
感谢_@xream_ 佬提供与 _@keywos_ 修改 本项目 Script Hub 网页前端, replace-header.js,echo-response.js,script-converter.js
感谢_@mieqq_ 佬提供的replace-body.js, 本项目中已进行修改
感谢_@Maasea_ 佬的指导
项目 logo 感谢 _@Toperlock_
插件图标用的 _@Keikinn_ 佬的 StickerOnScreen项目,以及 _@Toperlock_ 佬的 QX 图标库项目,感谢
开发
pnpm preview html 内容的本地预览
赞助
支持我们的工作