Skip to content

加速服务使用说明

王良 edited this page May 16, 2025 · 22 revisions

1. 加速服务:

  1. 什么是 加速服务

    • 加速服务代理服务,它通过中间人攻击的方式,将网络请求拦截下来,并经过DNS加速、修改、重定向、代理等一系列的功能,达到加速访问、或访问原本无法访问的站点等目的。
  2. 如何启动加速服务:

    • 点击首页的【代理服务】右侧的开关按钮,即可启动/关闭加速服务。
    • 点击首页的【系统代理】右侧的开关按钮,即可将dev-sidecar设置/不设置为系统默认代理。(系统只能有一个默认代理,在将dev-sidecar与其他网络辅助软件共用时请谨慎开启本开关)
    • 点击首页的【NPM加速】和【Git.exe代理】右侧的开关按钮,即可启动/关闭dev-sidecar为对应软件提供的加速服务。如果你的电脑上并未安装NPM或Git,则这两个按钮将不可用,这是正常情况。

2. 根证书使用说明:

  1. 什么是根证书:TODO
  2. 为什么需要安装根证书这么高风险性的步骤
  3. 如何安装根证书:参见dev-sidecar【首页】的【安装根证书】按钮(注意Firefox浏览器还需要一次手动导入根证书)

3. 模式:

  1. 安全模式:TODO
  2. 默认模式:TODO
  3. 增强模式(彩蛋):TODO

4. 拦截功能使用和配置说明:

4.1. 拦截器类型:

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油猴脚本

4.2. 拦截配置说明书:

TODO:内容待完善

5. 域名白名单:

选择哪些域名不会被dev-sidecar处理。

注意: 该设置与【系统代理-自定义排除域名】的区别在于:

  1. 域名白名单:该配置在dev-sidecar的本地代理服务内生效,由本地代理服务内进行判断;
  2. 系统代理排除域名:该配置会在启用dev-sidecar的 系统代理 功能时写入操作系统的 代理服务器设置 中,交由系统代理进行判断,在手动修改系统代理设置时务必小心该功能可能的残留配置的作用!
  3. 在条目较多时,前者的性能不如后者,可能产生明显延迟。

在config.json的 proxy.excludeIpList:object 中设置,该字段格式如下:

注意:这里点号用来作为JSON object嵌套关系的缩写,冒号指明该条目的类型(主要用来区分object和list),并没有哪一个Object的key为 proxy.excludeIpList。为避免歧义,配置中object和list的key总不应包含点号。下同)

{
  "proxy": {
    "excludeIpList": {
      "example1.com": true,
      "example2.com": false,
      "example3.com": null,
      "example4.com": {
        "desc1": "域名对应字段设置为false时会被处理,null会移除现有设置(多用于远程配置)",
        "desc2": "其他情况下就和设置true一样,不会被处理。因而你可以像这样插入注释",
        "desc3": "同样的技巧可以用在其他本应设置一个bool值的地方",
        "desc4": "原则上来说config.json不支持//形式的注释,但下文为了方便阅读,还是这么写了"
      }
    }
  }
}

6. DNS服务管理:

用来配置在dev-sidecar中需要的指定DNS,出于保密和可靠起见建议使用DoH和DoT。
server.dns.provider:object 中设置,其中的每个条目 格式如下:

6.1. 配置 DNS-over-HTTPS(简称DoH):

注:并非被所有DNS支持,但是保证只要能使用就一定匿名且可靠的DNS服务。

"cloudflare": {
  "type": "https", // 如果server上以"https://"开头指明了协议,就不需要写type了
  "server": "https://1.1.1.1/dns-query",
  "cacheSize": 1000
}

6.2. 配置 DNS-over-TLS(简称DoT):

并非被所有DNS支持,但是保证只要能使用就一定匿名且可靠的DNS服务。

"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
}

6.3. 配置 TCP 的DNS服务:

并非被所有DNS支持,该方法既不保密也不可靠

"googleTCP": {
  "type": "tcp", // 如果server上以"tcp://"开头指明了协议,就不需要写type了
  "server": "8.8.8.8",
  "port": 53, // 不配置时,默认端口为:53
  "cacheSize": 1000
}

6.4. 配置 UDP 的DNS服务:

所有DNS服务器均支持UDP方式,但该方法既不保密也不可靠

"google": {
  "type": "udp", // 如果server上以"udp://"开头指明了协议,就不需要写type了
  "server": "8.8.8.8",
  "port": 53, // 不配置时,默认端口为:53
  "cacheSize": 1000
}

7. DNS设置:

选择哪些域名需要使用指定的DNS(需要先在【DNS服务管理】中设置)获取IP。
在config.json中的 server.dns.mapping:key-value 中设置,其中的每个条目格式如下:

"*.example.com": "your-dns-name"

8. IP预设置:

为一些DNS无法获取的域名手动设置ip,起到类似于hosts的作用(仅在dev-sidecar开启时生效)。
在config.json中的 server.preSetIpList:object 中设置,其中的每个条目格式如下:

{
  "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中设置,该条目 格式如下:

"speedTest": {
  "hostnameList": [
    "example1.com",
    "example2.com"
  ],
  "dnsProviders": [
    "your-DNS-name-used-in-test1",
    "your-DNS-name-used-in-test2"
  ]
}