v2ray vor 10 Jahren
Ursprung
Commit
1e6aa73781

+ 193 - 0
app/router/rules/json/chinasites.go

@@ -0,0 +1,193 @@
+package json
+
+import (
+	"strings"
+
+	v2net "github.com/v2ray/v2ray-core/common/net"
+)
+
+type ChinaSitesRule struct {
+	Rule
+}
+
+func (this *ChinaSitesRule) Apply(dest v2net.Destination) bool {
+	address := dest.Address()
+	if !address.IsDomain() {
+		return false
+	}
+	domain := strings.ToLower(address.Domain())
+	for _, matcher := range compiledMatchers {
+		if matcher.Match(domain) {
+			return true
+		}
+	}
+	return false
+}
+
+const (
+	anySubDomain = "^(.*\\.)?"
+	dotAm        = "\\.am$"
+	dotCc        = "\\.cc$"
+	dotCn        = "\\.cn$"
+	dotCom       = "\\.com$"
+	dotLa        = "\\.la$"
+	dotNet       = "\\.net$"
+	dotOrg       = "\\.org$"
+	dotTv        = "\\.tv$"
+)
+
+var (
+	compiledMatchers = make([]*RegexpDomainMatcher, 0, 1024)
+
+	regexpDomains = []string{
+		dotCn,
+
+		anySubDomain + "10010" + dotCom,
+		anySubDomain + "115" + dotCom,
+		anySubDomain + "123u" + dotCom,
+		anySubDomain + "126" + dotCom,
+		anySubDomain + "126" + dotNet,
+		anySubDomain + "163" + dotCom,
+		anySubDomain + "17173" + dotCom,
+		anySubDomain + "17cdn" + dotCom,
+		anySubDomain + "1905" + dotCom,
+		anySubDomain + "21cn" + dotCom,
+		anySubDomain + "2288" + dotOrg,
+		anySubDomain + "3322" + dotOrg,
+		anySubDomain + "360doc" + dotCom,
+		anySubDomain + "360buy" + dotCom,
+		anySubDomain + "360buyimg" + dotCom,
+		anySubDomain + "360safe" + dotCom,
+		anySubDomain + "39" + dotNet,
+		anySubDomain + "4399" + dotCom,
+		anySubDomain + "51" + dotLa,
+		anySubDomain + "51job" + dotCom,
+		anySubDomain + "51jobcdn" + dotCom,
+		anySubDomain + "71" + dotAm,
+		anySubDomain + "acfun" + dotTv,
+		anySubDomain + "aicdn" + dotCom,
+		anySubDomain + "alibaba" + dotCom,
+		anySubDomain + "alicdn" + dotCom,
+		anySubDomain + "aliimg.com" + dotCom,
+		anySubDomain + "alipay" + dotCom,
+		anySubDomain + "alipayobjects" + dotCom,
+		anySubDomain + "aliyun" + dotCom,
+		anySubDomain + "anjuke" + dotCom,
+		anySubDomain + "babytree" + dotCom,
+		anySubDomain + "baidu" + dotCom,
+		anySubDomain + "baiducontent" + dotCom,
+		anySubDomain + "baifendian" + dotCom,
+		anySubDomain + "baike" + dotCom,
+		anySubDomain + "baixing" + dotCom,
+		anySubDomain + "bdimg" + dotCom,
+		anySubDomain + "bdstatic" + dotCom,
+		anySubDomain + "bilibili" + dotCom,
+		anySubDomain + "bitauto" + dotCom,
+		anySubDomain + "ccb" + dotCom,
+		anySubDomain + "ch" + dotCom,
+		anySubDomain + "china" + dotCom,
+		anySubDomain + "chinacache" + dotCom,
+		anySubDomain + "chinacache" + dotNet,
+		anySubDomain + "chinamobile" + dotCom,
+		anySubDomain + "chinaz" + dotCom,
+		anySubDomain + "chuangxin" + dotCom,
+		anySubDomain + "clouddn" + dotCom,
+		anySubDomain + "cmbchina" + dotCom,
+		anySubDomain + "cnbeta" + dotCom,
+		anySubDomain + "cnbetacdn" + dotCom,
+		anySubDomain + "cnblogs" + dotCom,
+		anySubDomain + "cnepub" + dotCom,
+		anySubDomain + "cnzz" + dotCom,
+		anySubDomain + "csdn" + dotNet,
+		anySubDomain + "ctrip" + dotCom,
+		anySubDomain + "dangdang" + dotCom,
+		anySubDomain + "diandian" + dotCom,
+		anySubDomain + "dianping" + dotCom,
+		anySubDomain + "docin" + dotCom,
+		anySubDomain + "douban" + dotCom,
+		anySubDomain + "duowan" + dotCom,
+		anySubDomain + "eastday" + dotCom,
+		anySubDomain + "fanli" + dotCom,
+		anySubDomain + "fhldns" + dotCom,
+		anySubDomain + "hao123" + dotCom,
+		anySubDomain + "hao123img" + dotCom,
+		anySubDomain + "haosou" + dotCom,
+		anySubDomain + "hexun" + dotCom,
+		anySubDomain + "huanqiu" + dotCom,
+		anySubDomain + "hupu" + dotCom,
+		anySubDomain + "iask" + dotCom,
+		anySubDomain + "iqiyi" + dotCom,
+		anySubDomain + "jd" + dotCom,
+		anySubDomain + "jia" + dotCom,
+		anySubDomain + "kouclo" + dotCom,
+		anySubDomain + "ku6" + dotCom,
+		anySubDomain + "ku6cdn" + dotCom,
+		anySubDomain + "ku6img" + dotCom,
+		anySubDomain + "lady8844" + dotCom,
+		anySubDomain + "leiphone" + dotCom,
+		anySubDomain + "letv" + dotCom,
+		anySubDomain + "lvmama" + dotCom,
+		anySubDomain + "meika360" + dotCom,
+		anySubDomain + "meituan" + dotCom,
+		anySubDomain + "mi" + dotCom,
+		anySubDomain + "miaozhen" + dotCom,
+		anySubDomain + "ngacn" + dotCc,
+		anySubDomain + "oeeee" + dotCom,
+		anySubDomain + "oschina" + dotNet,
+		anySubDomain + "paipai" + dotCom,
+		anySubDomain + "pps" + dotTv,
+		anySubDomain + "qidian" + dotCom,
+		anySubDomain + "qiniu" + dotCom,
+		anySubDomain + "qiniudn" + dotCom,
+		anySubDomain + "qiniudns" + dotCom,
+		anySubDomain + "qiyi" + dotCom,
+		anySubDomain + "qiyipic" + dotCom,
+		anySubDomain + "qq" + dotCom,
+		anySubDomain + "qqmail" + dotCom,
+		anySubDomain + "qunar" + dotCom,
+		anySubDomain + "qzone" + dotCom,
+		anySubDomain + "renren" + dotCom,
+		anySubDomain + "smzdm" + dotCom,
+		anySubDomain + "sohu" + dotCom,
+		anySubDomain + "sogou" + dotCom,
+		anySubDomain + "soso" + dotCom,
+		anySubDomain + "stockstar" + dotCom,
+		anySubDomain + "suning" + dotCom,
+		anySubDomain + "tanx" + dotCom,
+		anySubDomain + "tao123" + dotCom,
+		anySubDomain + "taobao" + dotCom,
+		anySubDomain + "taobaocdn" + dotCom,
+		anySubDomain + "tencent" + dotCom,
+		anySubDomain + "tenpay" + dotCom,
+		anySubDomain + "tmall" + dotCom,
+		anySubDomain + "tudou" + dotCom,
+		anySubDomain + "unionpay" + dotCom,
+		anySubDomain + "unionpaysecure" + dotCom,
+		anySubDomain + "upyun" + dotCom,
+		anySubDomain + "upaiyun" + dotCom,
+		anySubDomain + "vip" + dotCom,
+		anySubDomain + "weibo" + dotCom,
+		anySubDomain + "weiyun" + dotCom,
+		anySubDomain + "xiami" + dotCom,
+		anySubDomain + "xinhuanet" + dotCom,
+		anySubDomain + "xueqiu" + dotCom,
+		anySubDomain + "xunlei" + dotCom,
+		anySubDomain + "xywy" + dotCom,
+		anySubDomain + "yaolan" + dotCom,
+		anySubDomain + "yingjiesheng" + dotCom,
+		anySubDomain + "yhd" + dotCom,
+		anySubDomain + "youboy" + dotCom,
+		anySubDomain + "youku" + dotCom,
+		anySubDomain + "zhihu" + dotCom,
+	}
+)
+
+func init() {
+	for _, pattern := range regexpDomains {
+		matcher, err := NewRegexpDomainMatcher(pattern)
+		if err != nil {
+			panic(err)
+		}
+		compiledMatchers = append(compiledMatchers, matcher)
+	}
+}

+ 25 - 0
app/router/rules/json/chinasites_test.go

@@ -0,0 +1,25 @@
+package json
+
+import (
+	"testing"
+
+	v2net "github.com/v2ray/v2ray-core/common/net"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
+)
+
+func makeDomainDestination(domain string) v2net.Destination {
+	return v2net.NewTCPDestination(v2net.DomainAddress(domain, 80))
+}
+
+func TestChinaSites(t *testing.T) {
+	v2testing.Current(t)
+
+	rule := &ChinaSitesRule{}
+	assert.Bool(rule.Apply(makeDomainDestination("v.qq.com"))).IsTrue()
+	assert.Bool(rule.Apply(makeDomainDestination("www.163.com"))).IsTrue()
+	assert.Bool(rule.Apply(makeDomainDestination("ngacn.cc"))).IsTrue()
+	assert.Bool(rule.Apply(makeDomainDestination("12306.cn"))).IsTrue()
+
+	assert.Bool(rule.Apply(makeDomainDestination("v2ray.com"))).IsFalse()
+}

+ 8 - 0
app/router/rules/json/router.go

@@ -36,6 +36,14 @@ func parseRule(msg json.RawMessage) rules.Rule {
 		}
 		return chinaiprule
 	}
+	if rule.Type == "chinasites" {
+		chinasitesrule := new(ChinaSitesRule)
+		if err := json.Unmarshal(msg, chinasitesrule); err != nil {
+			log.Error("Invalid chinasites rule: %v", err)
+			return nil
+		}
+		return chinasitesrule
+	}
 	log.Error("Unknown router rule type: %s", rule.Type)
 	return nil
 }

+ 1 - 99
release/config/vpoint_socks_vmess.json

@@ -1036,105 +1036,7 @@
     "settings": {
       "rules": [
         {
-          "type": "field",
-          "domain": [
-            "regexp:.cn$",
-            "baidu.com",
-            "baiducontent.com",
-            "regexp:qq.com$",
-            "taobao.com",
-            "weibo.com",
-            "tao123.com",
-            "tmall.com",
-            "sohu.com",
-            "xinhuanet.com",
-            "soso.com",
-            "jd.com",
-            "cntv.cn",
-            "163.com",
-            "sogou.com",
-            "china.com",
-            "youku.com",
-            "alipay.com",
-            "cnzz.com",
-            "tudou.com",
-            "douban.com",
-            "zhihu.com",
-            "babytree.com",
-            "51.la",
-            "smzdm.com",
-            "bilibili.com",
-            "bitauto.com",
-            "39.net",
-            "xywy.com",
-            "huanqiu.com",
-            "21cn.com",
-            "1905.com",
-            "qiyi.com",
-            "kouclo.com",
-            "alibaba.com",
-            "haosou.com",
-            "yaolan.com",
-            "lady8844.com",
-            "baike.com",
-            "eastday.com",
-            "hupu.com",
-            "csdn.net",
-            "youboy.com",
-            "chinaz.com",
-            "cnbeta.com",
-            "suning.com",
-            "stockstar.com",
-            "xunlei.com",
-            "oeeee.com",
-            "qunar.com",
-            "fanli.com",
-            "acfun.tv",
-            "dianping.com",
-            "126.com",
-            "aliyun.com",
-            "xiami.com",
-            "mi.com",
-            "dangdang.com",
-            "yhd.com",
-            "jia.com",
-            "qidian.com",
-            "ccb.com",
-            "anjuke.com",
-            "ngacn.cc",
-            "hexun.com",
-            "ctrip.com",
-            "17173.com",
-            "oschina.net",
-            "docin.com",
-            "renren.com",
-            "duowan.com",
-            "vip.com",
-            "meituan.com",
-            "360doc.com",
-            "xueqiu.com",
-            "cmbchina.com",
-            "pps.tv",
-            "regex:\\.?ch.com",
-            "lvmama.com",
-            "clouddn.com",
-            "leiphone.com",
-            "alicdn.com",
-            ".71.am",
-            ".miaozhen.com",
-            "meika360.com",
-            "qiyipic.com",
-            "baifendian.com",
-            "qiniudn.com",
-            "qiniudns.com",
-            "clouddn.com",
-            "tencent.com",
-            "qqmail.com",
-            "qzone.com",
-            "soso.com",
-            "paipai.com",
-            "tenpay.com"
-          ],
+          "type": "chinasites",
           "outboundTag": "direct"
         },
         {