{"id":13538182,"url":"https://github.com/seahoh/gotox","last_synced_at":"2025-05-15T05:07:55.426Z","repository":{"id":38551954,"uuid":"71294077","full_name":"SeaHOH/GotoX","owner":"SeaHOH","description":"本地自动代理，修改自 goagent。","archived":false,"fork":false,"pushed_at":"2025-03-01T13:54:55.000Z","size":8293,"stargazers_count":743,"open_issues_count":36,"forks_count":147,"subscribers_count":37,"default_branch":"master","last_synced_at":"2025-04-14T08:11:55.340Z","etag":null,"topics":["auto-proxy","bypass-sni","sni","sni-proxy"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SeaHOH.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-10-18T21:45:02.000Z","updated_at":"2025-04-12T11:21:26.000Z","dependencies_parsed_at":"2024-08-01T09:21:43.829Z","dependency_job_id":"02dd8bf2-d03f-4e6f-92af-ab4f7f6a9059","html_url":"https://github.com/SeaHOH/GotoX","commit_stats":null,"previous_names":[],"tags_count":50,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeaHOH%2FGotoX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeaHOH%2FGotoX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeaHOH%2FGotoX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeaHOH%2FGotoX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SeaHOH","download_url":"https://codeload.github.com/SeaHOH/GotoX/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254276447,"owners_count":22043867,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auto-proxy","bypass-sni","sni","sni-proxy"],"created_at":"2024-08-01T09:01:07.448Z","updated_at":"2025-05-15T05:07:50.418Z","avatar_url":"https://github.com/SeaHOH.png","language":"Python","funding_links":[],"categories":["\u003ca id=\"9eee96404f868f372a6cbc6769ccb7f8\"\u003e\u003c/a\u003e新添加的","\u003ca id=\"9eee96404f868f372a6cbc6769ccb7f8\"\u003e\u003c/a\u003e工具"],"sub_categories":["\u003ca id=\"31185b925d5152c7469b963809ceb22d\"\u003e\u003c/a\u003e新添加的"],"readme":"# GotoX\n- GotoX 修改自 goagent，其主要目的在于，当访问的网络服务出现问题，用户可以通过\n  方便快速地添加更改规则来自行解决。\n- 其特色，一是自动代理，可支持标准 HTTP/1.1 请求；二是可通过修改 TLS 的 SNI 扩展\n  直连大部分网站。\n- 主要使用 CFWorkers 服务作为后端代理，也支持 HTTP/SOCKS4/SOCKS5 代理，两者处于\n  同等地位。SOCKS 代理支持认证。\n- 配置 CFWorkers 代理仅限单个账户内，支持绑定的自定义域名。\n- 运行时可一直维护一个较小但快速的 GWS IP 列表（用于访问谷歌网络服务）。\n\n## 可用性（2022/05/08）\n- 当前，CloudFlare Workers 服务所使用的域名 `workers.dev` 已被 SNI 阻断，如需继续\n  使用请绑定其它可用域名。\n- 由于谷歌政策调整，未绑定信用卡的 Cloud 账户已无法使用其免费 GAE 服务，因此不再\n  继续改进 GAE 服务端及其部署脚本。建议老用户转为使用 CFW 代理，否则请自行部署。\n\n## 安全性\n- 由于平台限制，对于通过 CFW/GAE 的 https 流量，GotoX 使用自动生成的证书作为凭证，\n  采取中间人方法进行代理；对于需要修改（某些自动代理规则需要）的 https 流量也是\n  如此，不论其是否通过 CFW/GAE。\n- GotoX 使用 sha256 算法生成证书，只要你不把生成的[私钥文件](#导入证书)泄露出去，\n  就不会有第三方能通过它们对你进行中间人攻击。\n- 默认配置时，GotoX 会验证 CFW/GAE 服务器证书是否正确，同时会在远程代理请求 https\n  网址时验证其证书有效性。\n- 使用 CFW/GAE 代理也就意味着：你需要**信任 CloudFlare/谷歌和你所使用的 Workers/AppID\n  服务端的权限者**，他们能够窥探和修改通过 CFW/GAE 代理的流量信息。\n- **为防止被滥用，谷歌在 GAE 代理的头字段中会包含了你使用的 AppID 和原始请求的\n  TraceID 信息，请慎记之。CFW 亦包含类似机制。**\n- 支持通过 https 代理协议连接 GotoX，然而非加密后端规则（非 CFW、GAE、HTTPS）的\n  http 连接从本地代理连出去仍然是普通 http 连接，这只是作为一个方法验证来实现。\n\n## 部署服务端\n- CFWorkers 服务端部署非常简单，可参看 wiki 简易教程。\n- 注册和部署时，可尝试直接以默认配置运行本代理使用；如果无法顺利进行，请使用\n  VPN、Shadowsocks 等其它代理重新开始。\n    - **警告**：不建议使用未知来源的兼容服务端，它们**可能会记录你的各种信息，\n      甚至更改你的流量**以达到更危险的目的。\n- **相关链接**\n    - 简易教程 https://github.com/SeaHOH/GotoX/wiki/简易部署教程：CloudFlare-Workers\n    - 常见问题 https://github.com/SeaHOH/GotoX/wiki/常见问题 （待更新）\n\n## 使用\n- ### 主要配置\n    - 配置文件位于 `config` 文件夹，使用文本编辑器修改，不要使用 Windows 记事本。\n    - 只有 `Config.ini` 支持 `Config.user.ini` 用户配置。\n    - 通过阅读各个配置项目的注释，即可理解其用途。\n    - 需事先提供由**其它扫描工具**取得一个较大的**可用的** GAE/GWS IP 列表以供\n      筛选，放入 `data/ip.txt` 或 `data/ip_ex.txt` 中。\n        - 格式为每行一个完整 IP；\n        - 每次修改或新建以上两个文件时都会自动进行备份，只有一份，会被后来的覆盖；\n        - `ip_ex.txt` 中的 IP 会优先使用，同时会自动并入 `ip.txt`；\n        - `ip_ex.txt` 文件会在修改后大约二至十二小时内被删除，其 IP 优先使用也\n          同时失效；\n        - `ip_del.txt` 文件负责记录根据统计数据判断生成永久屏蔽 IP ；\n        - 如果 `ip_ex.txt` 新加 IP 包含永久屏蔽 IP，会自动从 `ip_del.txt` 删除重置。\n        - 其余 `ip_` 开头的文件为统计数据，可以删除它们以重置状态。\n        - **注意**：首次使用或长时间未运行时，请在启动后等待 1-5 分钟，让 GotoX\n          完成 IP 筛选。\n        - 更多细节请查看配置文件注释。\n    - CFW 无需筛选 IP，如有特殊需求可在 **［cfw/iplist］** 中指定使用特定的 IP 节点。\n- ### 自动化\n    - 自动代理规则和 IP 列表文件可以在运行时替换，并自动加载，无需重启 GotoX。\n      修改外部域名列表时，请通过菜单重载或者保存一下自动规则文件。\n    - 直连和转发规则失败后，会根据条件判断是否尝试使用临时规则。\n    - 可设置三级 DNS 查询优先级：系统设置、**［dns/server］** 配置、DNS-over-HTTPS API。\n- ### 使用 IP 列表\n    - google IP 列表名称“**google_gae、google_gws**”选项由代理自身维护，无需\n      用户填写；\n    - 用户可以使用其它名称配置自己的 IP 列表，以供自动规则使用。\n    - “**google_gae**”，用于 GAE 代理，也可用于 google_gws，为保证代理顺畅一般\n      规则不使用这个列表；\n    - “**google_gws**”是未分类的 gws 服务器，可用于大部分 google 域名直连规则\n      （默认配置），使用转发规则有可能出现证书错误。\n    - 特殊谷歌主机名需自行测试调整，如文件上传服务器等。\n    - **相关链接**\n        - 如何区分各种 Server 端｜思起（转） https://github.com/SeaHOH/GotoX/wiki/GServers\n        - 如何区分各种 Server 端｜思起（原） https://blog.aofall.com/archives/7.html\n- ### 代理端口\n    - 自动代理端口需自行配置规则，可根据需要自动分配链接路径，推荐使用（开发动力之一）；\n    - 要使用自动代理请先仔细阅读配置规则说明，由于未添加完全的检测，错误规则可能\n      导致程序出错或非预期的代理结果；\n    - 活动端口完全使用指定的代理（如 CFW），只有当遇到不支持的方法时转用直连，\n      如果此网络资源处于屏蔽状态连接会失败。\n    - 这两个端口还支持 https 方式代理，建议分别设置代理协议，https 连接还是使用\n      http 方式代理，否则会形成双重加密，不仅耗费资源还可能被 Qos 限速；\n    - 使用 https 方式代理，需设置一个 IP 作为默认主机名称，详见配置文件\n      **[listen/iphost]** 项注释。\n    - 可以直接配置使用自动代理端口，也可以用浏览器插件或其它工具进行调度。\n    - **相关链接**\n        - 自动代理动作介绍 https://github.com/SeaHOH/GotoX/wiki/自动代理动作介绍\n- ### 自定义 SNI 扩展\n    通过改变 TSL 的 SNI 扩展，可以直接连接大部分服务器；此时应配合正确的 DNS 服务，\n    或者使用内置的 DNS-over-HTTPS 服务。同时也支持使用原主机名验证服务器证书，\n    详见相关链接。\n    - **相关链接**\n        - 如何使用伪造 SNI 的功能 https://github.com/SeaHOH/GotoX/wiki/如何使用伪造-SNI-的功能\n- ### 用户认证\n    支持以下方法，可设置免验证 IP 白名单。\n    - **Basic 方法**认证。\n        - 优点是支持广泛，基本不会因出错而无法使用；\n        - Basic 方法是**不安全**的认证方法，不建议在外网使用。\n    - 自写的 IP 认证。\n        - 优点是安全性大大提升，但有个例外，见下面；\n        - 需登录，登录时强制使用加密链接；\n        - 登录后，如果连续 30 分钟没有发起任何请求，登录将会失效；\n        - **重要**：由于只认 IP，多台主机可以通过一个处于成功登录状态的 IP 来使用\n          本代理，所以请谨慎分享代理地址；\n        - 同一个用户，只有最新登录成功的 IP 才能通过认证使用代理。\n- ### 导入证书\n    除了非 https 连接和转发（forward）https 连接外，其余代理连接都要求客户端导入\n    自签证书。\n    - 成功运行后会创建独一无二的 CA 证书，证书名称为：“**GotoX CA**”。\n    - 配置好浏览器代理后，在地址栏输入“**http://gotox.go/** ” 即可安装或下载\n      CA 证书；\n    - 也可在 `cert` 文件夹找到 `CA.crt` 证书文件；\n    - 暂时只支持 Windows 启用自动导入和删除功能，其它系统如有需求请手动删除老旧证书。\n    - **重要**：\n        - `CAkey.pem` 包含完整的 CA 证书和密钥信息，**千万保护好此文件不要泄漏**。\n          如果有运行多个 GotoX 副本的需要，保证此文件一致即可正常使用同一个 CA 证书。\n        - 部分手机应用可能不会使用此证书导致验证失败。\n    - **相关链接**\n        - 手动导入证书 https://github.com/XX-net/XX-Net/wiki/GoAgent-Import-CA\n- ### 本地服务\n    提供一个简单的支持加密链接的静态 web 服务器。\n    - 不提供单独端口，**无法直接访问**，需要在设置了 GotoX 代理的情况下访问。\n    - 主机名为“gotox.go”或 GotoX 代理地址，如果是在本机运行 GotoX 且未设置成\n      代理例外，那也可以是本机地址（`127.0.0.1`、`localhost`）。\n    - 路径根目录为程序的 web 文件夹。\n    - 路径为目录时不自动发现 index 文件，显示目录列表以替代。\n    - 返回头部支持常见文件类型，不包含缓存信息。\n- ### 辅助工具\n    - Windows 下提供一个系统托盘辅助工具。\n        - 使用发布的便携版 Python 可以从 `GotoX.vbs` 或快捷方式启动\n          （使用 `create_shortcut.vbs` 生成于桌面）；\n        - 使用安装版 Python 可直接运行 `launcher/start.py` 启动。\n        - 可以打开 GotoX 配置文件；\n        - 可以选择使用何种类型的 gevent 事件循环；\n        - 可以下载生成直连 IP 数据库，**其它系统**需直接运行 `launcher/buildipdb.py` 脚本；\n        - 可以下载生成直连域名数据库，**其它系统**需直接运行 `launcher/builddomains.py` 脚本；\n        - 隐藏或显示窗口；\n        - 监视和设置系统代理（仅适用于局域网连接，其它如直接拨号连接等可能无效）；\n        - 重新载入 GotoX。\n    - 作者现在没有条件为其它系统开发类似工具，欢迎感兴趣者分享代码。\n- ### 小技巧\n    - 自动代理规则支持外部域名列表，可方便使用现成的列表 (如广告、GFW 等)。\n    - 对于不支持 CFW/GAE 出口的网址\n        - 可在**转发（forward）或直连（direct）** 规则中设置成**反向代理** IP；\n        - 或在**其它代理（proxy）** 规则中设置成 **SOCKS 代理**（格式见 `ActionFilter.ini`）。\n    - 反向代理一般**不支持**非加密链接，请**慎用**支持非加密链接的反向代理！\n    - CFW 代理每日仅提供十万次免费请求处理，且限制每分钟一千次请求；单个 Worker\n      可用内存上限仅有 128MB，对外请求队列为 6。如无必要，不要把它作为全局代理\n      使用，不要通过它同时下载大量（包括多线程）较大的文件。\n\n## 兼容性\n- CPython 3.6-3.11已测试，其它版本则无法保证持续运行正常。\n- 必须组件：\n    - gevent 22.8.0 及以上\n    - pyOpenSSL 20.0.0 及以上\n    - dnslib 0.9.19 及以上\n    - PySocks 1.7.1\n- 可选组件：\n    - brotlicffi\n- 提供脚本支持将 CPython 3.8-3.12 win_amd64 打包为便携版本，发布的便携版本即是\n  由此脚本打包。打包环境为 Python 3.6+、pycurl、7-zip, 并使用了\n  [nalexandru](https://github.com/nalexandru/api-ms-win-core-path-HACK)\n  提供的 api-ms-win-core-path-l1-1-0.dll 文件，以帮助 CPython 3.9 及以上版本在\n  Windows 7 上正常运行。\n- 由于自己只使用 Windows，所以其它系统不保证能正常使用。如果有需求作者会尽量修改，\n  但这需要有人帮助测试反馈。\n\n## 其它\n- 支持修改请求和响应（低）。\n- 支持直连（direct）使用自动多线程（低）。\n- 暂不打算提供前置代理功能，请使用转发到后端代理。\n- 不会提供对 HTTP/2 的直接支持，对我个人来说带来的改善无法与付出对等，代码不是\n  我的本行。其部分特性可用多 IP、多 AppID/Worker 以及 keep-alive 的组合来替代，\n  主要损失的是头部的压缩支持，其次某些情况下延迟更大些，尤其是对应 IP 稀少或只有\n  1 个 IP 时。**仅在服务器支持 HTTP/2 时对比。**\n    - **GAE** 问题不大，实际的头部也会压缩。\n    - **直接转发**完全等于直连，是否支持看客户端。\n    - **转发代理**还要看代理服务器是否支持。\n    - 其余的就完全不支持了。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseahoh%2Fgotox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseahoh%2Fgotox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseahoh%2Fgotox/lists"}