SeaHOH / GotoX

本地自动代理,修改自 goagent。
735 stars 149 forks source link

带开关的 “自动代理@启动” & “清除代理@退出” 方案 #231

Closed 1-1-2 closed 2 years ago

1-1-2 commented 2 years ago

增加一个开关,在Windows下使能/禁止以下功能(1启用,0禁用):

  1. 启动时,设置使用自动代理
  2. 正常退出时,清除系统代理
1-1-2 commented 2 years ago

感谢拔冗回复。也希望跟您聊一聊。

我是从Clash For Windows过来的,它的策略是在软件启动时,保持 软件 上一次的运行状态+覆盖系统代理;退出时,清空系统代理。也是本次修改的灵感来源。

回复中提到的想法很棒——关闭时恢复软件启动前的状态。或许“保留启动前代理状态”也能成为一项新的存储到dsext.conf的设置?

另外还有个idea——全局快捷键。比方说通过ctrl+f1~f3实现三种(自动、CFW、禁用)系统代理状态的快速切换。

坦白来说,本能动手就不求人,我尝试理解、魔改了这部分的实现,虽然能在本地运行,但缺乏系统性。

如果是从 start.py 启动,则这个功能无法生效。所以不应该将设置放入主配置,而是像事件循环那样放入设置菜单,配置独立或与事件循环配置合并。

我承认我是个代码苦手。这已经超出了我对本项目架构的理解,暂时不具备良好的实现能力。或许还得把这个接力棒交给大佬。

SeaHOH commented 2 years ago

我自己是没有这种需求的,但是要实现自动设置的话,按理就该在退出时恢复原状,否则就可能丢失原配置。当然,退出时也可以根据用户的意愿不恢复,而是设置成其它各种可能的配置。设置存储位置是小事,只要不违反常理,以方便调用为佳,所以这里单独建个文件也不错。

全局快捷键同样,完全可以实现。

如果你对 python 不熟悉,后面的修改可以由我来做。


你说得不错,求人不如自己动手,Python 的好处就是上手容易。当初我也是想实践自己的想法才写了这个工具。其实一整个架构挺简陋的,效率也不太行,近几年一直想推倒重来,就是觉得时间不够用。我也是半路出家的野狐禅,缺乏足够的经验,有些流程和架构弄起来就太费时间。

话说为什么想到要用这个工具呢,我估计你应该还在继续使用 Clash 吧?

1-1-2 commented 2 years ago

主要是为了解决“SNI阻断”这一问题。

反制DNS污染、SNI阻断还能利用CF Workers代理一把梭的,很难有更好的选择了。文档详实,边用边学。

还有一个诱因是,近期出现了预期外的网络波动。

那,这个 PR 可以优雅地close掉了?

SeaHOH commented 2 years ago

不关也行,我可以直接在你的分支上修改。当然如果想删除 fork,关掉也没啥,随你。

不过整个 CloudFlare 网络中,如果某些域名被 SNI 阻断了,GotoX 大概率是没法绕过的,好像现在是 全面(?) 严格对应 SNI 和 Host。其它大多数网站都没有这么高的安全标准,基本都支持所谓的域前置。

确实反污染的工具比较丰富,但像 GotoX 这样通用性的反 SNI 阻断的工具就很少,但还是有更好的,就那种直接跳 RST 来忽略阻断,不需要自签证书。其中一个咱自家人开发的,有各平台预编译 (名字就不说了,作者改名了,因为大概两个月前涌入一大堆人),通过过滤数据包实现的,仔细搜索应该可以找到。

1-1-2 commented 2 years ago

emmm是通过跳过伪造的 RST 包来强行通信吗?有点意思

小搜了一下没有发现,缘分未到。

SeaHOH commented 2 years ago

既然是包过滤,关键字肯定有packet pcap,再加个 Windows 平台的 pcap 驱动名 WinDivert,还能反污染那加个 dns。我试过谷歌和本站都能搜到。 作者写了多个类似工具,只有一个有发布 Windows 预编译文件。先前记错了,其它平台需自行编译。

SeaHOH commented 2 years ago

修改完成,顺便修复和整理了之前有问题的地方,请测试。


另外,快捷键虽然哪里实现都可以,直接在 win_tray.py 中会比较简单,但在这个情景下应该由 winsystray 包提供,那么实现起来就比较麻烦。因为作为一个独立的包,要提供完备的功能才行,必须包含大量快捷键定义或引入新的包,以及添加功能相关的通用处理代码。所以当前我并没有添加快捷键。

1-1-2 commented 2 years ago

运行正常,很棒!

SeaHOH commented 2 years ago

谢谢啦!没问题明天就合并。

1-1-2 commented 2 years ago

不客气(●'◡'●)

SeaHOH commented 2 years ago

眼神愈发不行,还是漏了个错误,已单独提交修复。