# 介绍

BoxJs 是一款运行在 Surge、Quantumult X、Loon、Shadowrocket、Stash 环境下的脚本！

## 安装

### Surge

#### 一键安装

如果你使用的是 **v5 5.21.0 (3063)** 及以上的版本，你可以直接: [一键安装](https://api.boxjs.app/surge-install)

#### 手动安装

{% code title="Surge Module" %}

```bash
# 安装路径: 
 ​ 首页 > 模块 > 安装新模块

# 模块地址: 
  https://raw.githubusercontent.com/chavyleung/scripts/master/box/rewrite/boxjs.rewrite.surge.sgmodule
```

{% endcode %}

### Quantumult X

> 在最新的版本，推荐只使用 **Rewrite** 安装，无特殊需要无必要配置 **HTTP Backend**。

{% tabs %}
{% tab title="Rewrite (推荐)" %}
**一键安装**

如果你使用的是 **v1.0.29 (670)** 及以上版本: [一键安装](https://api.boxjs.app/quanx-install)

#### 手动安装

{% code title="QuanX Rewrite" %}

```bash
# 安装路径: 
 ​ 风车 > 重写 > 引用

# 重写路径: 
  https://raw.githubusercontent.com/chavyleung/scripts/master/box/rewrite/boxjs.rewrite.quanx.conf
  
```

{% endcode %}
{% endtab %}

{% tab title="HTTP Backend (不建议)" %}
HTTP Backend 需要通过 IP+端口 的形式访问

如果你觉得这样不够优雅，可参考 \`Rewrite + HTTP Backend (进阶)\` 实现域名访问

{% hint style="info" %}
添加 Backend 时不要填 \`主机名\`
{% endhint %}

{% code title="HTTP Backend" %}

```bash
# 安装路径: 
 ​ 风车 > 工具&分析> HTTP Backend > 添加

# 标签: boxjs
# 处理请求的路径: ^/

# 脚本路径
  https://raw.githubusercontent.com/chavyleung/scripts/master/box/chavy.boxjs.js

# 访问地址:
  http://127.0.0.1:9999

# 注意事项
  注意配置 HTTP Backend 的地址为 0.0.0.0 端口为 9999
  配置完成后确保打开了 HTTP Backend 的开关
  然后 全部更新 > 重启代理
```

{% endcode %}
{% endtab %}

{% tab title="Rewrite + HTTP Backend ( 新手不建议)" %}

```bash
# 第一步
同时配置 HTTP Backend 和 Rewrite 
全部更新 > 重启代理
配置后应该通过 http://127.0.0.1:9999 访问下页面后是否正常

# 第二步
# http://boxjs.com
# http://boxjs.net 
# http://127.0.0.1:9999
进入 BoxJs > 应用(底栏) > 内置应用 > 偏好设置

# 第三步
在 `HTTP Backend (Quantumult X)` 中填入 HTTP Backend 的地址
如: http://127.0.0.1:9999

# 然后就可以通过`域名`的方式访问 BoxJs 了

# 原理
通过 Rewrite 可以实现域名的形式访问 BoxJs
通过 偏好设置 可以让 BoxJs 的数据请求走 HTTP Backend

# 感谢 https://github.com/chouchoui PR
# 详见 https://github.com/chavyleung/scripts/pull/327
```

{% endtab %}
{% endtabs %}

### Loon

#### 一键安装

如果你使用的是 **v2.1.19 (385)** 及以上的版本，你可以直接: [一键安装](https://api.boxjs.app/loon-install)

#### 手动安装

{% code title="Loon Plugin" %}

```bash
# 安装路径: 
 ​ 配置 > 插件 > 插件
 
# 插件地址: 
 ​ https://raw.githubusercontent.com/chavyleung/scripts/master/box/rewrite/boxjs.rewrite.loon.plugin
```

{% endcode %}

### Shadowrocket

#### 一键安装

如果你使用的是 **v2.2.8 (1658)** 及以上的版本，你可以直接: [一键安装](http://api.boxjs.app/shadowrocket-install)

#### 手动安装

{% tabs %}
{% tab title="Module (推荐)" %}
{% code title="Shadowrocket Module" %}

```bash
# 安装路径: 
 ​ 配置 > 模块 > 右上角加号

# 模块地址: 
  https://raw.githubusercontent.com/chavyleung/scripts/master/box/rewrite/boxjs.rewrite.surge.sgmodule

# 感谢
  @JOJOforshaun PR
```

{% endcode %}
{% endtab %}

{% tab title="Rewrite" %}
{% code title="Shadowrocket Rewrite" %}

```bash
# 安装路径:
  配置 > 点击使用中的配置文件 > 编辑纯文本
  
# 在 [Script] 标签下增加以下内容，如果没有 [Script]，可自行增加

# 重写地址:
  Rewrite: BoxJs = type=http-request,pattern=https?:\/\/boxjs\.(com|net),script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/box/chavy.boxjs.js, requires-body=true, timeout=120
  
```

{% endcode %}
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
安装完成后，最好重启一次代理
{% endhint %}

### Stash

#### 一键安装

如果你正在使用最新版本的  **Stash** 版本，你可以直接: [一键安装](https://api.boxjs.app/stash-install)

#### 手动安装

{% code title="Stash stoverride" %}

```bash
# 安装路径: 
  首页 > 覆写 > 安装覆写
  
​# 覆写地址: 
  https://raw.githubusercontent.com/chavyleung/scripts/master/box/rewrite/boxjs.rewrite.stash.stoverride
```

{% endcode %}

## 访问

<http://boxjs.com>


# 如何升级

建议使用 APP 内提供的一键更新功能

{% hint style="info" %}
升级脚本后，最好重启一次代理（VPN）
{% endhint %}

### Surge

#### 一键安装

如果你使用的是 **v5 5.21.0 (3063)** 及以上的版本，你可以直接: [一键升级](https://api.boxjs.app/surge-update)

#### 手动升级

```bash
首页 > Surge 图标 (左上角) > 外部资源 > 全部更新
```

### Quantumult X

#### 一键升级

如果你使用的是 **v1.0.29 (670)** 及以上的版本，你可以直接: [一键升级](https://api.boxjs.app/quanx-update)

#### 手动升级

```bash
长按风车 > 刷新 (左下角) > 重启代理 (VPN)

# 如果，你是 QuanX 的新用户（购买一周内）
点击风车 > 重写 > 引用 > 点击重写 > 更新 > 重启代理 (VPN)
```

### Loon

#### 一键升级

如果你使用的是 **v2.1.19 (386)** 及以上的版本，你可以直接: [一键升级](https://api.boxjs.app/loon-update)

#### 手动升级

```bash
配置 > 插件 > 刷新 (右上角) > 重启代理 (VPN)
```

### Shadowrocket

如果你使用的是 **v2.2.8 (1658)** 及以上的版本，你可以直接: [一键升级](http://api.boxjs.app/shadowrocket-update)

```bash
# 使用模块安装的用户
配置 > 模块 > 更新模块（或者找到Boxjs模块右划，点击更新）

# 使用重写安装的用户
配置 > 点击Boxjs所在的配置文件 > 点击“使用配置”或“更新配置”均可更新配置文件引用的外部资源
```

### Stash

```
策略组 > 云 (左上角) > 全部更新
```


# 一些技巧

本文将介绍一些使用 BoxJs 的小技巧

{% hint style="info" %}
本文始终介绍最新的版本版本特性
{% endhint %}

### 主界面

* 把页面添加到主屏幕，就可以像本地 App 一样使用 BoxJs了
* 顶部的 **搜索栏** 可以搜索应用（那不是地址栏）
* BoxJs 在加载数据的时候，**搜索栏** 左侧会有个加载动画
* 点击底栏中的 **应用** 可以回到顶部，再点一次可以 **收缩** 所有面板
* 点击底栏中的 **订阅** 可以回到顶部，再点一次可以 **刷新** 所有订阅

#### 悬浮按钮

* 双击悬浮按钮可以刷新页面
* 悬浮按钮可以隐藏 （侧栏 > 隐藏悬浮按钮）
* 悬浮按钮的位置可以设置 **靠左** 或 **靠右** （红色按钮）
* 可以查看版本更新说明 （紫色按钮）
* 可以查看使用手册（灰色按钮）

#### 侧栏

* 勿扰模式：打开后 BoxJs 不再发出系统消息（仍会记录日志）
* 透明图标：明亮模式下，只有左上角的 APP 图标会变透明 （因为白色背景没法显示透明图标的）
* 调试模式（页面）：
  * 打开时：每次访问 BoxJs 都会请求新的页面
  * 关闭时：只有发现新版本时才会请求新的页面（推荐）

#### 壁纸

* 有些是随机壁纸，每次打开都不见
* 如果你使用的是随机壁纸，点击 **底栏** 的 **首页** 菜单可以刷新壁纸
* 如果你使用的是随机壁纸，在 **壁纸模式** 下可以像刷抖音那样上滑刷新壁纸
* 侧栏中可以进入 **壁纸模式** ,下滑可退出 **壁纸模式**&#x20;
* 悬浮按钮下滑可进入 **壁纸模式**

### 主页

* 可以设置主页壁纸（内置应用 > 偏好设置）

### 应用

* 进入应用内，点击右上角的 :arrow\_forward: 按钮可以直接运行脚本

### 订阅

* 点击 **订阅** 可以马上刷新这个订阅
* 点击 **更多** 按钮可以访问作者仓库 （喜欢作者的作品，请 :star:支持一下）
* 如果你不知道有哪些订阅链接，可以点击右上角那朵 :cloud:&#x20;

### 我的

* 右上角 :gear: 可以设置昵称和头像（头像可以通过长按自己的 Github 头像并复制链接获得）
* 备份
  * 进入备份，可以把备份信息复制出来，拷到其他设备再 **导入** > **还原**
  * 每个备份都很占空间，尽量控制你的备份数量
  * 导入备份只是在当前设备导入一副本，并不会覆盖当前数据
  * 导入备份后你还需手动 **还原**（请谨慎操作）


# 急救

如果使用 BoxJs 的过程中遇到白屏，无法打开等症状，可以尝试手动运行以下脚本！

### 抹掉全局备份

{% hint style="danger" %}
如果在全局备份后出现 VPN 自动断连、日志出现内存警告，可尝试抹掉备份！
{% endhint %}

> 出现这个问题，是因为备份的数量过多，内存不足引起的，建议把备份数量控制在 3 个以内。

手动运行 [抹掉全局备份](https://raw.githubusercontent.com/chavyleung/scripts/master/box/scripts/boxjs.revert.baks.js) 脚本

### 抹掉订阅缓存

{% hint style="danger" %}
如果你在添加订阅后，出现白屏现象，可尝试抹掉订阅缓存！
{% endhint %}

> 抹掉订阅缓存是非常安全的操作，不会对已保存的会话、设置产生任何影响，可以放心抹掉。

> 清缓存后，所有订阅会显示“格式错误”，然后手动更新下订阅即可！

手动运行 [抹掉订阅缓存](https://raw.githubusercontent.com/chavyleung/scripts/master/box/scripts/boxjs.revert.caches.js) 脚本

### 如何运行脚本

```bash
1. 使用浏览器打开脚本, 全选 > 复制

# Surge
首页 > 脚本 > 编辑器 > 把脚本粘进去 > 执行
# QuanX
风车 > 调试 > 构造请求 > 添加 > 下一步 > 把示例代码`全部`删掉 > 把脚本粘进去 > 执行
# Loon
配置 > 脚本 > 本地JS文件 > 添加 > 创建新脚本 > 随便填个脚本名字 > 把脚本粘进去 > 运行
# Shadowrocket
配置 > 当前使用的配置文件末尾的i > 脚本 > 右上角加号 > 随便填个脚本名字 > 粘贴脚本链接到脚本路径 > 滑动屏幕到底部 > 点击运行脚本
```


# 通过 PC 访问

通过外部设备的浏览器来访问手机上的 BoxJs，外部设备包括但不限于 PC、Mac、Linux、Android……

{% hint style="info" %}
以下将安装有 BoxJs 的设备称为 A，访问 BoxJs 的设备称为 B
{% endhint %}

### Quantumult X

1. 将 A、B 两台设备置于同一局域网内
2. 【A设备】使用 HTTP Backend 的方式来配置 BoxJs
3. 【A设备】设置 HTTP Backend 的监听地址为 0.0.0.0，端口默认 9999 即可
4. 【A设备】通过自身浏览器访问 <http://127.0.0.1:9999> 验证是否正常访问
5. 【A设备】取得本设备的局域网地址，如：192.168.x.x
6. 【B设备】打开浏览器并访问：<http://192.168.x.x:9999> 即可


# 配置文档 (\*.boxjs.json)

本文介绍如何配置 BoxJs 订阅文件

## &#x20;​全量配置

待完善

## 场景介绍 <a href="#scenes" id="scenes"></a>

### 安装事件 (onInstall) <a href="#scenes-oninstall" id="scenes-oninstall"></a>

如果希望用户在添加 BoxJs 订阅后，自动安装重写 (.plugin, .snippet, ...)

{% hint style="info" %}
**要求:**&#x20;

BoxJs: v0.12.0

Loon: v2.1.19 (386)

Quantumult X: v1.0.29 (670)
{% endhint %}

**实现原理**

根据配置，用户在添加订阅后会打开一个指定的 URL，你可以配置一个 URL Scheme 或一个普通 URL，来实现自动安装重写、更新资源……，如：

```
loon://update?sub=all
```

**配置方式**

```json
{
  "id": "chavyleung.app.test.sub",
  ....
  "onInstall": {
    "title": "安装确认",
    "message": "本订阅包含重写资源, 是否需要自动安装?",
    "install": {
      "Surge": "",
      "QuanX": "quantumult-x:///add-resource?remote-resource=%7B%22rewrite_remote%22%3A%5B%22https%3A%2F%2Fgithub.com%2Fchavyleung%2Fscripts%2Fraw%2Fmaster%2Fbox%2Frewrite%2Fboxjs.rewrite.quanx.conf%2Ctag%3Dboxjs%22%5D%7D",
      "Loon": "loon://import?plugin=https://raw.githubusercontent.com/chavyleung/scripts/master/box/rewrite/boxjs.rewrite.loon.plugin",
      "Shadowrocket": "",
      "Stash": ""
    }
  },
  "apps": [
    {}, {}, ...
  ]
}

```


# URL Scheme

收集已经知几个 App 的 URL Scheme

## 公开接口

由于 URL Scheme 不能直接在部分 App (Telegram 等) 以超链接的形式显示

我们提供几个的自动重定向 (302) 接口，欢迎使用：

```properties
# 前缀:
https://api.boxjs.app/loon/…
https://api.boxjs.app/quanx/…
https://api.boxjs.app/surge/…
https://api.boxjs.app/shadowrocket/…
https://api.boxjs.app/stash/…
https://api.boxjs.app/clash/…

# 实例:
loon://update?sub=all
# 转换为: 
https://api.boxjs.app/loon/update?sub=all

# 其他同理...
# 注意 url-encode

```

#### **Surge:**&#x20;

<https://manual.nssurge.com/others/url-scheme.html>

#### **Quantumult X:**&#x20;

<https://github.com/crossutility/Quantumult-X/blob/master/url-scheme.md>

#### **Loon:**

```properties
# 安装插件
loon://import?plugin=https://raw.githubusercontent.com/chavyleung/scripts/master/box/rewrite/boxjs.rewrite.loon.plugin

# 更新资源
loon://update?sub=all

```

#### Shadowrocket

```properties
# 安装 & 更新插件
shadowrocket://install?module=https://raw.githubusercontent.com/chavyleung/scripts/master/box/rewrite/boxjs.rewrite.surge.sgmodule

```

#### Stash

<https://stash.wiki/faq/url-schema>


# 订阅

这里罗列了一些非常棒的 BoxJs 订阅，感谢各位大佬对 BoxJs 的支持。

{% hint style="info" %}
排名不分先后
{% endhint %}

### @lxk0301

:pencil: [订阅地址](https://jdsharedresourcescdn.azureedge.net/jdresource/lxk0301.boxjs.json)

[https://jdsharedresourcescdn.azureedge.net/jdresource/lxk0301.boxjs.json](<https://jdsharedresourcescdn.azureedge.net/jdresource/lxk0301.boxjs.json&#xA;>)

{% embed url="<https://gitee.com/lxk0301/jd_docker>" %}

### @AsVow

:pencil: [订阅地址](https://ooxx.be/js/box.json)

<https://ooxx.be/js/box.json>

{% embed url="<https://ooxx.be/js>" %}

### @NobyDa

:pencil: [订阅地址](https://raw.githubusercontent.com/NobyDa/Script/master/NobyDa_BoxJs.json)

<https://raw.githubusercontent.com/NobyDa/Script/master/NobyDa_BoxJs.json>

{% embed url="<https://github.com/NobyDa>" %}

### @Peng-YM

:pencil: [订阅地址](https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/box.js.json)

<https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/box.js.json>

{% embed url="<https://github.com/Peng-YM>" %}

### @Sunert

:pencil: [订阅地址](https://raw.githubusercontent.com/Sunert/Scripts/master/Task/sunert.boxjs.json)

<https://raw.githubusercontent.com/Sunert/Scripts/master/Task/sunert.boxjs.json>

{% embed url="<https://github.com/Sunert>" %}

### @chavyleung

:pencil: [订阅地址](https://raw.githubusercontent.com/chavyleung/scripts/master/box/chavy.boxjs.json)

<https://raw.githubusercontent.com/chavyleung/scripts/master/box/chavy.boxjs.json>

{% embed url="<https://github.com/chavyleung>" %}

### @chouchoui

:pencil: [订阅地址](https://raw.githubusercontent.com/chouchoui/QuanX/master/vei.boxjs.json)

<https://raw.githubusercontent.com/chouchoui/QuanX/master/vei.boxjs.json>

{% embed url="<https://github.com/chouchoui>" %}

### @evilbutcher

:pencil: [订阅地址](https://raw.githubusercontent.com/evilbutcher/Quantumult_X/master/evilbutcher.boxjs.json)

<https://raw.githubusercontent.com/evilbutcher/Quantumult_X/master/evilbutcher.boxjs.json>

{% embed url="<https://github.com/evilbutcher>" %}

### @lowking

:pencil:[ 订阅地址](https://raw.githubusercontent.com/lowking/Scripts/master/lowking.boxjs.json)

<https://raw.githubusercontent.com/lowking/Scripts/master/lowking.boxjs.json>

{% embed url="<https://github.com/lowking>" %}

### @songyangzz

:pencil: [订阅地址](https://raw.githubusercontent.com/songyangzz/QuantumultX/master/syzzzf.box.json)

<https://raw.githubusercontent.com/songyangzz/QuantumultX/master/syzzzf.box.json>

{% embed url="<https://github.com/songyangzz>" %}

### @toulanboy

:pencil: [订阅地址](https://raw.githubusercontent.com/toulanboy/scripts/master/toulanboy.boxjs.json)

<https://raw.githubusercontent.com/toulanboy/scripts/master/toulanboy.boxjs.json>

{% embed url="<https://github.com/toulanboy>" %}

### @zZPiglet

:pencil: [订阅地址](https://raw.githubusercontent.com/zZPiglet/Task/master/zZPiglet.boxjs.json)

<https://raw.githubusercontent.com/zZPiglet/Task/master/zZPiglet.boxjs.json>

{% embed url="<https://github.com/zZPiglet>" %}

### @id77

<https://raw.githubusercontent.com/id77/QuantumultX/master/box.json>

{% embed url="<https://github.com/id77/QuantumultX/tree/master>" %}

###

### @dompling

<https://raw.githubusercontent.com/dompling/Script/master/dompling.boxjs.json>

{% embed url="<https://github.com/dompling>" %}


# 视频

同样，这里有一些非常棒的视频教程，欢迎大家关注 UP 主的频道。

{% embed url="<https://www.youtube.com/channel/UCgjdfJbXYaFfC3Wxump37Mg>" %}

{% embed url="<https://youtu.be/eIpBrRxiy0w>" %}

{% embed url="<https://www.youtube.com/channel/UCXdlywuMV_a8jEZ4wV6669g>" %}

{% embed url="<https://youtu.be/kKa26Fj0MJA>" %}


# 图标

BoxJs 内有很多精美的图标，它们都来自这些大佬哦～

{% embed url="<https://github.com/Orz-3/>" %}

{% embed url="<https://github.com/58xinian>" %}


# 壁纸

从网上找了一些随机壁纸，按需添加吧

```bash
# 下面内容可以直接全复制到 内置应用 > 偏好设置

无背景,
跟随系统,跟随系统
明亮,https://64.media.tumblr.com/451bca19ad0b695c08b54b4287e4f935/tumblr_nb70h5f6XN1rnbw6mo2_r1_1280.gifv
暗黑,https://i.pinimg.com/originals/94/4a/85/944a85804c97622973fbae194ddc27ac.gif
手机妹子,http://api.btstu.cn/sjbz/zsy.php
手机美女,http://api.btstu.cn/sjbz/?m_lx=suiji
小姐姐,http://api.nmb.show/xiaojiejie1.php
小姐姐2,http://api.nmb.show/xiaojiejie2.php
```


