diff --git a/doc/wiki/加速服务使用说明.md b/doc/wiki/加速服务使用说明.md
index 2ea608a..c6cf4ba 100644
--- a/doc/wiki/加速服务使用说明.md
+++ b/doc/wiki/加速服务使用说明.md
@@ -1,237 +1,173 @@
# 1. 加速服务:
+ 1. 什么是 `加速服务`?
+ `加速服务` 即 `代理服务`,它通过中间人攻击的方式,将网络请求拦截下来,并经过DNS加速、篡改、重定向、代理等一系列的功能,达到加速访问、或访问原本无法访问的站点等目的。
-1. 什么是 `加速服务`?
-
- - `加速服务` 即 `代理服务`,它通过中间人攻击的方式,将网络请求拦截下来,并经过DNS加速、修改、重定向、代理等一系列的功能,达到加速访问、或访问原本无法访问的站点等目的。
-2. 如何启动加速服务:
- - 点击首页的【代理服务】右侧的开关按钮,即可启动/关闭加速服务。
- - 点击首页的【系统代理】右侧的开关按钮,即可将dev-sidecar设置/不设置为系统默认代理。(系统只能有一个默认代理,在将dev-sidecar与其他网络辅助软件共用时请谨慎开启本开关)
- - 点击首页的【NPM加速】和【Git.exe代理】右侧的开关按钮,即可启动/关闭dev-sidecar为对应软件提供的加速服务。如果你的电脑上并未安装NPM或Git,则这两个按钮将不可用,这是正常情况。
-
+ 2. 启动加速服务:点击首页的 `代理服务` 右侧的开关按钮,即可启动加速服务。
# 2. 根证书使用说明:
-
-1. 什么是根证书:TODO
-2. [为什么需要安装根证书这么高风险性的步骤](https://github.com/docmirror/dev-sidecar/blob/master/doc/caroot.md)
-3. 如何安装根证书:参见dev-sidecar【首页】的【安装根证书】按钮(注意Firefox浏览器还需要一次手动导入根证书)
+ 1. 什么是根证书?
+ 2. [为什么需要安装根证书这么高风险性的步骤](https://github.com/docmirror/dev-sidecar/blob/master/doc/caroot.md)
+ 3. 如何安装根证书:
# 3. 模式:
-
-1. 安全模式:TODO
-2. 默认模式:TODO
-3. 增强模式(彩蛋):TODO
+ 1. 安全模式:
+ 2. 默认模式:
+ 3. 增强模式(彩蛋):
# 4. 拦截功能使用和配置说明:
+ 1. 请求拦截器:
+ | 请求拦截器名称 | 拦截器配置名 | 请求拦截优先级 | 快速响应码 |
+ | ----------------- | -------------- | ------------- | --------- |
+ | OPTIONS请求拦截器 | options | 101 | 200 |
+ | 快速成功拦截器 | success | 102 | 200 |
+ | 快速失败拦截器 | abort | 103 | 403 |
+ | 缓存请求拦截器 | cacheXxx | 104 | 304 |
+ | 重定向拦截器 | redirect | 105 | 302 |
+ | 请求篡改拦截器 | requestReplace | 111 | |
+ | 代理拦截器 | proxy | 121 | |
+ | SNI拦截器 | sni | 122 | |
-## 4.1. 拦截器类型:
+ 2. 响应拦截器:
+ | 响应拦截器名称 | 拦截器配置名 | 响应拦截优先级 |
+ | ---------------- | --------------- | ------------- |
+ | OPTIONS响应拦截器 | options | 201 |
+ | 缓存响应拦截器 | cacheXxx | 202 |
+ | 响应篡改拦截器 | responseReplace | 203 |
+ | 脚本拦截器 | script | 211 |
-### 1)请求拦截器:
-| 请求拦截器名称 | 拦截器配置名 | 请求拦截优先级 | 作用 |
-| ----------------- | -------------- | ------------- | --------- |
-| OPTIONS请求拦截器 | options | 101 | 直接响应200,不发送该OPTIONS请求 |
-| 快速成功拦截器 | success | 102 | 直接响应200,不发送该请求 |
-| 快速失败拦截器 | abort | 103 | 直接响应403,不发送该请求 |
-| 缓存请求拦截器 | cacheXxx | 104 | 如果缓存还生效,直接响应304,不发送该请求
如果缓存已过期或无缓存,则发送请求
注:只对GET请求生效! |
-| 重定向拦截器 | redirect | 105 | 重定向到指定地址,直接响应302,不发送该请求 |
-| 请求篡改拦截器 | requestReplace | 111 | 篡改请求头,达到想要的目的 |
-| 代理拦截器 | proxy | 121 | 将请求转发到指定地址 |
-| SNI拦截器 | sni | 122 | 设置 `servername`,用于避开GFW |
-
-### 2)响应拦截器:
-
-| 响应拦截器名称 | 拦截器配置名 | 响应拦截优先级 | 作用 |
-| ---------------- | --------------- | ------------- | --------- |
-| OPTIONS响应拦截器 | options | 201 | 设置跨域所需的响应头,避免被浏览器的跨域策略阻拦 |
-| 缓存响应拦截器 | cacheXxx | 202 | 设置缓存所需的响应头,使浏览器缓存当前请求
注:只对GET请求生效! |
-| 响应篡改拦截器 | responseReplace | 203 | 篡改响应头,避免被浏览器的安全策略阻拦 |
-| 脚本拦截器 | script | 211 | 注入JavaScript脚本到页面中,如:Github油猴脚本 |
-
- 3. 配置示例:
- ```json
- "*.example.com": {
- ".*":{ //后续url匹配规则
- // 请求篡改配置
- "requestReplace": {
- "headers": {
- "User-Agent": "Mozilla/5.0", // 替换User-Agent
- "Referer": "[remove]" // 删除Refzerer头
- },
- "doDownload": true // 启用下载请求处理.要转换为下载请求,需要 responseReplace 拦截器的配合使用
- },
-
- // 代理配置
- "proxy": "proxy.example.com", // 代理目标地址
- "backup": [ // 备用代理服务器列表
- "backup1.example.com",
- "backup2.example.com"
- ],
-
-
- "sni": "example.com", // SNI服务器名称指示
- "unVerifySsl": true, // 跳过SSL证书验证
-
- // 基本拦截配置
- "abort": false, // 是否拦截请求(返回403)
- "success": true, // 是否快速返回成功(返回200)
-
- "cacheDays": 365, // 缓存天数
- //cache系列包含如下关键词:cacheSecods,cacheMinutes,cacheHours,cacheDays,cacheWeeks,cacheMonths,cacheYears
-
- // OPTIONS请求配置
- "options": {
- "headers": {
- "Access-Control-Allow-Origin": "*",
- "Access-Control-Allow-Methods": "GET", //不设置默认返回GET,POST,PUT,DELETE,HEAD,OPTIONS,PATCH
- "Access-Control-Allow-Headers": "Content-Type, X-Requested-With, X-Custom-Header", //不设置默认返回*
- "Access-Control-Max-Age": "86400" //不设置默认一个月
- }
- }
-
- // 响应篡改配置
- "responseReplace": {
- "headers": {
- "Cache-Control": "no-cache", // 禁用缓存
- "X-Powered-By": "[remove]", // 删除服务器信息头
- "Access-Control-Allow-Origin": "*" // 添加CORS头
- },
- "doDownload": true // 强制响应为文件下载
- },
- "cacheExcludeStatusCodeList":[200], // 缓存排除状态码列表
- "cacheMinStatusCode": 200, // 缓存最小状态码,默认200
- "cacheMaxStatusCode": 303, // 缓存最大状态码,默认303
- "cacheControlType": "public", // 缓存控制类型,默认public,可选private
- "cacheImmutable": true,
-
- "tampermonkeyScript": "UrlOrPathToTampermonkeyScript.js", // 注入Tampermonkey
- "script" : "UrlOrPathToYourScript.js" //支持数组,填入多个地址
- }
- }
- ```
# 5. 域名白名单:
-选择哪些域名不会被dev-sidecar处理。
-
-**注意:** 该设置与【系统代理-自定义排除域名】的区别在于:
-
-1. 前者只是被dev-sidecar自身忽略,后者则是写入系统设置、不会被(任何的)系统代理处理,在手动修改系统代理设置时务必小心后者可能残留的作用!
-2. 在条目较多时,前者的性能不如后者,可能产生明显延迟。
-
-在config.json的 `proxy.excludeIpList:object` 中设置,**该字段**格式如下:
-> 注意:这里点号用来作为JSON object嵌套关系的缩写,冒号指明该条目的类型(主要用来区分object和list),并没有哪一个Object的key为 `proxy.excludeIpList`。为避免歧义,配置中object和list的key总不应包含点号。下同)
+# 6. DNS服务管理:
+## 6.1. 配置 `DNS-over-HTTPS` 的DNS服务:
```json
{
- "proxy": {
- "excludeIpList": {
- "example1.com": true,
- "example2.com": false,
- "example3.com": null,
- "example4.com": {
- "desc1": "域名对应字段设置为false时会被处理,null会移除现有设置(多用于远程配置)",
- "desc2": "其他情况下就和设置true一样,不会被处理。因而你可以像这样插入注释",
- "desc3": "同样的技巧可以用在其他本应设置一个bool值的地方",
- "desc4": "原则上来说config.json不支持//形式的注释,但下文为了方便阅读,还是这么写了"
- }
- }
+ "cloudflare": {
+ "type": "https",
+ "server": "https://1.1.1.1/dns-query",
+ "cacheSize": 1000
+ }
+}
+```
+或
+```json
+{
+ "cloudflare": {
+ "server": "https://1.1.1.1/dns-query", // 地址上带有 `https://`,type可以不配置
+ "cacheSize": 1000
}
}
```
-# 6. DNS服务管理:
-
-用来配置在dev-sidecar中需要的指定DNS,出于保密和可靠起见建议使用DoH和DoT。
-在 `server.dns.provider:object` 中设置,**其中的每个条目** 格式如下:
-
-## 6.1. 配置 `DNS-over-HTTPS`(简称DoH):
-> 注:并非被所有DNS支持,但是保证只要能使用就一定匿名且可靠的DNS服务。
+## 6.2. 配置 `DNS-over-TLS` 的DNS服务:
```json
-"cloudflare": {
- "type": "https", // 如果server上以"https://"开头指明了协议,就不需要写type了
- "server": "https://1.1.1.1/dns-query",
- "cacheSize": 1000
+{
+ "cloudflareTLS": {
+ "type": "tls",
+ "server": "1.1.1.1",
+ "port": 853, // 不配置时,默认端口为:853
+ "servername": "cloudflare-dns.com", // SNI
+ "cacheSize": 1000
+ }
}
```
-
-## 6.2. 配置 `DNS-over-TLS`(简称DoT):
-> 并非被所有DNS支持,但是保证只要能使用就一定匿名且可靠的DNS服务。
+或
```json
-"cloudflareTLS": {
- "type": "tls", // 如果server上以"tls://"开头指明了协议,就不需要写type了
- "server": "1.1.1.1",
- "port": 853, // 不配置时,默认端口为:853
- "servername": "cloudflare-dns.com", // 需要伪造成的SNI
- //"sni": "cloudflare-dns.com", // SNI缩写配置
- "cacheSize": 1000
+{
+ "cloudflareTLS": {
+ "server": "tls://1.1.1.1",
+ "port": 853, // 不配置时,默认端口为:853
+ "servername": "cloudflare-dns.com", // SNI
+ //"sni": "cloudflare-dns.com", // SNI缩写配置
+ "cacheSize": 1000
+ }
+}
+```
+或
+
+```json
+{
+ "cloudflareTLS": {
+ "server": "tls://1.1.1.1:853",
+ "servername": "cloudflare-dns.com", // SNI
+ //"sni": "cloudflare-dns.com", // SNI缩写配置
+ "cacheSize": 1000
+ }
}
```
## 6.3. 配置 `TCP` 的DNS服务:
-> 并非被所有DNS支持,该方法既不保密也不可靠
```json
-"googleTCP": {
- "type": "tcp", // 如果server上以"tcp://"开头指明了协议,就不需要写type了
- "server": "8.8.8.8",
- "port": 53, // 不配置时,默认端口为:53
- "cacheSize": 1000
+{
+ "googleTCP": {
+ "type": "tcp",
+ "server": "8.8.8.8",
+ "port": 53, // 不配置时,默认端口为:53
+ "cacheSize": 1000,
+ }
+}
+```
+或
+
+```json
+{
+ "googleTCP": {
+ "server": "tcp://8.8.8.8",
+ "port": 53, // 不配置时,默认端口为:53
+ "cacheSize": 1000,
+ }
+}
+```
+或
+
+```json
+{
+ "googleTCP": {
+ "server": "tcp://8.8.8.8:53",
+ "cacheSize": 1000,
+ }
}
```
## 6.4. 配置 `UDP` 的DNS服务:
-> 所有DNS服务器均支持UDP方式,但该方法既不保密也不可靠
```json
-"google": {
- "type": "udp", // 如果server上以"udp://"开头指明了协议,就不需要写type了
- "server": "8.8.8.8",
- "port": 53, // 不配置时,默认端口为:53
- "cacheSize": 1000
+{
+ "google": {
+ "type": "udp",
+ "server": "8.8.8.8",
+ "port": 53, // 不配置时,默认端口为:53
+ "cacheSize": 1000,
+ }
+}
+```
+或
+
+```json
+{
+ "google": {
+ "server": "udp://8.8.8.8",
+ "port": 53, // 不配置时,默认端口为:53
+ "cacheSize": 1000,
+ }
+}
+```
+或
+
+```json
+{
+ "google": {
+ "server": "udp://8.8.8.8:53",
+ "cacheSize": 1000,
+ }
}
```
# 7. DNS设置:
-选择哪些域名需要使用指定的DNS(需要先在【DNS服务管理】中设置)获取IP。
-在config.json中的 `server.dns.mapping:key-value` 中设置,**其中的每个条目**格式如下:
-
-```json
-"*.example.com": "your-dns-name"
-```
-
# 8. IP预设置:
-为一些DNS无法获取的域名手动设置ip,起到类似于hosts的作用(仅在dev-sidecar开启时生效)。
-在config.json中的 `server.preSetIpList:object` 中设置,**其中的每个条目**格式如下:
-
-```json
-{
- "example.com": {
- "1.1.1.1": true, // 如果有多个IP,可以继续添加
- "1.0.0.1": false, // 指定为false时,不使用该IP
- "2.2.2.2": {
- "desc": "这样可以合法的在配置中插入注释。上面使用的//注释方式在文件中是不允许的"
- }
- }
-}
-```
-
# 9. IP测速:
-
-用来对从指定的DNS与IP预设置中获取到的IP测试TCP延迟,也可以用来测试DoH和DoT服务器的可用性,后者操作如下:先在【DNS服务管理】中配置好需要测试的DNS设置,然后在【IP测速】里添加一个没有设置【IP预设置】的辅助域名,并选择使用需检测的DNS进行解析。
-对于DoH/DoT而言,由于答案不能被篡改和窃听,所以辅助域名要么获得真实IP(说明可用)要么没有收到答案(说明不可用)。该方法不适用于常规TCP/UDP的DNS,因为它们没有加密,即使收到答案也可能被篡改而不可用)。
-在config.json中的 `server.dns.speedTest:object`中设置,**该条目** 格式如下:
-
-```json
-"speedTest": {
- "hostnameList": [
- "example1.com",
- "example2.com"
- ],
- "dnsProviders": [
- "your-DNS-name-used-in-test1",
- "your-DNS-name-used-in-test2"
- ]
-}
-```