View Code? Open in Web Editor
NEW
This project forked from seahoh/gotox
本地自动代理,修改自 goagent。
Visual Basic 0.14%
Python 99.86%
gotox's Introduction
- GotoX 修改自 goagent,其主要目的在于,当访问的网络服务出现问题,用户可以通过方便快速地添加更改规则来自行解决。
- 其特色,一是自动代理,可支持标准 HTTP/1.1 请求;二是可根据需要修改来自客户端的请求以及服务器返回的响应。
- 主要使用 GAE 服务作为后端代理,也支持 HTTP/SOCKS4/SOCKS5 代理,两者处于同等地位。SOCKS 代理支持认证。
- 运行时会一直维护一个较小但快速的 GAE IP 列表。
- 由于众所周知的原因,IPv4 下 GAE 服务基本无法直连,如果要继续使用 GotoX,请通过 SNIProxy 或者 IPv6 链接 GAE。
- 使用 SNIProxy 链接 GAE 时,请注意 [gae/servername] 参数的选择,详见配置注释。
- 由于平台限制,对于通过 GAE 的 https 流量,GotoX 使用自动生成的证书作为凭证,采取中间人方法进行代理;对于需要修改(某些自动代理规则需要)的 https 流量也是如此,不论其是否通过 GAE。
- GotoX 使用 sha256 算法生成证书,只要你不把生成的私钥文件泄露出去,就不会有第三方能通过它们对你进行中间人攻击。
- 默认配置时,GotoX 会验证 GAE 服务器的中级证书是否为谷歌 GIAG2,同时会在 AppID 请求 https 网址时验证其证书有效性。
- 使用 GAE 代理也就意味着:你需要信任谷歌和你所使用的 AppID 服务端的权限者,他们能够窥探和修改通过 GAE 代理的流量信息。
- 为防止被滥用,谷歌在 GAE 代理的头字段中会包含了你使用的 AppID 和原始请求的 TraceID 信息,请慎记之。
- 推荐使用本项目 fork 的 GoProxy GAE 服务端分支,包含一些小改动,可完全兼容 GoProxy 客户端。同时本项目不再兼容 GoProxy GAE 以外的服务端。
- 申请 AppID 或部署服务端时,可尝试直接以默认配置运行本代理使用;如果无法顺利进行,请使用 VPN、Shadowsocks 等其它代理重新开始。
- 警告:不建议使用未知来源的 AppID,它们可能会记录你的各种信息,甚至更改你的流量以达到更危险的目的。
- 相关链接
- 主要配置:
- 具体配置说明,在配置文件中都有较为详细的描述。只有
Config.ini
支持 Config.user.ini
用户配置。
- 需事先提供由其它扫描工具取得一个较大的(最好有几千上万)可用的 GAE IP 列表以供筛选,放入
data/ip.txt
或 data/ipex.txt
中。
- 格式为每行一个完整 IP;
- 每次修改或新建以上两个文件时都会自动进行备份,只有一份,会被后来的覆盖;
ipex.txt
中的 IP 会优先使用,同时会自动并入 ip.txt
;
ipex.txt
文件会在修改后大约二至十二小时内被删除,其 IP 优先使用也同时失效;
- 从列表载入 IP 时,会根据
ip_bad.txt
记录判断生成永久屏蔽 IP,并放入 ip_del.txt
;
- 如果新加 IP 包含永久屏蔽 IP,会自动从
ip_del.txt
删除重置。
- 注意:首次使用或长时间未运行时,请在启动后等待 1-5 分钟,让 GotoX 完成 IP 筛选。
- 也可以在 [gae/iplist] 配置中指定使用固定的 GAE IP 列表,不再持续进行 IP 检查筛选。
- 自动化:
- 自动代理规则和 IP 列表文件可以在运行时替换,无需重启 GotoX。
- 直连和转发规则失败后,会根据条件判断是否尝试使用 GAE 规则。
- 可设置三级 DNS 查询优先级:系统设置、[dns/server] 配置、谷歌 DNS-over-HTTPS API。
- 使用 IP 列表:
- google IP 列表名称“google_gws、google_com”选项由代理自身维护,无需用户填写;
- 用户可以使用其它名称配置自己的 IP 列表,以供自动规则使用。
- “google_gws”是未分类的 gws 服务器,用于 GAE 代理,一般不用设置成这个;
- “google_com”是支持一般谷歌域名反向代理的服务器,可用于大部分 google 域名直连,转发则有极小概率出现证书错误。
- 默认谷歌配置是用 google_gws 直连,兼容性较好;也可配置成用 google_com 转发,保持谷歌证书不变,特殊谷歌主机名需自行测试调整。
- 相关链接
- 代理端口: 现提供两个端口。
- 自动代理端口需自行配置规则,可根据需要自动分配链接路径,推荐使用(开发动力之一);
- 要使用自动代理请先仔细阅读配置规则说明,由于未添加完全的检测,错误规则可能导致程序出错或非预期的代理结果;
- GAE 端口完全使用 GAE 代理,只有当遇到不支持的方法时转用直连,如果此网络资源处于屏蔽状态链接会失败。
- 可以直接配置使用自动代理端口,也可以用浏览器插件或其它工具进行调度。
- 用户认证: 支持以下方法,可设置免验证 IP 白名单。
- Basic 方法认证。
- 优点是支持广泛,基本不会因出错而无法使用;
- Basic 方法是不安全的认证方法,不建议在外网使用。
- 自写的 IP 认证。
- 优点是安全性大大提升,但有个例外,见下面;
- 需登录,登录时强制使用加密链接;
- 登录后,如果连续 30 分钟没有发起任何请求,登录将会失效;
- 重要:由于只认 IP,多台主机可以通过一个处于成功登录状态的 IP 来使用本代理,所以请谨慎分享代理地址;
- 同一个用户,只有最新登录成功的 IP 才能通过认证使用代理。
- 导入证书:
- 成功运行后会创建独一无二的 CA 证书,证书名称为:“GotoX CA”。
- 配置好浏览器代理后,在地址栏输入“http://gotox.go/ ” 即可安装或下载 CA 证书;
- 也可在
cert
文件夹找到 CA.crt
证书文件;
- 由于还不完善,暂时不打算启用自动导入和删除功能,如有需求请手动删除老旧证书。
- 相关链接
- 本地服务: 提供一个简单的支持加密链接的静态 web 服务器。
- 不提供单独端口,无法直接访问,需要在设置了 GotoX 代理的情况下访问。
- 主机名为“gotox.go”或 GotoX 代理地址,如果是在本机运行 GotoX 且未设置成代理例外,那也可以是本机地址(
127.0.0.1
、localhost
)。
- 路径根目录为程序的 web 文件夹。
- 路径为目录时不自动发现 index 文件,显示目录列表以替代。
- 返回头部支持常见文件类型,不包含缓存信息。
- 辅助工具:
- Windows 下提供一个系统托盘辅助工具。
- 使用发布的便携版 Python 可以从
GotoX.vbs
或新建快捷方式启动(GotoX.vbs
里有写怎么新建);
- 使用安装版 Python 可直接运行
launcher/win32.py
启动。
- 可以打开 GotoX 配置文件;
- 可以下载生成直连 IP 数据库,其它系统需直接运行
launcher/buildipdb.py
脚本;
- 隐藏或显示窗口;
- 监视和设置系统代理;
- 重新载入 GotoX。
- 作者现在没有条件为其它系统开发类似工具,欢迎感兴趣者分享代码。
- 小技巧:
- 对于不支持 GAE 出口的网址
- 可在转发(forward)或直连(direct) 规则中设置成反向代理 IP;
- 或在其它代理(proxy) 规则中设置成 SOCKS 代理(格式见
ActionFilter.ini
)。
- 反向代理一般不支持非加密链接,请慎用支持非加密链接的反向代理!
- 尽量不要在 GAE 代理中使用多线程下载工具下载大于 32MB 的文件,会导致 Urlfetch 流量浪费(每日 5GB),针对通过 GAE 代理的大文件下载可以使用内建 autorange 功能(具体配置见
Config.ini
)。
- CPython 3.4/3.5 已测试。
- 不支持 Python 2,保持兼容比较麻烦,已放弃。
- 必须组件:
- gevent 1.1.2 及以上
- pyOpenSSL 16.0.0 及以上
- dnslib 0.8.3 及以上
- PySocks 1.5.4 及以上
- 可选组件:
- 发布将提供包含 Windows CPython 3.5 环境的便携版本。
- IPv6 未测试,欢迎反馈。
- 由于自己只使用 Windows,所以其它系统不保证能正常使用。如果有需求作者会尽量修改,但这需要有人帮助测试反馈。
- 由于近期较为忙碌,以下计划不确定完成时间。
- 请求和响应的修改还未完成,将会加入。
- 直连(direct)的自动多线程支持(低)。
- 前置代理代码还未整理,暂时不提供此功能。请使用转发到后端代理(不通过 GAE)。
- 不会提供对 HTTP/2 的直接支持,对我个人来说带来的改善无法与付出对等,代码不是我的本行。其部分特性可用多 IP、多 AppID 以及 keep-alive 的组合来替代,主要损失的是头部的压缩支持,其次某些情况下延迟更大些,尤其是对应 IP 稀少或只有 1 个 IP 时。仅在服务器支持 HTTP/2 时对比。
- GAE 问题不大,实际的头部也会压缩。
- 直接转发完全等于直连,是否支持看客户端。
- 转发代理还要看代理服务器是否支持。
- 其余的就完全不支持了。
gotox's People
Contributors
Watchers