Skip to content

lshilshi/GotoX

This branch is up to date with SeaHOH/GotoX:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

fa9fab4 · Mar 1, 2025
Jun 14, 2023
Feb 20, 2025
Jan 24, 2025
May 21, 2023
Feb 20, 2025
Mar 1, 2025
Jun 5, 2020
Feb 11, 2023
Feb 1, 2017
Jan 19, 2019
Jun 13, 2023
Dec 15, 2022
Mar 3, 2017
May 26, 2023
Dec 14, 2022
May 26, 2023
Aug 20, 2021
Jun 14, 2023
Jun 14, 2023
May 21, 2023
May 26, 2023

Repository files navigation

GotoX

  • GotoX 修改自 goagent,其主要目的在于,当访问的网络服务出现问题,用户可以通过 方便快速地添加更改规则来自行解决。
  • 其特色,一是自动代理,可支持标准 HTTP/1.1 请求;二是可通过修改 TLS 的 SNI 扩展 直连大部分网站。
  • 主要使用 CFWorkers 服务作为后端代理,也支持 HTTP/SOCKS4/SOCKS5 代理,两者处于 同等地位。SOCKS 代理支持认证。
  • 配置 CFWorkers 代理仅限单个账户内,支持绑定的自定义域名。
  • 运行时可一直维护一个较小但快速的 GWS IP 列表(用于访问谷歌网络服务)。

可用性(2022/05/08)

  • 当前,CloudFlare Workers 服务所使用的域名 workers.dev 已被 SNI 阻断,如需继续 使用请绑定其它可用域名。
  • 由于谷歌政策调整,未绑定信用卡的 Cloud 账户已无法使用其免费 GAE 服务,因此不再 继续改进 GAE 服务端及其部署脚本。建议老用户转为使用 CFW 代理,否则请自行部署。

安全性

  • 由于平台限制,对于通过 CFW/GAE 的 https 流量,GotoX 使用自动生成的证书作为凭证, 采取中间人方法进行代理;对于需要修改(某些自动代理规则需要)的 https 流量也是 如此,不论其是否通过 CFW/GAE。
  • GotoX 使用 sha256 算法生成证书,只要你不把生成的私钥文件泄露出去, 就不会有第三方能通过它们对你进行中间人攻击。
  • 默认配置时,GotoX 会验证 CFW/GAE 服务器证书是否正确,同时会在远程代理请求 https 网址时验证其证书有效性。
  • 使用 CFW/GAE 代理也就意味着:你需要信任 CloudFlare/谷歌和你所使用的 Workers/AppID 服务端的权限者,他们能够窥探和修改通过 CFW/GAE 代理的流量信息。
  • 为防止被滥用,谷歌在 GAE 代理的头字段中会包含了你使用的 AppID 和原始请求的 TraceID 信息,请慎记之。CFW 亦包含类似机制。
  • 支持通过 https 代理协议连接 GotoX,然而非加密后端规则(非 CFW、GAE、HTTPS)的 http 连接从本地代理连出去仍然是普通 http 连接,这只是作为一个方法验证来实现。

部署服务端

使用

  • 主要配置

    • 配置文件位于 config 文件夹,使用文本编辑器修改,不要使用 Windows 记事本。
    • 只有 Config.ini 支持 Config.user.ini 用户配置。
    • 通过阅读各个配置项目的注释,即可理解其用途。
    • 需事先提供由其它扫描工具取得一个较大的可用的 GAE/GWS IP 列表以供 筛选,放入 data/ip.txtdata/ip_ex.txt 中。
      • 格式为每行一个完整 IP;
      • 每次修改或新建以上两个文件时都会自动进行备份,只有一份,会被后来的覆盖;
      • ip_ex.txt 中的 IP 会优先使用,同时会自动并入 ip.txt
      • ip_ex.txt 文件会在修改后大约二至十二小时内被删除,其 IP 优先使用也 同时失效;
      • ip_del.txt 文件负责记录根据统计数据判断生成永久屏蔽 IP ;
      • 如果 ip_ex.txt 新加 IP 包含永久屏蔽 IP,会自动从 ip_del.txt 删除重置。
      • 其余 ip_ 开头的文件为统计数据,可以删除它们以重置状态。
      • 注意:首次使用或长时间未运行时,请在启动后等待 1-5 分钟,让 GotoX 完成 IP 筛选。
      • 更多细节请查看配置文件注释。
    • CFW 无需筛选 IP,如有特殊需求可在 [cfw/iplist] 中指定使用特定的 IP 节点。
  • 自动化

    • 自动代理规则和 IP 列表文件可以在运行时替换,并自动加载,无需重启 GotoX。 修改外部域名列表时,请通过菜单重载或者保存一下自动规则文件。
    • 直连和转发规则失败后,会根据条件判断是否尝试使用临时规则。
    • 可设置三级 DNS 查询优先级:系统设置、[dns/server] 配置、DNS-over-HTTPS API。
  • 使用 IP 列表

    • google IP 列表名称“google_gae、google_gws”选项由代理自身维护,无需 用户填写;
    • 用户可以使用其它名称配置自己的 IP 列表,以供自动规则使用。
    • google_gae”,用于 GAE 代理,也可用于 google_gws,为保证代理顺畅一般 规则不使用这个列表;
    • google_gws”是未分类的 gws 服务器,可用于大部分 google 域名直连规则 (默认配置),使用转发规则有可能出现证书错误。
    • 特殊谷歌主机名需自行测试调整,如文件上传服务器等。
    • 相关链接
  • 代理端口

    • 自动代理端口需自行配置规则,可根据需要自动分配链接路径,推荐使用(开发动力之一);
    • 要使用自动代理请先仔细阅读配置规则说明,由于未添加完全的检测,错误规则可能 导致程序出错或非预期的代理结果;
    • 活动端口完全使用指定的代理(如 CFW),只有当遇到不支持的方法时转用直连, 如果此网络资源处于屏蔽状态连接会失败。
    • 这两个端口还支持 https 方式代理,建议分别设置代理协议,https 连接还是使用 http 方式代理,否则会形成双重加密,不仅耗费资源还可能被 Qos 限速;
    • 使用 https 方式代理,需设置一个 IP 作为默认主机名称,详见配置文件 [listen/iphost] 项注释。
    • 可以直接配置使用自动代理端口,也可以用浏览器插件或其它工具进行调度。
    • 相关链接
  • 自定义 SNI 扩展

    通过改变 TSL 的 SNI 扩展,可以直接连接大部分服务器;此时应配合正确的 DNS 服务, 或者使用内置的 DNS-over-HTTPS 服务。同时也支持使用原主机名验证服务器证书, 详见相关链接。
  • 用户认证

    支持以下方法,可设置免验证 IP 白名单。
    • Basic 方法认证。
      • 优点是支持广泛,基本不会因出错而无法使用;
      • Basic 方法是不安全的认证方法,不建议在外网使用。
    • 自写的 IP 认证。
      • 优点是安全性大大提升,但有个例外,见下面;
      • 需登录,登录时强制使用加密链接;
      • 登录后,如果连续 30 分钟没有发起任何请求,登录将会失效;
      • 重要:由于只认 IP,多台主机可以通过一个处于成功登录状态的 IP 来使用 本代理,所以请谨慎分享代理地址;
      • 同一个用户,只有最新登录成功的 IP 才能通过认证使用代理。
  • 导入证书

    除了非 https 连接和转发(forward)https 连接外,其余代理连接都要求客户端导入 自签证书。
    • 成功运行后会创建独一无二的 CA 证书,证书名称为:“GotoX CA”。
    • 配置好浏览器代理后,在地址栏输入“http://gotox.go/ ” 即可安装或下载 CA 证书;
    • 也可在 cert 文件夹找到 CA.crt 证书文件;
    • 暂时只支持 Windows 启用自动导入和删除功能,其它系统如有需求请手动删除老旧证书。
    • 重要
      • CAkey.pem 包含完整的 CA 证书和密钥信息,千万保护好此文件不要泄漏。 如果有运行多个 GotoX 副本的需要,保证此文件一致即可正常使用同一个 CA 证书。
      • 部分手机应用可能不会使用此证书导致验证失败。
    • 相关链接
  • 本地服务

    提供一个简单的支持加密链接的静态 web 服务器。
    • 不提供单独端口,无法直接访问,需要在设置了 GotoX 代理的情况下访问。
    • 主机名为“gotox.go”或 GotoX 代理地址,如果是在本机运行 GotoX 且未设置成 代理例外,那也可以是本机地址(127.0.0.1localhost)。
    • 路径根目录为程序的 web 文件夹。
    • 路径为目录时不自动发现 index 文件,显示目录列表以替代。
    • 返回头部支持常见文件类型,不包含缓存信息。
  • 辅助工具

    • Windows 下提供一个系统托盘辅助工具。
      • 使用发布的便携版 Python 可以从 GotoX.vbs 或快捷方式启动 (使用 create_shortcut.vbs 生成于桌面);
      • 使用安装版 Python 可直接运行 launcher/start.py 启动。
      • 可以打开 GotoX 配置文件;
      • 可以选择使用何种类型的 gevent 事件循环;
      • 可以下载生成直连 IP 数据库,其它系统需直接运行 launcher/buildipdb.py 脚本;
      • 可以下载生成直连域名数据库,其它系统需直接运行 launcher/builddomains.py 脚本;
      • 隐藏或显示窗口;
      • 监视和设置系统代理(仅适用于局域网连接,其它如直接拨号连接等可能无效);
      • 重新载入 GotoX。
    • 作者现在没有条件为其它系统开发类似工具,欢迎感兴趣者分享代码。
  • 小技巧

    • 自动代理规则支持外部域名列表,可方便使用现成的列表 (如广告、GFW 等)。
    • 对于不支持 CFW/GAE 出口的网址
      • 可在转发(forward)或直连(direct) 规则中设置成反向代理 IP;
      • 或在其它代理(proxy) 规则中设置成 SOCKS 代理(格式见 ActionFilter.ini)。
    • 反向代理一般不支持非加密链接,请慎用支持非加密链接的反向代理!
    • CFW 代理每日仅提供十万次免费请求处理,且限制每分钟一千次请求;单个 Worker 可用内存上限仅有 128MB,对外请求队列为 6。如无必要,不要把它作为全局代理 使用,不要通过它同时下载大量(包括多线程)较大的文件。

兼容性

  • CPython 3.6-3.11已测试,其它版本则无法保证持续运行正常。
  • 必须组件:
    • gevent 22.8.0 及以上
    • pyOpenSSL 20.0.0 及以上
    • dnslib 0.9.19 及以上
    • PySocks 1.7.1
  • 可选组件:
    • brotlicffi
  • 提供脚本支持将 CPython 3.8-3.12 win_amd64 打包为便携版本,发布的便携版本即是 由此脚本打包。打包环境为 Python 3.6+、pycurl、7-zip, 并使用了 nalexandru 提供的 api-ms-win-core-path-l1-1-0.dll 文件,以帮助 CPython 3.9 及以上版本在 Windows 7 上正常运行。
  • 由于自己只使用 Windows,所以其它系统不保证能正常使用。如果有需求作者会尽量修改, 但这需要有人帮助测试反馈。

其它

  • 支持修改请求和响应(低)。
  • 支持直连(direct)使用自动多线程(低)。
  • 暂不打算提供前置代理功能,请使用转发到后端代理。
  • 不会提供对 HTTP/2 的直接支持,对我个人来说带来的改善无法与付出对等,代码不是 我的本行。其部分特性可用多 IP、多 AppID/Worker 以及 keep-alive 的组合来替代, 主要损失的是头部的压缩支持,其次某些情况下延迟更大些,尤其是对应 IP 稀少或只有 1 个 IP 时。仅在服务器支持 HTTP/2 时对比。
    • GAE 问题不大,实际的头部也会压缩。
    • 直接转发完全等于直连,是否支持看客户端。
    • 转发代理还要看代理服务器是否支持。
    • 其余的就完全不支持了。

About

本地自动代理,修改自 goagent。

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 93.5%
  • JavaScript 6.2%
  • VBScript 0.3%