Skip to content

自动代理动作介绍

SeaHOH edited this page Apr 27, 2022 · 8 revisions
  • 什么是自动代理?

    这是指,当代理请求发送到自动代理端口(默认 8087)后,GotoX 会根据自动代理规则设置选择使用何种方式处理代理请求,当前有八种动作:拦截、转发、代理直连、伪造证书、CFW/GAE 代理、其它代理、重定向、内部重定向。当没有匹配的规则时,会选择拦截、转发、代理直连、伪造证书、CFW/GAE 代理这四种动作之一,其中 HTTP 请求的默认动作是代理直连,HTTPS 请求的默认动作是转发

    每个自动代理动作都有相应的动作名,是用于自动代理规则设置的动作名称,具体设置方法请阅读自动代理规则配置文件注释,而默认动作则是在主配置中设置。

  • 自动代理动作是如何工作的?

    1. 拦截

      动作名为 block,当匹配此规则时,会返回一个缓存时间为 24 小时整的空响应给代理请求,这样就等效于这个请求被拦截。

      日志显示为:
      "BLOCK http://www.example.com/ad.js" 已经被拦截

    2. 转发

      动作名为 forward,当匹配此规则时,会采用标准 HTTP/1.1 协议中定义的管/隧道方式进行代理。当转发失败时,如果域名不匹配直连域名列表,且域名主机 IP 不匹配直连路由表,会尝试转为使用 CFW/GAE 代理动作。
      与浏览器不使用代理直接访问相比,GotoX 提供更多更灵活的 IP 选择方法:

      • 提供系统 DNS、直接 UDP 查询主配置 [dns/servers] 以及谷歌 DoH 三种可选优先度的解析方式
      • 针对直连域名列表可选是否忽略以上方式,直接 UDP 查询主配置 [dns/localservers]
      • 可忽略以上方式,直接在自动代理规则中定义要使用的 IP 列表:
        • 直接填写单个域名,会在请求时按以上方式解析
        • 直接填写以 | 分隔的 IP 列表
        • 填写在主配置 iplist 小节中定义的以 | 分隔的域名和 IP 列表的名称,域名只在启动时按以上方式解析,后续不再更新

      日志显示为:
      "FWD CONNECT www.example.com:443 HTTP/1.1" - -
      "FWD GET http://www.example.com/index.html HTTP/1.1" - -

    3. 代理直连

      动作名为 direct,当匹配此规则时,会解析代理请求以构造一个新的请求,最后将新请求的结果返回给代理请求。代理直连失败的处理与转发失败相同。
      与浏览器不使用代理直接访问相比,GotoX 提供更多更灵活的 IP 选择方法(同转发)。

      日志显示为:
      "DIRECT GET http://www.example.com/index.html HTTP/1.1" 200 1234

    4. 伪造证书

      动作名为 fakecert,当匹配此规则时,会采用自签 CA 签名的证书来响应 HTTPS 类型的代理请求,此动作还支持自定义 SNI 名称来绕过 GFW 的 SNI 过滤。
      另外,即使没有匹配此规则,除了转发、其它代理以外的所有 HTTPS 代理请求也会先执行伪造证书的动作。

      除了错误信息外没有日志显示:
      伪造加密连接失败:host="www.example.com","错误描述"

    5. CFW/GAE 代理

      动作名为 cfwgae,当匹配此规则时,会解析代理请求以构造一个 CFW/GAE 代理请求,最后将 CFW/GAE 代理请求的结果返回给代理请求。
      CFW 代理一般使用 workers.dev 子域名进行连接,GAE 代理一般使用 AppID 进行连接,也支持用绑定的自定义域名进行连接。

      日志显示为:
      "CFW GET http://www.example.com/index.html HTTP/1.1" 200 1234


      "GAE GET http://www.example.com/index.html HTTP/1.1" 200 1234

    6. 其它代理

      动作名为 proxy,当匹配此规则时,会将代理请求包装成相应的格式后以管/隧道方式转发给其它代理。
      当其它方式都无法访问某个网址/站点时,这个动作可以提供更多的选择,需要在自动代理规则配置中定义匹配网址想要使用的其它代理。

      日志显示为:
      "转发 "GET http://www.example.com/index.html" 到 [SOCKS5] 代理 SOCKS5://127.0.0.1:1080

    7. 重定向

      动作名为 redirect,当匹配此规则时,会解析代理请求并返回一个 301 重定向响应。

      日志显示为:
      "重定向 "http://www.example.com/index.html" 到 "https://www.example.com/index.html"
      "FWD CONNECT www.example.com:443 HTTP/1.1" - -

    8. 内部重定向

      动作名为 iredirect,当匹配此规则时,会解析代理请求并根据匹配的规则构造一个新的指向重定向目标的请求,最后将新请求的结果返回给代理请求。
      此动作对浏览器等用户端是透明的,可用于特殊用途,如规避浏览器的同源策略。

      日志显示为:
      "内部重定向 "http://www.example.com/index.html" 到 "https://www.example.com/index.html"
      "FWD CONNECT www.example.com:443 HTTP/1.1" - -