2dust / clashN

A clash client for Windows, support Mihomo
https://1.2345345.xyz
GNU General Public License v3.0
4.82k stars 595 forks source link

添加PAC模式 #163

Closed j4587698 closed 2 years ago

j4587698 commented 2 years ago
  1. 增加了Pac模式,目前没有放pac.txt文件,也没有增加下载pac.txt的功能。
  2. 由于c#自带的HttpListener要管理员权限才能使用,否则会报拒绝访问的错误,所以目前使用了TouchSocket作为HttpServer提供Pac文件支持。
2dust commented 2 years ago

感谢PR PAC模式是可有可无的,为了此功能引入TouchSocket不合适 您可以尝试TcpListener

j4587698 commented 2 years ago

@2dust PAC模式对我来说是刚需,我觉得应该有很多机场比较差的人应该也刚需的。 因为机场比较便宜,所以通过机场走不是加速是减速。而目前Rule模式实际上是所有的非国内IP都走代理,所以访问那些没有被墙的网站,使用代理后体验会非常差,通过PAC的话就可以控制只有被墙的才会走。

回头我尝试一下使用TcpListener做个简易httpserver出来。

j4587698 commented 2 years ago

已经修改为使用TcpListener

2dust commented 2 years ago

您是否已经测试通过? 请提交一个最新的可用pac文件,并放到guiConfigs目录下

j4587698 commented 2 years ago

自己已经编译使用了,没问题。 我自己用的pac已经很老了,是ssr的,现在已经处理了一个最新的pac文件,程序里没有guiConfigs目录,怎么放呢?

2dust commented 2 years ago

自己已经编译使用了,没问题。 我自己用的pac已经很老了,是ssr的,现在已经处理了一个最新的pac文件,程序里没有guiConfigs目录,怎么放呢?

参考sysproxy.exe 压缩pac文件放到资源中; 在读取pac时,如果guiConfigs目录中存在则直接调用,如果不存在则解压到guiConfigs中再读取。 这样用户就可以自行修改pac内容了

zdm9981 commented 1 year ago

@j4587698 看了下pac里的规则是有黑名单和白名单分开的,和之前v2rayN 3.x里的pac使用的adblock plus语法的规则不兼容,能否更新下直接使用adblock plus的规则?感觉更好用些 可以直接把gfwlist放进去了 https://adblockplus.org/en/filter-cheatsheet

j4587698 commented 1 year ago

@j4587698 看了下pac里的规则是有黑名单和白名单分开的,和之前v2rayN 3.x里的pac使用的adblock plus语法的规则不兼容,能否更新下直接使用adblock plus的规则?感觉更好用些 就可以直接把gfwlist放进去了 https://adblockplus.org/en/filter-cheatsheet

@zdm9981 PAC的语法其实是操作系统或者浏览器处理的,软件只是把PAC作为一个网址提供给系统。现在给的也是gfwlist。 v2ray 3.x不知道有什么改动,v2ray的第一个pac版本也是我提交的,你可以尝试一下直接放进去,软件唯一做的事情就是把pac文件的__PROXY__字段替换成了对应的ip+端口。

zdm9981 commented 1 year ago

@j4587698 之前的版本里pac都是直接使用的gfwlist,gfwlist里是用 || 和 @@|| 来区分黑白名单放在一个列表里的 看了下新版的v2rayn和clashn把两个名单分开了。问题是目前也没有自动更新pac的功能,只能手动将gfwlist base64解码更新到pac文件里 如果要重新手动将黑白名单区分开比较麻烦。

j4587698 commented 1 year ago

@j4587698 之前的版本里pac都是直接使用的gfwlist,gfwlist里是用 || 和 @@|| 来区分黑白名单放在一个列表里的 看了下新版的v2rayn和clashn把两个名单分开了。问题是目前也没有自动更新pac的功能,只能手动将gfwlist base64解码更新到pac文件里 如果要重新手动将黑白名单区分开比较麻烦。

@zdm9981 我不是说了嘛。。PAC文件是操作系统解析的,你的PAC只要符合PAC的语法就可以,不是新版分开不分开,分开是因为gfwlist分开了,你不想分开完全可以用不分开的