V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Winter1sComing
V2EX  ›  问与答

不懂就问,科学上网软件的分流规则搞那么复杂干什么

  •  
  •   Winter1sComing · 2021-01-24 16:09:08 +08:00 · 5331 次点击
    这是一个创建于 1124 天前的主题,其中的信息可能已经有所发展或是发生改变。

    从网上导入别人弄好的规则往往都是上千条,把常用不常用的网站一个个全部列出来 按我的理解(不一定对),匹配 DOMAIN 、DOMAIN-SUFFIX 这类的规则可以 O(1)完成,但 KEYWORD 类的规则不就得 O(n)一个个匹配了么?请求数量一多不会造成很大的性能负担么,在移动设备上还会影响到续航。况且规则再多也总会遇到你访问的网站没有的情况,匹配了几千条规则最终又走到兜底规则去。 我这两天把规则全删了,只写了两条

    GEOIP, CN, DIRECT
    FINAL, PROXY
    

    感觉和之前好像也没什么区别,如果有什么特殊需要,比如 Netflix 走香港节点,另外单独加就是了

    44 条回复    2021-01-25 10:47:21 +08:00
    laminux29
        1
    laminux29  
       2021-01-24 16:17:42 +08:00
    收费的,规则一般是十几条,最多二十几条。如果是免费的,规则多,目的应该是为了防范攻击与滥用,也是能够理解的,毕竟很多免费是的湾湾 fan 动 zu 织搞得,他们的经费也不多。
    cielpy
        2
    cielpy  
       2021-01-24 16:20:48 +08:00   ❤️ 11
    @laminux29 ????
    lcdtyph
        3
    lcdtyph  
       2021-01-24 16:23:30 +08:00   ❤️ 3
    你这两条能应付大多数情况的前提是 dns 结果没有问题。

    然而实际情况下不是这样的。而且如果前面有 DOMAIN 类规则优先匹配的话还可以减少一次 dns 的时间。感受上就是响应更快了。

    规则的确是适用自己的就好,我个人用别人弄的规则的唯一原因是懒。
    Jaosn
        4
    Jaosn  
       2021-01-24 16:24:33 +08:00
    同意楼上,反正有大佬维护,用就是了
    yaoppp
        5
    yaoppp  
       2021-01-24 16:24:50 +08:00 via iPhone
    因为有相当多的没有被封的境外网站啊
    Winter1sComing
        6
    Winter1sComing  
    OP
       2021-01-24 16:28:09 +08:00 via iPhone
    @lcdtyph 有道理,DNS 不行的话确实会影响
    Winter1sComing
        7
    Winter1sComing  
    OP
       2021-01-24 16:28:24 +08:00 via iPhone
    @laminux29 感觉我们说的好像不是一个东西……
    westoy
        8
    westoy  
       2021-01-24 16:28:43 +08:00
    这方案最大的问题是上个 paypal 然后号没了
    taobibi
        9
    taobibi  
       2021-01-24 16:29:02 +08:00
    个人猜测是防止滥用或者下载流量暴增吧
    KyonLi
        10
    KyonLi  
       2021-01-24 16:29:13 +08:00 via iPhone
    你这样全部根据 ip 分流 dns 污染怎么解决的,一个域名同时有国内外节点怎么分流的,访问 ip.cn 拿到的是实际 ip 还是代理服务器的 ip
    Winter1sComing
        11
    Winter1sComing  
    OP
       2021-01-24 16:29:16 +08:00 via iPhone
    @yaoppp GitHub 也没被封,但直连体验极差,我一般还是习惯境外网站直接走代理
    yyysuo
        12
    yyysuo  
       2021-01-24 16:31:07 +08:00
    我觉得规则多了 dns 会疯的吧,现在这些软件方案,不会不同的域名走不同的 dns 代理吧。
    Winter1sComing
        13
    Winter1sComing  
    OP
       2021-01-24 17:05:19 +08:00 via iPhone
    @KyonLi 我试了下 ip.cn 显示的是代理 ip,我看 dns 查询记录不同域名用的服务器还不一样,可能是软件同时向多个 dns 服务器发查询,用最先返回的结果吧,也...没啥问题
    kawaiidora
        14
    kawaiidora  
       2021-01-24 17:19:16 +08:00
    因为有细分需求啊,例如 bilibili 有时需要用到代理,有时又需要直连
    chonger
        15
    chonger  
       2021-01-24 17:34:12 +08:00
    不知道为什么 b 站只要挂上代理就必走代理流量,明明是国内媒体啊。
    cjq8z
        16
    cjq8z  
       2021-01-24 17:39:55 +08:00 via Android
    @chonger DNS 查询问题,B 站也有海外的节点
    mxT52CRuqR6o5
        17
    mxT52CRuqR6o5  
       2021-01-24 17:46:34 +08:00
    比如玩游戏需要一些高倍率低延迟节点
    而下载个苹果系统更新包则应该走低倍率节点
    mxT52CRuqR6o5
        18
    mxT52CRuqR6o5  
       2021-01-24 17:47:50 +08:00
    @mxT52CRuqR6o5 如果看 奈非 还得选特定的落地可解锁的节点
    dcty
        19
    dcty  
       2021-01-24 17:56:55 +08:00
    因为 geoip 不一定准,final 也不是所有人都用 proxy
    digimoon
        20
    digimoon  
       2021-01-24 18:00:43 +08:00
    流量需要钱,不翻就能上的站为啥要翻?而且有些情景是你翻了后反而不能上
    love
        21
    love  
       2021-01-24 18:39:26 +08:00
    keyword 类型要多少才会能有性能问题啊?起码几万起吧?你数了里面有多少 keyword 类型?
    iamwho
        22
    iamwho  
       2021-01-24 18:55:43 +08:00
    因为每个人有不同需求,有隐私需求的人也会问你为什么不直接全局。

    50 条规则和 50000 条规则的“性能负担”基本持平。
    Jirajine
        23
    Jirajine  
       2021-01-24 19:29:03 +08:00 via Android
    那些复杂规则非常不靠谱。某某网站,域名有哪些哪些,这种规则卵用没有。
    分流纯按 IP 就可以了,至于 DNS,可以用一个外部软件。考虑到安全性推荐用一个大陆域名白名单,其余全走 doh 代理解析。
    TypeError
        24
    TypeError  
       2021-01-24 19:30:22 +08:00 via Android
    还是 Android 的分应用代理方便
    FS1P7dJz
        25
    FS1P7dJz  
       2021-01-24 19:38:41 +08:00
    性能开销完全没有你的以为的那么大,除非开发者存在严重的性能缺陷
    这个某火箭还是某影子作者说过了,几万条规则也是没啥影响

    楼主的需求其实我和差不多,但是你要考虑
    第一,通用规则需要适合更多的人
    第二,你这个规则其实会给服务器带来更多的负担,你自建自用没啥感觉,如果是公开 /半公开服务器,那么服务器的流量消耗就会成倍增加
    第三,对于能直接访问的网站来说,你这个反而可能减速.对于一些网站来也,也容易导致账户出现异常(因为大量同 IP 登录)
    lzl2000
        26
    lzl2000  
       2021-01-24 19:41:05 +08:00 via iPhone
    我用国外网站一律走代理,简单方便
    bipy
        27
    bipy  
       2021-01-24 20:16:06 +08:00
    抗 DNS 污染(比如推特的 ip 可能被解析到国内)
    对访问者 ip 有要求的网站(网飞,b 站港澳台,某些私人网站等)
    laydown
        28
    laydown  
       2021-01-24 21:28:05 +08:00
    的确,一般用楼主这么两条其实是没什么大的问题的。
    xenme
        29
    xenme  
       2021-01-24 21:36:05 +08:00 via iPhone
    规则匹配速度比 dns 查询速度快多了,而且还要考虑 dns 污染问题和兼容 cdn 的问题,这两条作为兜底可以,但只有这两条体验不如加点自己常用的黑白名单规则。

    至于网上几万的规则肯定是没必要的
    alo1719
        30
    alo1719  
       2021-01-24 21:36:29 +08:00   ❤️ 6
    KEYWORD 类规则的匹配并不是 O(n)的,算法可以生成字典树一次性匹配所有字符串,在几千条规则的数量级下,不会有什么性能上的损失。
    ShuaiMakMak
        31
    ShuaiMakMak  
       2021-01-24 22:06:20 +08:00
    主要还是各地区流媒体开太多
    lostberryzz
        32
    lostberryzz  
       2021-01-24 22:09:32 +08:00
    一般的配置 DOMAIN-KEYWORD 只有几十条,基本上都是 DOMIAN-SUFFIX,几乎不会有什么性能损失,换来的是更好更快的响应速度(在 Rule List 里的直接代理 DNS 请求),另外还有隐私需求,不想通过国内 DNS 服务器查询部分敏感域名。而且不是境外的 IP 就一定要走代理的,有很多直连速度也很快,有很多有实时性要求不适合走代理。
    czhfrank
        33
    czhfrank  
       2021-01-24 22:13:34 +08:00 via iPhone
    @TypeError 请教安卓怎么按应用代理的?
    chairuosen
        34
    chairuosen  
       2021-01-24 22:19:39 +08:00
    @czhfrank #33 ssrr
    xionger
        35
    xionger  
       2021-01-24 22:51:40 +08:00
    你看 brook 的就简单到极致了
    IP 列表和域名列表 比如 a.com 就包含了 xx.a.com, xx.xx.a.com 等等
    systemcall
        36
    systemcall  
       2021-01-24 22:57:35 +08:00
    有一些网站只是主站和登录、验证之类的服务器连不上,CDN 是可以连上去的。你可以多试试,可以省不少流量钱
    再就是有些 CDN 是全球的,你问 DNS,不同地区的 DNS 给出的结果还不一样,结果就是可能一些网站很慢或者没法用
    要是不差钱的话,感觉可以默认走代理,走代理不行的时候再直连,也不用想方设法节省流量了
    UnitTest
        37
    UnitTest  
       2021-01-24 23:24:15 +08:00
    我说一点, 一般来说规则就几千条, 上万条的我没有尝试过性能如何。
    几千条的遍历对于,遍历之后对比的字符串也比较短,对于目前的 cpu 来说问题不大。你每秒的网络请求其实没太多,有很多是长连接。
    如果有必要的话,几千条转成 map 之后就不用遍历了,只需要额外消耗一点点内存。目前设备基本上都不差这点内存。
    Rorysky
        38
    Rorysky  
       2021-01-25 00:06:39 +08:00
    首先如果你是 macOS,那所有的操作系统更新、音乐之类流量会全部走 代理……
    TypeError
        39
    TypeError  
       2021-01-25 00:25:52 +08:00 via Android
    @czhfrank ss,v2ray,clash 的 Android 客户端都自带这功能,可以选择白名单黑名单 app 走直连不代理
    sasalemma
        40
    sasalemma  
       2021-01-25 01:22:48 +08:00
    还不如直接挂墙内墙外的 dns,看返回速度,那个快就决定用直连或者代理不更合理?
    datocp
        41
    datocp  
       2021-01-25 06:07:53 +08:00 via Android
    都不知道各位在讨论什么,当年 2015 年 1 月 1 日,一个具备 socks5 远程 dns 查询的 ss 终端竟然异常,从那天起弃了所有的 ss 客户端。
    玩了这么多年哪这么复杂 stunnel+softether+ocserv 到处走,都是 tls 加密,我可不想被中间人过滤。
    zhoushengyue
        42
    zhoushengyue  
       2021-01-25 08:58:12 +08:00
    @kawaiidora 看有些动漫就只能挂 HK 节点,不挂看不了
    Pogbag
        43
    Pogbag  
       2021-01-25 10:32:45 +08:00
    @laminux29 我怎么觉得你说的是节点阿
    abersheeran
        44
    abersheeran  
       2021-01-25 10:47:21 +08:00   ❤️ 1
    规则是为了加速。我写过一个。纯 Python 的。零名单和几万的名单,速度我没感觉有影响。

    另外,规则这个我觉得没必要吐槽,也只是条数多,写 /改起来还是很简单的。但是配置一个比一个复杂才是真的需要吐槽的吧。SS/SSR 还行……配置一下加密手段就行。后面 v2ray 就开始起飞了,我到现在也没明白怎么配置。然后是 Clash,好家伙,配置文件相当于自建的编程语言了。

    于是我含泪花了一个周末自己写一个 GUI 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3162 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 13:02 · PVG 21:02 · LAX 05:02 · JFK 08:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.