chinasites.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. package json
  2. import (
  3. "strings"
  4. v2net "github.com/v2ray/v2ray-core/common/net"
  5. )
  6. type ChinaSitesRule struct {
  7. Rule
  8. }
  9. func (this *ChinaSitesRule) Apply(dest v2net.Destination) bool {
  10. address := dest.Address()
  11. if !address.IsDomain() {
  12. return false
  13. }
  14. domain := strings.ToLower(address.Domain())
  15. for _, matcher := range compiledMatchers {
  16. if matcher.Match(domain) {
  17. return true
  18. }
  19. }
  20. return false
  21. }
  22. const (
  23. anySubDomain = "^(.*\\.)?"
  24. dotAm = "\\.am$"
  25. dotCc = "\\.cc$"
  26. dotCn = "\\.cn$"
  27. dotCom = "\\.com$"
  28. dotLa = "\\.la$"
  29. dotNet = "\\.net$"
  30. dotOrg = "\\.org$"
  31. dotTv = "\\.tv$"
  32. )
  33. var (
  34. compiledMatchers = make([]*RegexpDomainMatcher, 0, 1024)
  35. regexpDomains = []string{
  36. dotCn,
  37. anySubDomain + "10010" + dotCom,
  38. anySubDomain + "115" + dotCom,
  39. anySubDomain + "123u" + dotCom,
  40. anySubDomain + "126" + dotCom,
  41. anySubDomain + "126" + dotNet,
  42. anySubDomain + "163" + dotCom,
  43. anySubDomain + "17173" + dotCom,
  44. anySubDomain + "17cdn" + dotCom,
  45. anySubDomain + "1905" + dotCom,
  46. anySubDomain + "21cn" + dotCom,
  47. anySubDomain + "2288" + dotOrg,
  48. anySubDomain + "3322" + dotOrg,
  49. anySubDomain + "360doc" + dotCom,
  50. anySubDomain + "360buy" + dotCom,
  51. anySubDomain + "360buyimg" + dotCom,
  52. anySubDomain + "360safe" + dotCom,
  53. anySubDomain + "39" + dotNet,
  54. anySubDomain + "4399" + dotCom,
  55. anySubDomain + "51" + dotLa,
  56. anySubDomain + "51job" + dotCom,
  57. anySubDomain + "51jobcdn" + dotCom,
  58. anySubDomain + "71" + dotAm,
  59. anySubDomain + "acfun" + dotTv,
  60. anySubDomain + "aicdn" + dotCom,
  61. anySubDomain + "alibaba" + dotCom,
  62. anySubDomain + "alicdn" + dotCom,
  63. anySubDomain + "aliimg.com" + dotCom,
  64. anySubDomain + "alipay" + dotCom,
  65. anySubDomain + "alipayobjects" + dotCom,
  66. anySubDomain + "aliyun" + dotCom,
  67. anySubDomain + "anjuke" + dotCom,
  68. anySubDomain + "babytree" + dotCom,
  69. anySubDomain + "baidu" + dotCom,
  70. anySubDomain + "baiducontent" + dotCom,
  71. anySubDomain + "baifendian" + dotCom,
  72. anySubDomain + "baike" + dotCom,
  73. anySubDomain + "baixing" + dotCom,
  74. anySubDomain + "bdimg" + dotCom,
  75. anySubDomain + "bdstatic" + dotCom,
  76. anySubDomain + "bilibili" + dotCom,
  77. anySubDomain + "bitauto" + dotCom,
  78. anySubDomain + "ccb" + dotCom,
  79. anySubDomain + "ch" + dotCom,
  80. anySubDomain + "china" + dotCom,
  81. anySubDomain + "chinacache" + dotCom,
  82. anySubDomain + "chinacache" + dotNet,
  83. anySubDomain + "chinamobile" + dotCom,
  84. anySubDomain + "chinaz" + dotCom,
  85. anySubDomain + "chuangxin" + dotCom,
  86. anySubDomain + "clouddn" + dotCom,
  87. anySubDomain + "cmbchina" + dotCom,
  88. anySubDomain + "cnbeta" + dotCom,
  89. anySubDomain + "cnbetacdn" + dotCom,
  90. anySubDomain + "cnblogs" + dotCom,
  91. anySubDomain + "cnepub" + dotCom,
  92. anySubDomain + "cnzz" + dotCom,
  93. anySubDomain + "csdn" + dotNet,
  94. anySubDomain + "ctrip" + dotCom,
  95. anySubDomain + "dangdang" + dotCom,
  96. anySubDomain + "diandian" + dotCom,
  97. anySubDomain + "dianping" + dotCom,
  98. anySubDomain + "docin" + dotCom,
  99. anySubDomain + "douban" + dotCom,
  100. anySubDomain + "duowan" + dotCom,
  101. anySubDomain + "eastday" + dotCom,
  102. anySubDomain + "fanli" + dotCom,
  103. anySubDomain + "fhldns" + dotCom,
  104. anySubDomain + "hao123" + dotCom,
  105. anySubDomain + "hao123img" + dotCom,
  106. anySubDomain + "haosou" + dotCom,
  107. anySubDomain + "hexun" + dotCom,
  108. anySubDomain + "huanqiu" + dotCom,
  109. anySubDomain + "hupu" + dotCom,
  110. anySubDomain + "iask" + dotCom,
  111. anySubDomain + "iqiyi" + dotCom,
  112. anySubDomain + "jd" + dotCom,
  113. anySubDomain + "jia" + dotCom,
  114. anySubDomain + "kouclo" + dotCom,
  115. anySubDomain + "ku6" + dotCom,
  116. anySubDomain + "ku6cdn" + dotCom,
  117. anySubDomain + "ku6img" + dotCom,
  118. anySubDomain + "lady8844" + dotCom,
  119. anySubDomain + "leiphone" + dotCom,
  120. anySubDomain + "letv" + dotCom,
  121. anySubDomain + "lvmama" + dotCom,
  122. anySubDomain + "meika360" + dotCom,
  123. anySubDomain + "meituan" + dotCom,
  124. anySubDomain + "mi" + dotCom,
  125. anySubDomain + "miaozhen" + dotCom,
  126. anySubDomain + "ngacn" + dotCc,
  127. anySubDomain + "oeeee" + dotCom,
  128. anySubDomain + "oschina" + dotNet,
  129. anySubDomain + "paipai" + dotCom,
  130. anySubDomain + "pps" + dotTv,
  131. anySubDomain + "qidian" + dotCom,
  132. anySubDomain + "qiniu" + dotCom,
  133. anySubDomain + "qiniudn" + dotCom,
  134. anySubDomain + "qiniudns" + dotCom,
  135. anySubDomain + "qiyi" + dotCom,
  136. anySubDomain + "qiyipic" + dotCom,
  137. anySubDomain + "qq" + dotCom,
  138. anySubDomain + "qqmail" + dotCom,
  139. anySubDomain + "qunar" + dotCom,
  140. anySubDomain + "qzone" + dotCom,
  141. anySubDomain + "renren" + dotCom,
  142. anySubDomain + "smzdm" + dotCom,
  143. anySubDomain + "sohu" + dotCom,
  144. anySubDomain + "sogou" + dotCom,
  145. anySubDomain + "soso" + dotCom,
  146. anySubDomain + "stockstar" + dotCom,
  147. anySubDomain + "suning" + dotCom,
  148. anySubDomain + "tanx" + dotCom,
  149. anySubDomain + "tao123" + dotCom,
  150. anySubDomain + "taobao" + dotCom,
  151. anySubDomain + "taobaocdn" + dotCom,
  152. anySubDomain + "tencent" + dotCom,
  153. anySubDomain + "tenpay" + dotCom,
  154. anySubDomain + "tmall" + dotCom,
  155. anySubDomain + "tudou" + dotCom,
  156. anySubDomain + "unionpay" + dotCom,
  157. anySubDomain + "unionpaysecure" + dotCom,
  158. anySubDomain + "upyun" + dotCom,
  159. anySubDomain + "upaiyun" + dotCom,
  160. anySubDomain + "vip" + dotCom,
  161. anySubDomain + "weibo" + dotCom,
  162. anySubDomain + "weiyun" + dotCom,
  163. anySubDomain + "xiami" + dotCom,
  164. anySubDomain + "xinhuanet" + dotCom,
  165. anySubDomain + "xueqiu" + dotCom,
  166. anySubDomain + "xunlei" + dotCom,
  167. anySubDomain + "xywy" + dotCom,
  168. anySubDomain + "yaolan" + dotCom,
  169. anySubDomain + "yingjiesheng" + dotCom,
  170. anySubDomain + "yhd" + dotCom,
  171. anySubDomain + "youboy" + dotCom,
  172. anySubDomain + "youku" + dotCom,
  173. anySubDomain + "zhihu" + dotCom,
  174. }
  175. )
  176. func init() {
  177. for _, pattern := range regexpDomains {
  178. matcher, err := NewRegexpDomainMatcher(pattern)
  179. if err != nil {
  180. panic(err)
  181. }
  182. compiledMatchers = append(compiledMatchers, matcher)
  183. }
  184. }