Closed 1-1-2 closed 2 years ago
感谢拔冗回复。也希望跟您聊一聊。
我是从Clash For Windows过来的,它的策略是在软件启动时,保持 软件 上一次的运行状态+覆盖系统代理;退出时,清空系统代理。也是本次修改的灵感来源。
回复中提到的想法很棒——关闭时恢复软件启动前的状态。或许“保留启动前代理状态”也能成为一项新的存储到dsext.conf
的设置?
另外还有个idea——全局快捷键。比方说通过ctrl+f1~f3实现三种(自动、CFW、禁用)系统代理状态的快速切换。
坦白来说,本能动手就不求人,我尝试理解、魔改了这部分的实现,虽然能在本地运行,但缺乏系统性。
如果是从 start.py 启动,则这个功能无法生效。所以不应该将设置放入主配置,而是像事件循环那样放入设置菜单,配置独立或与事件循环配置合并。
我承认我是个代码苦手。这已经超出了我对本项目架构的理解,暂时不具备良好的实现能力。或许还得把这个接力棒交给大佬。
我自己是没有这种需求的,但是要实现自动设置的话,按理就该在退出时恢复原状,否则就可能丢失原配置。当然,退出时也可以根据用户的意愿不恢复,而是设置成其它各种可能的配置。设置存储位置是小事,只要不违反常理,以方便调用为佳,所以这里单独建个文件也不错。
全局快捷键同样,完全可以实现。
如果你对 python 不熟悉,后面的修改可以由我来做。
你说得不错,求人不如自己动手,Python 的好处就是上手容易。当初我也是想实践自己的想法才写了这个工具。其实一整个架构挺简陋的,效率也不太行,近几年一直想推倒重来,就是觉得时间不够用。我也是半路出家的野狐禅,缺乏足够的经验,有些流程和架构弄起来就太费时间。
话说为什么想到要用这个工具呢,我估计你应该还在继续使用 Clash 吧?
主要是为了解决“SNI阻断”这一问题。
反制DNS污染、SNI阻断还能利用CF Workers代理一把梭的,很难有更好的选择了。文档详实,边用边学。
还有一个诱因是,近期出现了预期外的网络波动。
那,这个 PR 可以优雅地close掉了?
不关也行,我可以直接在你的分支上修改。当然如果想删除 fork,关掉也没啥,随你。
不过整个 CloudFlare 网络中,如果某些域名被 SNI 阻断了,GotoX 大概率是没法绕过的,好像现在是 全面(?) 严格对应 SNI 和 Host。其它大多数网站都没有这么高的安全标准,基本都支持所谓的域前置。
确实反污染的工具比较丰富,但像 GotoX 这样通用性的反 SNI 阻断的工具就很少,但还是有更好的,就那种直接跳 RST 来忽略阻断,不需要自签证书。其中一个咱自家人开发的,有各平台预编译 (名字就不说了,作者改名了,因为大概两个月前涌入一大堆人),通过过滤数据包实现的,仔细搜索应该可以找到。
emmm是通过跳过伪造的 RST 包来强行通信吗?有点意思
小搜了一下没有发现,缘分未到。
既然是包过滤,关键字肯定有packet
pcap
,再加个 Windows 平台的 pcap 驱动名 WinDivert
,还能反污染那加个 dns
。我试过谷歌和本站都能搜到。
作者写了多个类似工具,只有一个有发布 Windows 预编译文件。先前记错了,其它平台需自行编译。
修改完成,顺便修复和整理了之前有问题的地方,请测试。
另外,快捷键虽然哪里实现都可以,直接在 win_tray.py 中会比较简单,但在这个情景下应该由 winsystray 包提供,那么实现起来就比较麻烦。因为作为一个独立的包,要提供完备的功能才行,必须包含大量快捷键定义或引入新的包,以及添加功能相关的通用处理代码。所以当前我并没有添加快捷键。
运行正常,很棒!
谢谢啦!没问题明天就合并。
不客气(●'◡'●)
眼神愈发不行,还是漏了个错误,已单独提交修复。
增加一个开关,在Windows下使能/禁止以下功能(1启用,0禁用):