From bbd3988f3d39a35750c8d1973f48c543d36e8d4c Mon Sep 17 00:00:00 2001 From: Agioi Theodoroi Date: Tue, 14 Apr 2020 21:19:52 -0400 Subject: [PATCH 01/34] clean up code --- app/dns/dnscommon_test.go | 4 ---- app/dns/server.go | 2 +- app/router/condition.go | 5 +---- infra/conf/vmess.go | 2 -- proxy/shadowsocks/protocol.go | 1 - proxy/vmess/validator.go | 3 +-- testing/servers/http/http.go | 1 - 7 files changed, 3 insertions(+), 15 deletions(-) diff --git a/app/dns/dnscommon_test.go b/app/dns/dnscommon_test.go index 62a35012..d6f43c65 100644 --- a/app/dns/dnscommon_test.go +++ b/app/dns/dnscommon_test.go @@ -16,10 +16,6 @@ import ( ) func Test_parseResponse(t *testing.T) { - type args struct { - payload []byte - } - var p [][]byte ans := new(dns.Msg) diff --git a/app/dns/server.go b/app/dns/server.go index 2d89f3aa..6598008f 100644 --- a/app/dns/server.go +++ b/app/dns/server.go @@ -308,7 +308,7 @@ func (s *Server) lookupIPInternal(domain string, option IPOption) ([]net.IP, err } // skip domain without any dot - if strings.Index(domain, ".") == -1 { + if !strings.Contains(domain, ".") { return nil, newError("invalid domain name").AtWarning() } diff --git a/app/router/condition.go b/app/router/condition.go index 4a80471f..209a60a3 100644 --- a/app/router/condition.go +++ b/app/router/condition.go @@ -294,10 +294,7 @@ func NewAttributeMatcher(code string) (*AttributeMatcher, error) { return nil, newError("attr rule").Base(err) } p, err := starlark.FileProgram(starFile, func(name string) bool { - if name == "attrs" { - return true - } - return false + return name == "attrs" }) if err != nil { return nil, err diff --git a/infra/conf/vmess.go b/infra/conf/vmess.go index b9531fde..838fa263 100644 --- a/infra/conf/vmess.go +++ b/infra/conf/vmess.go @@ -126,8 +126,6 @@ type VMessOutboundConfig struct { Receivers []*VMessOutboundTarget `json:"vnext"` } -var bUser = "a06fe789-5ab1-480b-8124-ae4599801ff3" - // Build implements Buildable func (c *VMessOutboundConfig) Build() (proto.Message, error) { config := new(outbound.Config) diff --git a/proxy/shadowsocks/protocol.go b/proxy/shadowsocks/protocol.go index 8c9d6935..7dd432bc 100644 --- a/proxy/shadowsocks/protocol.go +++ b/proxy/shadowsocks/protocol.go @@ -50,7 +50,6 @@ func ReadTCPSession(user *protocol.MemoryUser, reader io.Reader) (*protocol.Requ return nil, nil, newError("failed to initialize decoding stream").Base(err).AtError() } br := &buf.BufferedReader{Reader: r} - reader = nil authenticator := NewAuthenticator(HeaderKeyGenerator(account.Key, iv)) request := &protocol.RequestHeader{ diff --git a/proxy/vmess/validator.go b/proxy/vmess/validator.go index bf64d98a..a7664db4 100644 --- a/proxy/vmess/validator.go +++ b/proxy/vmess/validator.go @@ -159,8 +159,7 @@ func (v *TimedUserValidator) Get(userHash []byte) (*protocol.MemoryUser, protoco copy(fixedSizeHash[:], userHash) pair, found := v.userHash[fixedSizeHash] if found { - var user protocol.MemoryUser - user = pair.user.user + user := pair.user.user if atomic.LoadUint32(pair.taintedFuse) == 0 { return &user, protocol.Timestamp(pair.timeInc) + v.baseTime, true, nil } diff --git a/testing/servers/http/http.go b/testing/servers/http/http.go index 6bada232..379da590 100644 --- a/testing/servers/http/http.go +++ b/testing/servers/http/http.go @@ -9,7 +9,6 @@ import ( type Server struct { Port net.Port PathHandler map[string]http.HandlerFunc - accepting bool server *http.Server } From 97074c5bf475dc52095c205bfde3c0f3373e9fef Mon Sep 17 00:00:00 2001 From: Agioi Theodoroi Date: Tue, 14 Apr 2020 21:51:38 -0400 Subject: [PATCH 02/34] gofmt --- main/main.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/main/main.go b/main/main.go index fe13c3d1..d8c9c2fd 100644 --- a/main/main.go +++ b/main/main.go @@ -28,9 +28,9 @@ var ( test = flag.Bool("test", false, "Test config file only, without launching V2Ray server.") format = flag.String("format", "json", "Format of input file.") - /* We have to do this here because Golang's Test will also need to parse flag, before - main func in this file is run. - */ + /* We have to do this here because Golang's Test will also need to parse flag, before + * main func in this file is run. + */ _ = func() error { flag.Var(&configFiles, "config", "Config file for V2Ray. Multiple assign is accepted (only json). Latter ones overrides the former ones.") From 37a55653e9e972f43854612cc980a6e1ea812544 Mon Sep 17 00:00:00 2001 From: Agioi Theodoroi Date: Fri, 17 Apr 2020 20:00:40 -0400 Subject: [PATCH 03/34] remove unused parameter --- main/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/main.go b/main/main.go index d8c9c2fd..4fe18844 100644 --- a/main/main.go +++ b/main/main.go @@ -166,7 +166,7 @@ func main() { { osSignals := make(chan os.Signal, 1) - signal.Notify(osSignals, os.Interrupt, os.Kill, syscall.SIGTERM) + signal.Notify(osSignals, os.Interrupt, syscall.SIGTERM) <-osSignals } } From f34c092a06e7110209792952c476d614fa0006ae Mon Sep 17 00:00:00 2001 From: yuhan6665 <1588741+yuhan6665@users.noreply.github.com> Date: Mon, 22 Jun 2020 22:49:25 -0400 Subject: [PATCH 04/34] Rename fields in StatCouterConnection The fields will be used by Outbounds as well in the next commit --- app/proxyman/inbound/worker.go | 6 +++--- transport/internet/connection.go | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/proxyman/inbound/worker.go b/app/proxyman/inbound/worker.go index 81d26234..b10a5867 100644 --- a/app/proxyman/inbound/worker.go +++ b/app/proxyman/inbound/worker.go @@ -91,9 +91,9 @@ func (w *tcpWorker) callback(conn internet.Connection) { ctx = session.ContextWithContent(ctx, content) if w.uplinkCounter != nil || w.downlinkCounter != nil { conn = &internet.StatCouterConnection{ - Connection: conn, - Uplink: w.uplinkCounter, - Downlink: w.downlinkCounter, + Connection: conn, + ReadCounter: w.uplinkCounter, + WriteCounter: w.downlinkCounter, } } if err := w.proxy.Process(ctx, net.Network_TCP, conn, w.dispatcher); err != nil { diff --git a/transport/internet/connection.go b/transport/internet/connection.go index 0c627042..b55b0606 100644 --- a/transport/internet/connection.go +++ b/transport/internet/connection.go @@ -12,14 +12,14 @@ type Connection interface { type StatCouterConnection struct { Connection - Uplink stats.Counter - Downlink stats.Counter + ReadCounter stats.Counter + WriteCounter stats.Counter } func (c *StatCouterConnection) Read(b []byte) (int, error) { nBytes, err := c.Connection.Read(b) - if c.Uplink != nil { - c.Uplink.Add(int64(nBytes)) + if c.ReadCounter != nil { + c.ReadCounter.Add(int64(nBytes)) } return nBytes, err @@ -27,8 +27,8 @@ func (c *StatCouterConnection) Read(b []byte) (int, error) { func (c *StatCouterConnection) Write(b []byte) (int, error) { nBytes, err := c.Connection.Write(b) - if c.Downlink != nil { - c.Downlink.Add(int64(nBytes)) + if c.WriteCounter != nil { + c.WriteCounter.Add(int64(nBytes)) } return nBytes, err } From 886598542c6ff038cfa28dc6dfe3901a4af14da6 Mon Sep 17 00:00:00 2001 From: yuhan6665 <1588741+yuhan6665@users.noreply.github.com> Date: Mon, 22 Jun 2020 23:55:00 -0400 Subject: [PATCH 05/34] Add stats counter for outbounds --- app/policy/config.go | 6 +- app/policy/config.pb.go | 282 +++++++++++++++++-------------- app/policy/config.proto | 2 + app/proxyman/outbound/handler.go | 48 +++++- features/policy/policy.go | 4 + infra/conf/policy.go | 12 +- release/config/config.json | 4 +- 7 files changed, 221 insertions(+), 137 deletions(-) diff --git a/app/policy/config.go b/app/policy/config.go index ffe81138..4856e94d 100644 --- a/app/policy/config.go +++ b/app/policy/config.go @@ -84,8 +84,10 @@ func (p *Policy) ToCorePolicy() policy.Session { func (p *SystemPolicy) ToCorePolicy() policy.System { return policy.System{ Stats: policy.SystemStats{ - InboundUplink: p.Stats.InboundUplink, - InboundDownlink: p.Stats.InboundDownlink, + InboundUplink: p.Stats.InboundUplink, + InboundDownlink: p.Stats.InboundDownlink, + OutboundUplink: p.Stats.OutboundUplink, + OutboundDownlink: p.Stats.OutboundDownlink, }, } } diff --git a/app/policy/config.pb.go b/app/policy/config.pb.go index 70a26f44..3a2ea555 100644 --- a/app/policy/config.pb.go +++ b/app/policy/config.pb.go @@ -1,3 +1,9 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.24.0 +// protoc (unknown) +// source: config.proto + package policy import ( @@ -30,7 +36,7 @@ type Second struct { func (x *Second) Reset() { *x = Second{} if protoimpl.UnsafeEnabled { - mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[0] + mi := &file_config_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -43,7 +49,7 @@ func (x *Second) String() string { func (*Second) ProtoMessage() {} func (x *Second) ProtoReflect() protoreflect.Message { - mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[0] + mi := &file_config_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -56,7 +62,7 @@ func (x *Second) ProtoReflect() protoreflect.Message { // Deprecated: Use Second.ProtoReflect.Descriptor instead. func (*Second) Descriptor() ([]byte, []int) { - return file_v2ray_com_core_app_policy_config_proto_rawDescGZIP(), []int{0} + return file_config_proto_rawDescGZIP(), []int{0} } func (x *Second) GetValue() uint32 { @@ -79,7 +85,7 @@ type Policy struct { func (x *Policy) Reset() { *x = Policy{} if protoimpl.UnsafeEnabled { - mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[1] + mi := &file_config_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -92,7 +98,7 @@ func (x *Policy) String() string { func (*Policy) ProtoMessage() {} func (x *Policy) ProtoReflect() protoreflect.Message { - mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[1] + mi := &file_config_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -105,7 +111,7 @@ func (x *Policy) ProtoReflect() protoreflect.Message { // Deprecated: Use Policy.ProtoReflect.Descriptor instead. func (*Policy) Descriptor() ([]byte, []int) { - return file_v2ray_com_core_app_policy_config_proto_rawDescGZIP(), []int{1} + return file_config_proto_rawDescGZIP(), []int{1} } func (x *Policy) GetTimeout() *Policy_Timeout { @@ -140,7 +146,7 @@ type SystemPolicy struct { func (x *SystemPolicy) Reset() { *x = SystemPolicy{} if protoimpl.UnsafeEnabled { - mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[2] + mi := &file_config_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -153,7 +159,7 @@ func (x *SystemPolicy) String() string { func (*SystemPolicy) ProtoMessage() {} func (x *SystemPolicy) ProtoReflect() protoreflect.Message { - mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[2] + mi := &file_config_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -166,7 +172,7 @@ func (x *SystemPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemPolicy.ProtoReflect.Descriptor instead. func (*SystemPolicy) Descriptor() ([]byte, []int) { - return file_v2ray_com_core_app_policy_config_proto_rawDescGZIP(), []int{2} + return file_config_proto_rawDescGZIP(), []int{2} } func (x *SystemPolicy) GetStats() *SystemPolicy_Stats { @@ -188,7 +194,7 @@ type Config struct { func (x *Config) Reset() { *x = Config{} if protoimpl.UnsafeEnabled { - mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[3] + mi := &file_config_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -201,7 +207,7 @@ func (x *Config) String() string { func (*Config) ProtoMessage() {} func (x *Config) ProtoReflect() protoreflect.Message { - mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[3] + mi := &file_config_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -214,7 +220,7 @@ func (x *Config) ProtoReflect() protoreflect.Message { // Deprecated: Use Config.ProtoReflect.Descriptor instead. func (*Config) Descriptor() ([]byte, []int) { - return file_v2ray_com_core_app_policy_config_proto_rawDescGZIP(), []int{3} + return file_config_proto_rawDescGZIP(), []int{3} } func (x *Config) GetLevel() map[uint32]*Policy { @@ -246,7 +252,7 @@ type Policy_Timeout struct { func (x *Policy_Timeout) Reset() { *x = Policy_Timeout{} if protoimpl.UnsafeEnabled { - mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[4] + mi := &file_config_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -259,7 +265,7 @@ func (x *Policy_Timeout) String() string { func (*Policy_Timeout) ProtoMessage() {} func (x *Policy_Timeout) ProtoReflect() protoreflect.Message { - mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[4] + mi := &file_config_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -272,7 +278,7 @@ func (x *Policy_Timeout) ProtoReflect() protoreflect.Message { // Deprecated: Use Policy_Timeout.ProtoReflect.Descriptor instead. func (*Policy_Timeout) Descriptor() ([]byte, []int) { - return file_v2ray_com_core_app_policy_config_proto_rawDescGZIP(), []int{1, 0} + return file_config_proto_rawDescGZIP(), []int{1, 0} } func (x *Policy_Timeout) GetHandshake() *Second { @@ -315,7 +321,7 @@ type Policy_Stats struct { func (x *Policy_Stats) Reset() { *x = Policy_Stats{} if protoimpl.UnsafeEnabled { - mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[5] + mi := &file_config_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -328,7 +334,7 @@ func (x *Policy_Stats) String() string { func (*Policy_Stats) ProtoMessage() {} func (x *Policy_Stats) ProtoReflect() protoreflect.Message { - mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[5] + mi := &file_config_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -341,7 +347,7 @@ func (x *Policy_Stats) ProtoReflect() protoreflect.Message { // Deprecated: Use Policy_Stats.ProtoReflect.Descriptor instead. func (*Policy_Stats) Descriptor() ([]byte, []int) { - return file_v2ray_com_core_app_policy_config_proto_rawDescGZIP(), []int{1, 1} + return file_config_proto_rawDescGZIP(), []int{1, 1} } func (x *Policy_Stats) GetUserUplink() bool { @@ -370,7 +376,7 @@ type Policy_Buffer struct { func (x *Policy_Buffer) Reset() { *x = Policy_Buffer{} if protoimpl.UnsafeEnabled { - mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[6] + mi := &file_config_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -383,7 +389,7 @@ func (x *Policy_Buffer) String() string { func (*Policy_Buffer) ProtoMessage() {} func (x *Policy_Buffer) ProtoReflect() protoreflect.Message { - mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[6] + mi := &file_config_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -396,7 +402,7 @@ func (x *Policy_Buffer) ProtoReflect() protoreflect.Message { // Deprecated: Use Policy_Buffer.ProtoReflect.Descriptor instead. func (*Policy_Buffer) Descriptor() ([]byte, []int) { - return file_v2ray_com_core_app_policy_config_proto_rawDescGZIP(), []int{1, 2} + return file_config_proto_rawDescGZIP(), []int{1, 2} } func (x *Policy_Buffer) GetConnection() int32 { @@ -411,14 +417,16 @@ type SystemPolicy_Stats struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InboundUplink bool `protobuf:"varint,1,opt,name=inbound_uplink,json=inboundUplink,proto3" json:"inbound_uplink,omitempty"` - InboundDownlink bool `protobuf:"varint,2,opt,name=inbound_downlink,json=inboundDownlink,proto3" json:"inbound_downlink,omitempty"` + InboundUplink bool `protobuf:"varint,1,opt,name=inbound_uplink,json=inboundUplink,proto3" json:"inbound_uplink,omitempty"` + InboundDownlink bool `protobuf:"varint,2,opt,name=inbound_downlink,json=inboundDownlink,proto3" json:"inbound_downlink,omitempty"` + OutboundUplink bool `protobuf:"varint,3,opt,name=outbound_uplink,json=outboundUplink,proto3" json:"outbound_uplink,omitempty"` + OutboundDownlink bool `protobuf:"varint,4,opt,name=outbound_downlink,json=outboundDownlink,proto3" json:"outbound_downlink,omitempty"` } func (x *SystemPolicy_Stats) Reset() { *x = SystemPolicy_Stats{} if protoimpl.UnsafeEnabled { - mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[7] + mi := &file_config_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -431,7 +439,7 @@ func (x *SystemPolicy_Stats) String() string { func (*SystemPolicy_Stats) ProtoMessage() {} func (x *SystemPolicy_Stats) ProtoReflect() protoreflect.Message { - mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[7] + mi := &file_config_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -444,7 +452,7 @@ func (x *SystemPolicy_Stats) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemPolicy_Stats.ProtoReflect.Descriptor instead. func (*SystemPolicy_Stats) Descriptor() ([]byte, []int) { - return file_v2ray_com_core_app_policy_config_proto_rawDescGZIP(), []int{2, 0} + return file_config_proto_rawDescGZIP(), []int{2, 0} } func (x *SystemPolicy_Stats) GetInboundUplink() bool { @@ -461,98 +469,116 @@ func (x *SystemPolicy_Stats) GetInboundDownlink() bool { return false } -var File_v2ray_com_core_app_policy_config_proto protoreflect.FileDescriptor - -var file_v2ray_com_core_app_policy_config_proto_rawDesc = []byte{ - 0x0a, 0x26, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x72, 0x65, - 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, - 0x1e, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0xd0, 0x04, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3f, 0x0a, 0x07, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x76, 0x32, - 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x39, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x32, 0x72, - 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x52, 0x06, 0x62, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x1a, 0x92, 0x02, 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x12, 0x3b, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x12, 0x46, 0x0a, - 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x6c, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, - 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x32, 0x72, - 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x0a, 0x75, 0x70, 0x6c, 0x69, 0x6e, - 0x6b, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x42, 0x0a, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, - 0x6b, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, +func (x *SystemPolicy_Stats) GetOutboundUplink() bool { + if x != nil { + return x.OutboundUplink + } + return false +} + +func (x *SystemPolicy_Stats) GetOutboundDownlink() bool { + if x != nil { + return x.OutboundDownlink + } + return false +} + +var File_config_proto protoreflect.FileDescriptor + +var file_config_proto_rawDesc = []byte{ + 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, + 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x1e, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xd0, 0x04, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x12, 0x3f, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, + 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x12, 0x39, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, + 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x06, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x0c, 0x64, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x6e, 0x6c, 0x79, 0x1a, 0x4d, 0x0a, 0x05, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x75, 0x70, 0x6c, 0x69, 0x6e, - 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x55, 0x70, 0x6c, - 0x69, 0x6e, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, - 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x1a, 0x28, 0x0a, 0x06, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0xaa, 0x01, 0x0a, 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x12, 0x3f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x1a, 0x59, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x25, 0x0a, - 0x0e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x70, - 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, - 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, - 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x22, - 0xde, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x05, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x32, 0x72, 0x61, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x52, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x1a, 0x92, 0x02, 0x0a, 0x07, 0x54, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3b, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, + 0x61, 0x6b, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x3b, 0x0a, 0x06, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x32, 0x72, - 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, - 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x1a, 0x57, 0x0a, 0x0a, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x42, 0x3d, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x50, 0x01, 0x5a, - 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0xaa, 0x02, 0x15, 0x56, 0x32, 0x52, 0x61, 0x79, 0x2e, - 0x43, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, + 0x61, 0x6b, 0x65, 0x12, 0x46, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, + 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x75, + 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, + 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, + 0x0a, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x42, 0x0a, 0x0d, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x6e, 0x6c, 0x79, 0x1a, + 0x4d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, + 0x73, 0x65, 0x72, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x1a, 0x28, + 0x0a, 0x06, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x81, 0x02, 0x0a, 0x0c, 0x53, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3f, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x1a, 0xaf, 0x01, 0x0a, 0x05, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, + 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x29, 0x0a, 0x10, 0x69, + 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x5f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0e, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, + 0x2b, 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0xde, 0x01, 0x0a, + 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x3b, 0x0a, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, + 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x1a, 0x57, 0x0a, 0x0a, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x3d, 0x0a, + 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x50, 0x01, 0x5a, 0x06, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0xaa, 0x02, 0x15, 0x56, 0x32, 0x52, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x72, + 0x65, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( - file_v2ray_com_core_app_policy_config_proto_rawDescOnce sync.Once - file_v2ray_com_core_app_policy_config_proto_rawDescData = file_v2ray_com_core_app_policy_config_proto_rawDesc + file_config_proto_rawDescOnce sync.Once + file_config_proto_rawDescData = file_config_proto_rawDesc ) -func file_v2ray_com_core_app_policy_config_proto_rawDescGZIP() []byte { - file_v2ray_com_core_app_policy_config_proto_rawDescOnce.Do(func() { - file_v2ray_com_core_app_policy_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_v2ray_com_core_app_policy_config_proto_rawDescData) +func file_config_proto_rawDescGZIP() []byte { + file_config_proto_rawDescOnce.Do(func() { + file_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_config_proto_rawDescData) }) - return file_v2ray_com_core_app_policy_config_proto_rawDescData + return file_config_proto_rawDescData } -var file_v2ray_com_core_app_policy_config_proto_msgTypes = make([]protoimpl.MessageInfo, 9) -var file_v2ray_com_core_app_policy_config_proto_goTypes = []interface{}{ +var file_config_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_config_proto_goTypes = []interface{}{ (*Second)(nil), // 0: v2ray.core.app.policy.Second (*Policy)(nil), // 1: v2ray.core.app.policy.Policy (*SystemPolicy)(nil), // 2: v2ray.core.app.policy.SystemPolicy @@ -563,7 +589,7 @@ var file_v2ray_com_core_app_policy_config_proto_goTypes = []interface{}{ (*SystemPolicy_Stats)(nil), // 7: v2ray.core.app.policy.SystemPolicy.Stats nil, // 8: v2ray.core.app.policy.Config.LevelEntry } -var file_v2ray_com_core_app_policy_config_proto_depIdxs = []int32{ +var file_config_proto_depIdxs = []int32{ 4, // 0: v2ray.core.app.policy.Policy.timeout:type_name -> v2ray.core.app.policy.Policy.Timeout 5, // 1: v2ray.core.app.policy.Policy.stats:type_name -> v2ray.core.app.policy.Policy.Stats 6, // 2: v2ray.core.app.policy.Policy.buffer:type_name -> v2ray.core.app.policy.Policy.Buffer @@ -582,13 +608,13 @@ var file_v2ray_com_core_app_policy_config_proto_depIdxs = []int32{ 0, // [0:11] is the sub-list for field type_name } -func init() { file_v2ray_com_core_app_policy_config_proto_init() } -func file_v2ray_com_core_app_policy_config_proto_init() { - if File_v2ray_com_core_app_policy_config_proto != nil { +func init() { file_config_proto_init() } +func file_config_proto_init() { + if File_config_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_v2ray_com_core_app_policy_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Second); i { case 0: return &v.state @@ -600,7 +626,7 @@ func file_v2ray_com_core_app_policy_config_proto_init() { return nil } } - file_v2ray_com_core_app_policy_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Policy); i { case 0: return &v.state @@ -612,7 +638,7 @@ func file_v2ray_com_core_app_policy_config_proto_init() { return nil } } - file_v2ray_com_core_app_policy_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SystemPolicy); i { case 0: return &v.state @@ -624,7 +650,7 @@ func file_v2ray_com_core_app_policy_config_proto_init() { return nil } } - file_v2ray_com_core_app_policy_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Config); i { case 0: return &v.state @@ -636,7 +662,7 @@ func file_v2ray_com_core_app_policy_config_proto_init() { return nil } } - file_v2ray_com_core_app_policy_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Policy_Timeout); i { case 0: return &v.state @@ -648,7 +674,7 @@ func file_v2ray_com_core_app_policy_config_proto_init() { return nil } } - file_v2ray_com_core_app_policy_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Policy_Stats); i { case 0: return &v.state @@ -660,7 +686,7 @@ func file_v2ray_com_core_app_policy_config_proto_init() { return nil } } - file_v2ray_com_core_app_policy_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Policy_Buffer); i { case 0: return &v.state @@ -672,7 +698,7 @@ func file_v2ray_com_core_app_policy_config_proto_init() { return nil } } - file_v2ray_com_core_app_policy_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SystemPolicy_Stats); i { case 0: return &v.state @@ -689,18 +715,18 @@ func file_v2ray_com_core_app_policy_config_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_v2ray_com_core_app_policy_config_proto_rawDesc, + RawDescriptor: file_config_proto_rawDesc, NumEnums: 0, NumMessages: 9, NumExtensions: 0, NumServices: 0, }, - GoTypes: file_v2ray_com_core_app_policy_config_proto_goTypes, - DependencyIndexes: file_v2ray_com_core_app_policy_config_proto_depIdxs, - MessageInfos: file_v2ray_com_core_app_policy_config_proto_msgTypes, + GoTypes: file_config_proto_goTypes, + DependencyIndexes: file_config_proto_depIdxs, + MessageInfos: file_config_proto_msgTypes, }.Build() - File_v2ray_com_core_app_policy_config_proto = out.File - file_v2ray_com_core_app_policy_config_proto_rawDesc = nil - file_v2ray_com_core_app_policy_config_proto_goTypes = nil - file_v2ray_com_core_app_policy_config_proto_depIdxs = nil + File_config_proto = out.File + file_config_proto_rawDesc = nil + file_config_proto_goTypes = nil + file_config_proto_depIdxs = nil } diff --git a/app/policy/config.proto b/app/policy/config.proto index 70530cbc..30cd2be5 100644 --- a/app/policy/config.proto +++ b/app/policy/config.proto @@ -38,6 +38,8 @@ message SystemPolicy { message Stats { bool inbound_uplink = 1; bool inbound_downlink = 2; + bool outbound_uplink = 3; + bool outbound_downlink = 4; } Stats stats = 1; diff --git a/app/proxyman/outbound/handler.go b/app/proxyman/outbound/handler.go index 34ad6cc7..3ffe9ae2 100644 --- a/app/proxyman/outbound/handler.go +++ b/app/proxyman/outbound/handler.go @@ -10,6 +10,8 @@ import ( "v2ray.com/core/common/net" "v2ray.com/core/common/session" "v2ray.com/core/features/outbound" + "v2ray.com/core/features/policy" + "v2ray.com/core/features/stats" "v2ray.com/core/proxy" "v2ray.com/core/transport" "v2ray.com/core/transport/internet" @@ -17,6 +19,31 @@ import ( "v2ray.com/core/transport/pipe" ) +func getStatCounter(v *core.Instance, tag string) (stats.Counter, stats.Counter) { + var uplinkCounter stats.Counter + var downlinkCounter stats.Counter + + policy := v.GetFeature(policy.ManagerType()).(policy.Manager) + if len(tag) > 0 && policy.ForSystem().Stats.OutboundUplink { + statsManager := v.GetFeature(stats.ManagerType()).(stats.Manager) + name := "outbound>>>" + tag + ">>>traffic>>>uplink" + c, _ := stats.GetOrRegisterCounter(statsManager, name) + if c != nil { + uplinkCounter = c + } + } + if len(tag) > 0 && policy.ForSystem().Stats.OutboundDownlink { + statsManager := v.GetFeature(stats.ManagerType()).(stats.Manager) + name := "outbound>>>" + tag + ">>>traffic>>>downlink" + c, _ := stats.GetOrRegisterCounter(statsManager, name) + if c != nil { + downlinkCounter = c + } + } + + return uplinkCounter, downlinkCounter +} + // Handler is an implements of outbound.Handler. type Handler struct { tag string @@ -25,14 +52,19 @@ type Handler struct { proxy proxy.Outbound outboundManager outbound.Manager mux *mux.ClientManager + uplinkCounter stats.Counter + downlinkCounter stats.Counter } // NewHandler create a new Handler based on the given configuration. func NewHandler(ctx context.Context, config *core.OutboundHandlerConfig) (outbound.Handler, error) { v := core.MustFromContext(ctx) + uplinkCounter, downlinkCounter := getStatCounter(v, config.Tag) h := &Handler{ tag: config.Tag, outboundManager: v.GetFeature(outbound.ManagerType()).(outbound.Manager), + uplinkCounter: uplinkCounter, + downlinkCounter: downlinkCounter, } if config.SenderSettings != nil { @@ -148,7 +180,7 @@ func (h *Handler) Dial(ctx context.Context, dest net.Destination) (internet.Conn conn = tls.Client(conn, tlsConfig) } - return conn, nil + return h.getStatCouterConnection(conn), nil } newError("failed to get outbound handler with tag: ", tag).AtWarning().WriteToLog(session.ExportIDToError(ctx)) @@ -164,7 +196,19 @@ func (h *Handler) Dial(ctx context.Context, dest net.Destination) (internet.Conn } } - return internet.Dial(ctx, dest, h.streamSettings) + conn, err := internet.Dial(ctx, dest, h.streamSettings) + return h.getStatCouterConnection(conn), err +} + +func (h *Handler) getStatCouterConnection(conn internet.Connection) (internet.Connection) { + if h.uplinkCounter != nil || h.downlinkCounter != nil { + return &internet.StatCouterConnection{ + Connection: conn, + ReadCounter: h.downlinkCounter, + WriteCounter: h.uplinkCounter, + } + } + return conn } // GetOutbound implements proxy.GetOutbound. diff --git a/features/policy/policy.go b/features/policy/policy.go index 984b32f4..b00ffeb7 100644 --- a/features/policy/policy.go +++ b/features/policy/policy.go @@ -41,6 +41,10 @@ type SystemStats struct { InboundUplink bool // Whether or not to enable stat counter for downlink traffic in inbound handlers. InboundDownlink bool + // Whether or not to enable stat counter for uplink traffic in outbound handlers. + OutboundUplink bool + // Whether or not to enable stat counter for downlink traffic in outbound handlers. + OutboundDownlink bool } // System contains policy settings at system level. diff --git a/infra/conf/policy.go b/infra/conf/policy.go index 46e2a2ce..73a8a3fc 100644 --- a/infra/conf/policy.go +++ b/infra/conf/policy.go @@ -51,15 +51,19 @@ func (t *Policy) Build() (*policy.Policy, error) { } type SystemPolicy struct { - StatsInboundUplink bool `json:"statsInboundUplink"` - StatsInboundDownlink bool `json:"statsInboundDownlink"` + StatsInboundUplink bool `json:"statsInboundUplink"` + StatsInboundDownlink bool `json:"statsInboundDownlink"` + StatsOutboundUplink bool `json:"statsOutboundUplink"` + StatsOutboundDownlink bool `json:"statsOutboundDownlink"` } func (p *SystemPolicy) Build() (*policy.SystemPolicy, error) { return &policy.SystemPolicy{ Stats: &policy.SystemPolicy_Stats{ - InboundUplink: p.StatsInboundUplink, - InboundDownlink: p.StatsInboundDownlink, + InboundUplink: p.StatsInboundUplink, + InboundDownlink: p.StatsInboundDownlink, + OutboundUplink: p.StatsOutboundUplink, + OutboundDownlink: p.StatsOutboundDownlink, }, }, nil } diff --git a/release/config/config.json b/release/config/config.json index e79155d5..72172772 100644 --- a/release/config/config.json +++ b/release/config/config.json @@ -119,7 +119,9 @@ }, "system": { "statsInboundUplink": false, - "statsInboundDownlink": false + "statsInboundDownlink": false, + "statsOutboundUplink": false, + "statsOutboundDownlink": false } }, From 475676eb876e3d3ba906985987f8d019c4136eb3 Mon Sep 17 00:00:00 2001 From: Kslr Date: Sat, 27 Jun 2020 20:36:10 +0800 Subject: [PATCH 06/34] update h12.io/socks --- go.mod | 2 +- go.sum | 8 ++++++-- testing/scenarios/socks_test.go | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 2fc7ffc8..a0999d29 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd google.golang.org/grpc v1.27.0 google.golang.org/protobuf v1.24.0 - h12.io/socks v1.0.0 + h12.io/socks v1.0.1 ) go 1.13 diff --git a/go.sum b/go.sum index 740f7d5e..d491c449 100644 --- a/go.sum +++ b/go.sum @@ -32,8 +32,12 @@ github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364 h1:5XxdakFhqd9dnXoAZy1Mb2R/DZ6D1e+0bGC/JhucGYI= +github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364/go.mod h1:eDJQioIyy4Yn3MVivT7rv/39gAJTrA7lgmYr8EW950c= github.com/miekg/dns v1.1.29 h1:xHBEhR+t5RzcFJjBLJlax2daXOrTYtr9z4WdKEfWFzg= github.com/miekg/dns v1.1.29/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= +github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= +github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/refraction-networking/utls v0.0.0-20190909200633-43c36d3c1f57 h1:SL1K0QAuC1b54KoY1pjPWe6kSlsFHwK9/oC960fKrTY= github.com/refraction-networking/utls v0.0.0-20190909200633-43c36d3c1f57/go.mod h1:tz9gX959MEFfFN5whTIocCLUG57WiILqtdVxI8c6Wj0= @@ -111,8 +115,8 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -h12.io/socks v1.0.0 h1:oiFI7YXv4h/0kBNcmAb5EkkoFJgYsOF88EQjMBxjitc= -h12.io/socks v1.0.0/go.mod h1:MdYbo5/eB9ka7u5dzW2Qh0iSyJENwB3KI5H5ngenFGA= +h12.io/socks v1.0.1 h1:bXESSI/+hbdrp+22vcc7/JiXjmLH4UWktKdYgGr3ShA= +h12.io/socks v1.0.1/go.mod h1:AIhxy1jOId/XCz9BO+EIgNL2rQiPTBNnOfnVnQ+3Eck= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= diff --git a/testing/scenarios/socks_test.go b/testing/scenarios/socks_test.go index 9763dbc6..9bef0834 100644 --- a/testing/scenarios/socks_test.go +++ b/testing/scenarios/socks_test.go @@ -348,7 +348,7 @@ func TestSocksConformance(t *testing.T) { } { - dialer := socks4.DialSocksProxy(socks4.SOCKS4, net.TCPDestination(net.LocalHostIP, noAuthPort).NetAddr()) + dialer := socks4.Dial("socks4://" + net.TCPDestination(net.LocalHostIP, noAuthPort).NetAddr()) conn, err := dialer("tcp", dest.NetAddr()) common.Must(err) defer conn.Close() @@ -359,7 +359,7 @@ func TestSocksConformance(t *testing.T) { } { - dialer := socks4.DialSocksProxy(socks4.SOCKS4A, net.TCPDestination(net.LocalHostIP, noAuthPort).NetAddr()) + dialer := socks4.Dial("socks4://" + net.TCPDestination(net.LocalHostIP, noAuthPort).NetAddr()) conn, err := dialer("tcp", net.TCPDestination(net.LocalHostDomain, tcpServer.Port).NetAddr()) common.Must(err) defer conn.Close() From 00908a12fee136afa591106ec4c676ce3f9dcb15 Mon Sep 17 00:00:00 2001 From: Kslr Date: Sat, 27 Jun 2020 20:50:41 +0800 Subject: [PATCH 07/34] Update linter.yml --- .github/workflows/linter.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index 85611e6b..20592df1 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -5,6 +5,7 @@ on: branches: [ master ] pull_request: branches: [ master ] + types: [assigned, opened, synchronize, reopened] jobs: build: @@ -16,6 +17,8 @@ jobs: uses: actions/checkout@v2 - name: Lint Code Base - uses: github/super-linter@v2.0.0 + uses: github/super-linter@v2.2.0 env: - VALIDATE_ALL_CODEBASE: false \ No newline at end of file + VALIDATE_ALL_CODEBASE: false + VALIDATE_JSON: false + VALIDATE_ANSIBLE: false From 221aaad315f81610be0ba923d6c4ccb84bfebfba Mon Sep 17 00:00:00 2001 From: Kslr Date: Sat, 27 Jun 2020 20:59:30 +0800 Subject: [PATCH 08/34] Create stale.yml --- .github/workflows/stale.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/workflows/stale.yml diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 00000000..5863f3df --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,18 @@ +name: Mark stale issues and pull requests + +on: + schedule: + - cron: "30 1 * * *" + +jobs: + stale: + + runs-on: ubuntu-latest + + steps: + - uses: actions/stale@v1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'This issue is stale because it has been open 120 days with no activity. Remove stale label or comment or this will be closed in 5 days' + days-before-stale: 120 + days-before-close: 5 From d017ceda7d3af158ab248350f5ca372c33a9a3b1 Mon Sep 17 00:00:00 2001 From: Kslr Date: Sat, 27 Jun 2020 21:15:13 +0800 Subject: [PATCH 09/34] Create dlc.yml --- .github/workflows/dlc.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/dlc.yml diff --git a/.github/workflows/dlc.yml b/.github/workflows/dlc.yml new file mode 100644 index 00000000..0727c0af --- /dev/null +++ b/.github/workflows/dlc.yml @@ -0,0 +1,28 @@ +name: Update dlc + +on: + schedule: + - cron: '0 0 * * FRI' + +jobs: + + build: + name: Update + runs-on: ubuntu-latest + steps: + + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + + - name: Download and Write + run: | + curl -L -o release/config/geoip.dat "https://github.com/v2ray/geoip/raw/release/geoip.dat" + curl -L -o release/config/geosite.dat "https://github.com/v2ray/domain-list-community/raw/release/dlc.dat" + + - name: push + run: | + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git commit -am "update geoip, geosite" -a + git push -v --progress + From 694180fc9aa9108e8bcc06b6ca54cb6c94367714 Mon Sep 17 00:00:00 2001 From: rprx <63339210+rprx@users.noreply.github.com> Date: Sun, 28 Jun 2020 00:46:43 +0800 Subject: [PATCH 10/34] Add windows arm build (#39) * Add windows arm build * Add windows arm build * Add windows arm build --- infra/bazel/matrix.bzl | 1 + main/targets.bzl | 50 +++++++++++++++++++++++++++++++++++++++++- release/BUILD | 31 ++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 1 deletion(-) diff --git a/infra/bazel/matrix.bzl b/infra/bazel/matrix.bzl index 2b821d02..1c53021d 100644 --- a/infra/bazel/matrix.bzl +++ b/infra/bazel/matrix.bzl @@ -1,6 +1,7 @@ SUPPORTED_MATRIX = [ ("windows", "amd64"), ("windows", "386"), + ("windows", "arm"), ("darwin", "amd64"), ("linux", "amd64"), ("linux", "386"), diff --git a/main/targets.bzl b/main/targets.bzl index acff91a2..3d16541c 100644 --- a/main/targets.bzl +++ b/main/targets.bzl @@ -36,6 +36,54 @@ def gen_targets(matrix): base = ":" + bin_name, ) + bin_name = "v2ray_" + os + "_" + arch + "_armv7_nowindow" + foreign_go_binary( + name = bin_name, + pkg = pkg, + output = "w" + output + "_armv7", + os = os, + arch = arch, + arm = "7", + ld = "-H windowsgui", + ) + + gpg_sign( + name = bin_name + "_sig", + base = ":" + bin_name, + ) + + bin_name = "v2ray_" + os + "_" + arch + "_armv6_nowindow" + foreign_go_binary( + name = bin_name, + pkg = pkg, + output = "w" + output + "_armv6", + os = os, + arch = arch, + arm = "6", + ld = "-H windowsgui", + ) + + gpg_sign( + name = bin_name + "_sig", + base = ":" + bin_name, + ) + + bin_name = "v2ray_" + os + "_" + arch + "_armv5_nowindow" + foreign_go_binary( + name = bin_name, + pkg = pkg, + output = "w" + output + "_armv5", + os = os, + arch = arch, + arm = "5", + ld = "-H windowsgui", + ) + + gpg_sign( + name = bin_name + "_sig", + base = ":" + bin_name, + ) + if arch in ["mips", "mipsle"]: bin_name = "v2ray_" + os + "_" + arch + "_softfloat" foreign_go_binary( @@ -96,4 +144,4 @@ def gen_targets(matrix): gpg_sign( name = bin_name + "_sig", base = ":" + bin_name, - ) \ No newline at end of file + ) diff --git a/release/BUILD b/release/BUILD index 86566cc4..da2c6d9a 100644 --- a/release/BUILD +++ b/release/BUILD @@ -82,6 +82,37 @@ pkg_zip( mappings = gen_mappings("windows", "386"), ) +pkg_zip( + name = "v2ray_windows_arm_package", + srcs = [ + ":config_json", + ":doc", + ":geodata", + "//infra/control/main:v2ctl_windows_arm", + "//infra/control/main:v2ctl_windows_arm_sig", + "//infra/control/main:v2ctl_windows_arm_armv7", + "//infra/control/main:v2ctl_windows_arm_armv7_sig", + "//main:v2ray_windows_arm", + "//main:v2ray_windows_arm_sig", + "//main:v2ray_windows_arm_nowindow", + "//main:v2ray_windows_arm_nowindow_sig", + "//main:v2ray_windows_arm_armv5", + "//main:v2ray_windows_arm_armv5_sig", + "//main:v2ray_windows_arm_armv5_nowindow", + "//main:v2ray_windows_arm_armv5_nowindow_sig", + "//main:v2ray_windows_arm_armv6", + "//main:v2ray_windows_arm_armv6_sig", + "//main:v2ray_windows_arm_armv6_nowindow", + "//main:v2ray_windows_arm_armv6_nowindow_sig", + "//main:v2ray_windows_arm_armv7", + "//main:v2ray_windows_arm_armv7_sig", + "//main:v2ray_windows_arm_armv7_nowindow", + "//main:v2ray_windows_arm_armv7_nowindow_sig", + ], + out = "v2ray-windows-arm.zip", + mappings = gen_mappings("windows", "arm"), +) + pkg_zip( name = "v2ray_freebsd_amd64_package", srcs = [ From 62813a9edee6d1e4480eb62d81202aa42e31f19f Mon Sep 17 00:00:00 2001 From: Kslr Date: Sun, 28 Jun 2020 01:29:33 +0800 Subject: [PATCH 11/34] ci add windows arm --- release/bleedingrelease.sh | 1 + release/tagrelease.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/release/bleedingrelease.sh b/release/bleedingrelease.sh index 0ba668e3..c46ce860 100755 --- a/release/bleedingrelease.sh +++ b/release/bleedingrelease.sh @@ -34,6 +34,7 @@ ART_ROOT=$GOPATH/src/v2ray.com/core/bazel-bin/release upload ${ART_ROOT}/v2ray-macos.zip upload ${ART_ROOT}/v2ray-windows-64.zip upload ${ART_ROOT}/v2ray-windows-32.zip +upload ${ART_ROOT}/v2ray-windows-arm.zip upload ${ART_ROOT}/v2ray-linux-64.zip upload ${ART_ROOT}/v2ray-linux-32.zip upload ${ART_ROOT}/v2ray-linux-arm.zip diff --git a/release/tagrelease.sh b/release/tagrelease.sh index 59bdf55a..355583e9 100755 --- a/release/tagrelease.sh +++ b/release/tagrelease.sh @@ -57,6 +57,7 @@ ART_ROOT=$GOPATH/src/v2ray.com/core/bazel-bin/release upload ${ART_ROOT}/v2ray-macos.zip upload ${ART_ROOT}/v2ray-windows-64.zip upload ${ART_ROOT}/v2ray-windows-32.zip +upload ${ART_ROOT}/v2ray-windows-arm.zip upload ${ART_ROOT}/v2ray-linux-64.zip upload ${ART_ROOT}/v2ray-linux-32.zip upload ${ART_ROOT}/v2ray-linux-arm.zip From cef1836f5a0638242be288508e810117bc71f322 Mon Sep 17 00:00:00 2001 From: yuhan6665 <1588741+yuhan6665@users.noreply.github.com> Date: Sat, 27 Jun 2020 00:28:53 -0400 Subject: [PATCH 12/34] Add unit test for outbound handler --- app/proxyman/outbound/handler_test.go | 67 +++++++++++++++++++++++++++ context.go | 5 +- 2 files changed, 70 insertions(+), 2 deletions(-) diff --git a/app/proxyman/outbound/handler_test.go b/app/proxyman/outbound/handler_test.go index 25906f17..c0518378 100644 --- a/app/proxyman/outbound/handler_test.go +++ b/app/proxyman/outbound/handler_test.go @@ -1,13 +1,80 @@ package outbound_test import ( + "context" "testing" + "v2ray.com/core" + "v2ray.com/core/app/policy" . "v2ray.com/core/app/proxyman/outbound" + "v2ray.com/core/app/stats" + "v2ray.com/core/common/net" + "v2ray.com/core/common/serial" "v2ray.com/core/features/outbound" + "v2ray.com/core/proxy/freedom" + "v2ray.com/core/transport/internet" ) func TestInterfaces(t *testing.T) { _ = (outbound.Handler)(new(Handler)) _ = (outbound.Manager)(new(Manager)) } + +const v2rayKey core.V2rayKey = 1 + +func TestOutboundWithoutStatCounter(t *testing.T) { + config := &core.Config{ + App: []*serial.TypedMessage{ + serial.ToTypedMessage(&stats.Config{}), + serial.ToTypedMessage(&policy.Config{ + System: &policy.SystemPolicy{ + Stats: &policy.SystemPolicy_Stats{ + InboundUplink: true, + }, + }, + }), + }, + } + + v, _ := core.New(config) + v.AddFeature((outbound.Manager)(new(Manager))) + ctx := context.WithValue(context.Background(), v2rayKey, v) + h, _ := NewHandler(ctx, &core.OutboundHandlerConfig{ + Tag: "tag", + ProxySettings: serial.ToTypedMessage(&freedom.Config{}), + }) + conn, _ := h.(*Handler).Dial(ctx, net.TCPDestination(net.DomainAddress("localhost"), 13146)) + _, ok := conn.(*internet.StatCouterConnection) + if ok { + t.Errorf("Expected conn to not be StatCouterConnection") + } +} + +func TestOutboundWithStatCounter(t *testing.T) { + config := &core.Config{ + App: []*serial.TypedMessage{ + serial.ToTypedMessage(&stats.Config{}), + serial.ToTypedMessage(&policy.Config{ + System: &policy.SystemPolicy{ + Stats: &policy.SystemPolicy_Stats{ + OutboundUplink: true, + OutboundDownlink: true, + }, + }, + }), + }, + } + + v, _ := core.New(config) + v.AddFeature((outbound.Manager)(new(Manager))) + ctx := context.WithValue(context.Background(), v2rayKey, v) + h, _ := NewHandler(ctx, &core.OutboundHandlerConfig{ + Tag: "tag", + ProxySettings: serial.ToTypedMessage(&freedom.Config{}), + }) + conn, _ := h.(*Handler).Dial(ctx, net.TCPDestination(net.DomainAddress("localhost"), 13146)) + _, ok := conn.(*internet.StatCouterConnection) + if !ok { + t.Errorf("Expected conn to be StatCouterConnection") + } +} diff --git a/context.go b/context.go index 5dd7aee7..84cd2396 100644 --- a/context.go +++ b/context.go @@ -6,9 +6,10 @@ import ( "context" ) -type key int +// V2rayKey is the key type of Instance in Context, exported for test. +type V2rayKey int -const v2rayKey key = 1 +const v2rayKey V2rayKey = 1 // FromContext returns an Instance from the given context, or nil if the context doesn't contain one. func FromContext(ctx context.Context) *Instance { From 218d6204b85eeb4f45da324459c522dd9b1299e3 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sun, 28 Jun 2020 13:59:26 +0800 Subject: [PATCH 13/34] Fix test break on socks TestSocksConformance, use ip instead of hostname --- testing/scenarios/socks_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testing/scenarios/socks_test.go b/testing/scenarios/socks_test.go index 9bef0834..1a959a79 100644 --- a/testing/scenarios/socks_test.go +++ b/testing/scenarios/socks_test.go @@ -271,7 +271,7 @@ func TestSocksBridageUDPWithRouting(t *testing.T) { } } -func TestSocksConformance(t *testing.T) { +func TestSocksConformanceMod(t *testing.T) { tcpServer := tcp.Server{ MsgProcessor: xor, } @@ -360,7 +360,7 @@ func TestSocksConformance(t *testing.T) { { dialer := socks4.Dial("socks4://" + net.TCPDestination(net.LocalHostIP, noAuthPort).NetAddr()) - conn, err := dialer("tcp", net.TCPDestination(net.LocalHostDomain, tcpServer.Port).NetAddr()) + conn, err := dialer("tcp", net.TCPDestination(net.LocalHostIP, tcpServer.Port).NetAddr()) common.Must(err) defer conn.Close() From e4acbcee8fb1f5866572383e6b96f3c196afa494 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sun, 28 Jun 2020 15:54:53 +0800 Subject: [PATCH 14/34] Allow the use of Browser Bridge --- transport/internet/websocket/hub.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/transport/internet/websocket/hub.go b/transport/internet/websocket/hub.go index 1e0d336b..fc9d08c1 100644 --- a/transport/internet/websocket/hub.go +++ b/transport/internet/websocket/hub.go @@ -27,6 +27,9 @@ var upgrader = &websocket.Upgrader{ ReadBufferSize: 4 * 1024, WriteBufferSize: 4 * 1024, HandshakeTimeout: time.Second * 4, + CheckOrigin: func(r *http.Request) bool { + return true + }, } func (h *requestHandler) ServeHTTP(writer http.ResponseWriter, request *http.Request) { From 2af1a8fc3d97aaff121e32c478108a2c40171372 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 28 Jun 2020 15:57:59 +0800 Subject: [PATCH 15/34] Bump google.golang.org/protobuf from 1.24.0 to 1.25.0 (#34) Bumps [google.golang.org/protobuf](https://github.com/protocolbuffers/protobuf-go) from 1.24.0 to 1.25.0. - [Release notes](https://github.com/protocolbuffers/protobuf-go/releases) - [Changelog](https://github.com/protocolbuffers/protobuf-go/blob/master/release.bash) - [Commits](https://github.com/protocolbuffers/protobuf-go/compare/v1.24.0...v1.25.0) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index a0999d29..44a8b0ca 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd google.golang.org/grpc v1.27.0 - google.golang.org/protobuf v1.24.0 + google.golang.org/protobuf v1.25.0 h12.io/socks v1.0.1 ) diff --git a/go.sum b/go.sum index d491c449..a31db8e5 100644 --- a/go.sum +++ b/go.sum @@ -115,6 +115,8 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= h12.io/socks v1.0.1 h1:bXESSI/+hbdrp+22vcc7/JiXjmLH4UWktKdYgGr3ShA= h12.io/socks v1.0.1/go.mod h1:AIhxy1jOId/XCz9BO+EIgNL2rQiPTBNnOfnVnQ+3Eck= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From c564aa6cef423dc1d6f3ebc7b9be6a45902e62bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 28 Jun 2020 07:59:24 +0000 Subject: [PATCH 16/34] Bump google.golang.org/grpc from 1.27.0 to 1.30.0 Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.27.0 to 1.30.0. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.27.0...v1.30.0) Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 44a8b0ca..f36de503 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,7 @@ require ( golang.org/x/net v0.0.0-20200602114024-627f9648deb9 golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd - google.golang.org/grpc v1.27.0 + google.golang.org/grpc v1.30.0 google.golang.org/protobuf v1.25.0 h12.io/socks v1.0.1 ) diff --git a/go.sum b/go.sum index a31db8e5..54f7e0b3 100644 --- a/go.sum +++ b/go.sum @@ -2,9 +2,12 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc h1:8WFBn63wegobsYAX0YjD+8suexZDga5CctH4CCTx2+8= github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -14,6 +17,7 @@ github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -102,8 +106,11 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaR google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.30.0 h1:M5a8xTlYTxwMn5ZFkwhRabsygDY5G8TYLyQDBxJNAxE= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From 19c5014ed196ac7ed59df3803b5f21be84ca1fb5 Mon Sep 17 00:00:00 2001 From: rprx <63339210+rprx@users.noreply.github.com> Date: Sun, 28 Jun 2020 08:55:08 +0000 Subject: [PATCH 17/34] Adjust arm build --- release/BUILD | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/release/BUILD b/release/BUILD index da2c6d9a..d1781878 100644 --- a/release/BUILD +++ b/release/BUILD @@ -88,14 +88,12 @@ pkg_zip( ":config_json", ":doc", ":geodata", - "//infra/control/main:v2ctl_windows_arm", - "//infra/control/main:v2ctl_windows_arm_sig", + "//infra/control/main:v2ctl_windows_arm_armv5", + "//infra/control/main:v2ctl_windows_arm_armv5_sig", + "//infra/control/main:v2ctl_windows_arm_armv6", + "//infra/control/main:v2ctl_windows_arm_armv6_sig", "//infra/control/main:v2ctl_windows_arm_armv7", "//infra/control/main:v2ctl_windows_arm_armv7_sig", - "//main:v2ray_windows_arm", - "//main:v2ray_windows_arm_sig", - "//main:v2ray_windows_arm_nowindow", - "//main:v2ray_windows_arm_nowindow_sig", "//main:v2ray_windows_arm_armv5", "//main:v2ray_windows_arm_armv5_sig", "//main:v2ray_windows_arm_armv5_nowindow", @@ -227,12 +225,12 @@ pkg_zip( ":doc", ":geodata", ":systemd", - "//infra/control/main:v2ctl_linux_arm", + "//infra/control/main:v2ctl_linux_arm_armv5", + "//infra/control/main:v2ctl_linux_arm_armv5_sig", + "//infra/control/main:v2ctl_linux_arm_armv6", + "//infra/control/main:v2ctl_linux_arm_armv6_sig", "//infra/control/main:v2ctl_linux_arm_armv7", "//infra/control/main:v2ctl_linux_arm_armv7_sig", - "//infra/control/main:v2ctl_linux_arm_sig", - "//main:v2ray_linux_arm", - "//main:v2ray_linux_arm_sig", "//main:v2ray_linux_arm_armv5", "//main:v2ray_linux_arm_armv5_sig", "//main:v2ray_linux_arm_armv6", From 4947537eee38ee34106cfc85cc4ce844816b206f Mon Sep 17 00:00:00 2001 From: rprx <63339210+rprx@users.noreply.github.com> Date: Sun, 28 Jun 2020 08:56:55 +0000 Subject: [PATCH 18/34] Adjust arm build --- main/targets.bzl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/main/targets.bzl b/main/targets.bzl index 3d16541c..95fbc21a 100644 --- a/main/targets.bzl +++ b/main/targets.bzl @@ -72,7 +72,7 @@ def gen_targets(matrix): foreign_go_binary( name = bin_name, pkg = pkg, - output = "w" + output + "_armv5", + output = "w" + output, os = os, arch = arch, arm = "5", @@ -105,7 +105,7 @@ def gen_targets(matrix): foreign_go_binary( name = bin_name, pkg = pkg, - output = output+"_armv7", + output = output + "_armv7", os = os, arch = arch, arm = "7", @@ -120,7 +120,7 @@ def gen_targets(matrix): foreign_go_binary( name = bin_name, pkg = pkg, - output = output+"_armv6", + output = output + "_armv6", os = os, arch = arch, arm = "6", @@ -135,7 +135,7 @@ def gen_targets(matrix): foreign_go_binary( name = bin_name, pkg = pkg, - output = output+"_armv5", + output = output, os = os, arch = arch, arm = "5", From a2c86aaaeb1d227550e934c0b6a249e0c5cb15b7 Mon Sep 17 00:00:00 2001 From: rprx <63339210+rprx@users.noreply.github.com> Date: Sun, 28 Jun 2020 10:11:50 +0000 Subject: [PATCH 19/34] Adjust arm build --- infra/control/main/targets.bzl | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/infra/control/main/targets.bzl b/infra/control/main/targets.bzl index 4f42e3a6..91bdf608 100644 --- a/infra/control/main/targets.bzl +++ b/infra/control/main/targets.bzl @@ -54,3 +54,35 @@ def gen_targets(matrix): name = bin_name + "_sig", base = ":" + bin_name, ) + + bin_name = "v2ctl_" + os + "_" + arch + "_armv6" + foreign_go_binary( + name = bin_name, + pkg = pkg, + output = output + "_armv6", + os = os, + arch = arch, + arm = "6", + gotags = "confonly", + ) + + gpg_sign( + name = bin_name + "_sig", + base = ":" + bin_name, + ) + + bin_name = "v2ctl_" + os + "_" + arch + "_armv5" + foreign_go_binary( + name = bin_name, + pkg = pkg, + output = output, + os = os, + arch = arch, + arm = "5", + gotags = "confonly", + ) + + gpg_sign( + name = bin_name + "_sig", + base = ":" + bin_name, + ) From dadcda034dc38a5d924d5a917fa8baba2205b5a5 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Thu, 2 Jul 2020 19:10:38 +0800 Subject: [PATCH 20/34] Generate Manifest for bleeding edge release --- azure-pipelines.yml | 4 ++++ release/bleedingrelease.sh | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 6e2949c9..d1ccf6ad 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -119,6 +119,10 @@ jobs: GITHUB_TOKEN: $(GITHUB_TOKEN) PRERELEASE: true RELEASE_TAG: unstable-$(Build.SourceVersion) + RELEASE_SHA: $(Build.SourceVersion) + TRIGGER_REASON: $(Build.SourceBranch) + GITHUB_REPO_OWNER: v2fly + GITHUB_REPO_NAME: v2ray-core - script: | cd ./src/v2ray.com/core echo $RELEASE_TAG diff --git a/release/bleedingrelease.sh b/release/bleedingrelease.sh index c46ce860..85d97e56 100755 --- a/release/bleedingrelease.sh +++ b/release/bleedingrelease.sh @@ -1,6 +1,5 @@ #!/bin/bash - RELBODY="https://www.v2ray.com/chapter_00/01_versions.html" JSON_DATA=$(echo "{}" | jq -c ".tag_name=\"${RELEASE_TAG}\"") JSON_DATA=$(echo ${JSON_DATA} | jq -c ".prerelease=${PRERELEASE}") @@ -31,6 +30,38 @@ function upload() { ART_ROOT=$GOPATH/src/v2ray.com/core/bazel-bin/release +pushd ART_ROOT +{ + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen version ${RELEASE_TAG} + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen project "v2flyunstable" + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-macos.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-64.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-32.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-arm.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-arm64.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mips64.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mips64le.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mips.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mipsle.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-ppc64.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-ppc64le.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-s390x.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-freebsd-64.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-freebsd-32.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-openbsd-64.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-openbsd-32.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-dragonfly-64.zip +} >Release.unsigned.unsorted + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen sort < Release.unsigned.unsorted > Release.unsigned + + { + echo "Build Finished" + echo "https://github.com/v2fly/V2FlyBleedingEdgeBinary/releases/tag/${RELEASE_TAG}" + } > buildcomment + + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil post commit "${RELEASE_SHA}" < buildcomment +popd + upload ${ART_ROOT}/v2ray-macos.zip upload ${ART_ROOT}/v2ray-windows-64.zip upload ${ART_ROOT}/v2ray-windows-32.zip @@ -51,3 +82,4 @@ upload ${ART_ROOT}/v2ray-freebsd-32.zip upload ${ART_ROOT}/v2ray-openbsd-64.zip upload ${ART_ROOT}/v2ray-openbsd-32.zip upload ${ART_ROOT}/v2ray-dragonfly-64.zip +upload ${ART_ROOT}/Release.unsigned From d2064b00212de2c18a0c2cfc9b8790625b803cc6 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Thu, 2 Jul 2020 19:40:44 +0800 Subject: [PATCH 21/34] Bug fix --- release/bleedingrelease.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/bleedingrelease.sh b/release/bleedingrelease.sh index 85d97e56..9e91cf5f 100755 --- a/release/bleedingrelease.sh +++ b/release/bleedingrelease.sh @@ -30,7 +30,7 @@ function upload() { ART_ROOT=$GOPATH/src/v2ray.com/core/bazel-bin/release -pushd ART_ROOT +pushd ${ART_ROOT} { go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen version ${RELEASE_TAG} go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen project "v2flyunstable" From 9142c0d9a8412be04405713d7049d0257ae0c611 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Thu, 2 Jul 2020 20:27:34 +0800 Subject: [PATCH 22/34] Generate manifest on tag release --- release/bleedingrelease.sh | 10 +++++----- release/tagrelease.sh | 28 ++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/release/bleedingrelease.sh b/release/bleedingrelease.sh index 9e91cf5f..6176c7b9 100755 --- a/release/bleedingrelease.sh +++ b/release/bleedingrelease.sh @@ -6,7 +6,7 @@ JSON_DATA=$(echo ${JSON_DATA} | jq -c ".prerelease=${PRERELEASE}") JSON_DATA=$(echo ${JSON_DATA} | jq -c ".body=\"${RELBODY}\"") RELEASE_DATA=$(curl --data "${JSON_DATA}" -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/v2fly/V2FlyBleedingEdgeBinary/releases) echo $RELEASE_DATA -RELEASE_ID=$(echo $RELEASE_DATA| jq ".id") +RELEASE_ID=$(echo $RELEASE_DATA | jq ".id") function uploadfile() { FILE=$1 @@ -20,10 +20,10 @@ function uploadfile() { function upload() { FILE=$1 DGST=$1.dgst - openssl dgst -md5 $FILE | sed 's/([^)]*)//g' >> $DGST - openssl dgst -sha1 $FILE | sed 's/([^)]*)//g' >> $DGST - openssl dgst -sha256 $FILE | sed 's/([^)]*)//g' >> $DGST - openssl dgst -sha512 $FILE | sed 's/([^)]*)//g' >> $DGST + openssl dgst -md5 $FILE | sed 's/([^)]*)//g' >>$DGST + openssl dgst -sha1 $FILE | sed 's/([^)]*)//g' >>$DGST + openssl dgst -sha256 $FILE | sed 's/([^)]*)//g' >>$DGST + openssl dgst -sha512 $FILE | sed 's/([^)]*)//g' >>$DGST uploadfile $FILE uploadfile $DGST } diff --git a/release/tagrelease.sh b/release/tagrelease.sh index 355583e9..b1c11e77 100755 --- a/release/tagrelease.sh +++ b/release/tagrelease.sh @@ -54,6 +54,33 @@ function upload() { ART_ROOT=$GOPATH/src/v2ray.com/core/bazel-bin/release + +pushd ${ART_ROOT} +{ + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen version "${GITHUB_RELEASE_TAG}" + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen project "v2fly" + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-macos.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-64.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-32.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-arm.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-arm64.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mips64.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mips64le.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mips.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mipsle.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-ppc64.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-ppc64le.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-s390x.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-freebsd-64.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-freebsd-32.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-openbsd-64.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-openbsd-32.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-dragonfly-64.zip +} >Release.unsigned.unsorted + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen sort < Release.unsigned.unsorted > Release.unsigned + +popd + upload ${ART_ROOT}/v2ray-macos.zip upload ${ART_ROOT}/v2ray-windows-64.zip upload ${ART_ROOT}/v2ray-windows-32.zip @@ -74,3 +101,4 @@ upload ${ART_ROOT}/v2ray-freebsd-32.zip upload ${ART_ROOT}/v2ray-openbsd-64.zip upload ${ART_ROOT}/v2ray-openbsd-32.zip upload ${ART_ROOT}/v2ray-dragonfly-64.zip +upload ${ART_ROOT}/Release.unsigned From 40e21fde1d7cb028dca9b0362272fe85d2c9dc88 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Fri, 3 Jul 2020 00:34:15 +0800 Subject: [PATCH 23/34] Added Signing Request --- .github/workflows/sign.yml | 37 +++++++++++++++++++++++++++++++++++ release/requestsign.sh | 28 ++++++++++++++++++++++++++ release/requestsign_github.sh | 5 +++++ 3 files changed, 70 insertions(+) create mode 100644 .github/workflows/sign.yml create mode 100755 release/requestsign.sh create mode 100755 release/requestsign_github.sh diff --git a/.github/workflows/sign.yml b/.github/workflows/sign.yml new file mode 100644 index 00000000..24c32d67 --- /dev/null +++ b/.github/workflows/sign.yml @@ -0,0 +1,37 @@ +# This is a basic workflow to help you get started with Actions + +name: Sign + +# Controls when the action will run. Triggers the workflow on push or pull request +# events but only for the master branch +on: + release: + types: [released] + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + build: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + + # Invoke release signing + - name: make it run + run: chmod +x $GITHUB_WORKSPACE/release/requestsign_github.sh + + # Invoke release signing + - name: make it run + run: chmod +x $GITHUB_WORKSPACE/release/requestsign.sh + + # Invoke release signing + - name: Invoke release signing + env: + SIGN_SERVICE_PASSWORD: ${{ secrets.SIGN_SERVICE_PASSWORD }} + SIGN_SERIVCE_URL: ${{ secrets.SIGN_SERIVCE_URL }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: $GITHUB_WORKSPACE/release/requestsign_github.sh \ No newline at end of file diff --git a/release/requestsign.sh b/release/requestsign.sh new file mode 100755 index 00000000..feb65f26 --- /dev/null +++ b/release/requestsign.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +RELEASE_DATA=$(curl --data "version=${SIGN_VERSION}" --data "password=${SIGN_SERVICE_PASSWORD}" -X POST "${SIGN_SERIVCE_URL}" ) +echo $RELEASE_DATA +RELEASE_ID=$(echo $RELEASE_DATA| jq -r ".id") + +function uploadfile() { + FILE=$1 + CTYPE=$(file -b --mime-type $FILE) + + sleep 1 + curl -H "Authorization: token ${GITHUB_TOKEN}" -H "Content-Type: ${CTYPE}" --data-binary @$FILE "https://uploads.github.com/repos/v2fly/v2ray-core/releases/${RELEASE_ID}/assets?name=$(basename $FILE)" + sleep 1 +} + +function upload() { + FILE=$1 + DGST=$1.dgst + openssl dgst -md5 $FILE | sed 's/([^)]*)//g' >> $DGST + openssl dgst -sha1 $FILE | sed 's/([^)]*)//g' >> $DGST + openssl dgst -sha256 $FILE | sed 's/([^)]*)//g' >> $DGST + openssl dgst -sha512 $FILE | sed 's/([^)]*)//g' >> $DGST + uploadfile $FILE + uploadfile $DGST +} + +curl "https://raw.githubusercontent.com/v2fly/Release/master/v2fly/${SIGN_VERSION}.Release" > Release +upload Release \ No newline at end of file diff --git a/release/requestsign_github.sh b/release/requestsign_github.sh new file mode 100755 index 00000000..931dce37 --- /dev/null +++ b/release/requestsign_github.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +export SIGN_VERSION=$(cat $GITHUB_EVENT_PATH| jq -r ".release.tag_name") + +echo $SIGN_VERSION \ No newline at end of file From 22ae1d60416afd53282ac5f95d1b0675e895f5c7 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 3 Jul 2020 00:19:55 +0000 Subject: [PATCH 24/34] update geoip, geosite --- release/config/geoip.dat | Bin 5134732 -> 5256730 bytes release/config/geosite.dat | 7033 +++++++++++++++++++----------------- 2 files changed, 3705 insertions(+), 3328 deletions(-) diff --git a/release/config/geoip.dat b/release/config/geoip.dat index dad1da5104b1e8761099c02609f33eea6c688a23..acbec381102a67c8344c65d3ad458edc7b2d7fc1 100644 GIT binary patch delta 258944 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 delta 159335 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


ccP)E%^S*J{e49 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

tBJri55gPZlM`78rEg%kqto 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 diff --git a/release/config/geosite.dat b/release/config/geosite.dat index f366d62f..671ccac7 100644 --- a/release/config/geosite.dat +++ b/release/config/geosite.dat @@ -1,404 +1,440 @@ - -WHONIX -whonix.org -– -XIAOMI -mi.com -mi-img.com  mifile.cn miui.com -miwifi.com  xiaomi.cn -xiaomi.com -xiaomi.netxiaomiyoupin.com -ž -ADOBE  adobe.com adobe.ioadobeaemcloud.comadobeaemcloud.netadobeccstatic.com adobedc.net adobedtm.comadobelogin.com adobeoobe.comassetsadobe.com behance.net edgefonts.net -omtrdc.net typekit.com typekit.net -³ -FACEBOOKcdninstagram.com facebook.br facebook.comfacebook.design facebook.net facebook.hu facebook.in facebook.nl facebook.se -fb.com fb.me  fbcdn.net  fbsbx.com instagram.cominstagram-press.comm.me messenger.com -oculus.com oculuscdn.com rocksdb.orgthefacebook.com whatsapp.com whatsapp.netfbcdn-a.akamaihd.net -# - PRIVACYTOOLSprivacytools.io - - SPEEDTEST  cdnst.net cellmaps.com ekahau.cloud -ekahau.com  ookla.com pingtest.net speedtest.co speedtest.netspeedtestcustom.com webtest.netPB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ -@ads - -UN -un.org -2 -UBI ubi.com ubisoft.com  uplay.com - -VIM vim.org - -XART  x-art.com -Õ - CATEGORY-DEValpinelinux.org anaconda.com anaconda.org conda.io -apache.org archlinux.orgarchlinuxarm.org atom.iobootstrapcdn.comgetbootstrap.com -centos.orgchocolatey.org clojure.org -cygwin.com -cython.org -debian.org -dotdeb.org  deno.land -docker.comcompose-spec.ioelixir-lang.org -elrepo.org -erlang.org getfedora.orgfedoraforum.orgfedoraproject.orgfedoramagazine.orgfontawesome.comfortawesome.com freebsd.org -gentoo.orggetcomposer.org gitbook.com -gitbook.iogitbook.zendesk.com -git.io github.blog -github.comgithub.community  github.io githubapp.comgithubassets.comgithubstatus.comgithubusercontent.com atom.io/+github-avatars.oss-cn-hongkong.aliyuncs.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.com -gitlab.com  gitlab.io -gitlab.netgitlab-static.net.*gitlab-assets.oss-cn-hongkong.aliyuncs.com gnu.org go-lang.com go-lang.net go-lang.org -go.dev  godoc.org -golang.com -golang.net -golang.org haskell.orghaskellstack.org stackage.org brew.sh -ius.iojava java.com java.net -jenkins.io jetbrains.com jetbrains.net datalore.iokotlinlang.org -jquery.comjquerymobile.com jqueryui.com -js.org kali.org -kernel.orgkotlinlang.org kubernetes.io -k8s.io  linux.orglinuxfromscratch.org linuxmint.com lua.org macports.org mariadb.org  mingw.org mongodb.com mongodb.org  mysql.com  nginx.com  nginx.org  nixos.org -nodejs.orgnodesource.comnotepad-plus-plus.org  npmjs.com npm.community openresty.org openssl.org opensuse.org openwrt.orglede-project.org packagist.org pcre.org perl.org cpan.org metacpan.org phantomjs.org php.netpostgresql.org -python.orgpythonhosted.org pypa.io pypi.org qt.ioqt-project.org r-project.orgraspberrypi.org raspbian.org redis.io remirepo.net rpmfusion.org ruby-lang.org rubygems.orgscala-lang.org scala-sbt.orgscientificlinux.org -sqlite.org askubuntu.comblogoverflow.commathoverflow.netserverfault.com sstatic.net stackapps.com stackauth.comstackexchange.com stackmod.blogstackoverflow.blogstackoverflow.comstackoverflow.emailstackoverflowbusiness.comstacksnippets.net superuser.com tex-talk.netthesffblog.comsublimetext.com  swift.org -ubuntu.com -ubuntu.netubuntuforums.org  unity.com unity3d.com"unityads.unity3d.com -@ads$unityads.unitychina.cn -@ads  unpkg.com vagrantup.com vim.org wireshark.org x.orgxda-developers.com xda-cdn.com xposed.info yarnpkg.com -- -DOCKER -docker.comcompose-spec.io - - FFPROFILE ffprofile.com -! -FREENETfreenetproject.org -µ - PINTEREST -pin.it -pinimg.com pinterest.at pinterest.be pinterest.ca pinterest.ch pinterest.cl pinterest.copinterest.co.atpinterest.co.inpinterest.co.krpinterest.co.nzpinterest.co.uk pinterest.compinterest.com.aupinterest.com.bopinterest.com.ecpinterest.com.mxpinterest.com.pepinterest.com.pypinterest.com.uypinterest.com.vn pinterest.de pinterest.dk pinterest.ecpinterest.engineering pinterest.es pinterest.fr pinterest.hu pinterest.id pinterest.ie pinterest.inpinterest.info pinterest.it pinterest.jp pinterest.kr pinterest.mx pinterest.nl pinterest.nz pinterest.pe pinterest.ph pinterest.pt pinterest.ru pinterest.se pinterest.th pinterest.tw pinterest.uk pinterest.vnpinterestmail.com -a - APPLE-ADSiadsdk.apple.com -@ads iad.apple.com -@ads qwapi.com -@ads -& - BAICAONETWORKbaicaonetwork.com -& -XNXX xnxx.com xnxx-cdn.com - -JAVHD  javhd.com - -RFA rfa.org -ñ - -SALESFORCE appcloud.comappexchange.com attic.iobeyondcore.combuddymedia.com chatter.comcloudcraze.com cotweet.com data.comdemandware.com desk.comdocumentforce.comdreamforce.com einstein.comexacttarget.com  force.com govforce.comgravitytank.com heywire.com krux.commarketingcloud.com metamind.io -pardot.com quotable.com radian6.com relateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.com sequence.comsfdcstatic.com -sforce.com site.com -social.comsteelbrick.com twinprime.comweinvoiceit.com " - SINOINSIDERsinoinsider.com -j - CHINAUNICOM  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cn  wo.com.cn -9 -NIKKEI -nikkei.com  nikkei.jp nikkei.co.jp -‘ -YAHOO yahoo -myguide.hkyahoo-news.com.hk yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cm yahoo.cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws yahooapis.com yahoodns.net yimg.com  ymail.com -flickr -flickr.com -flickr.netstaticflickr.com ads.yahoo.com -@adsgemini.yahoo.com -@ads -. - ACFUN-ADS!apilog-web.acfun.cn -@ads -( -CAIJINGLENGYANcaijinglengyan.com - -CAOLIU t66y.com -+ -LINKEDIN linkedin.com  licdn.com + EPICBROWSERepicbrowser.com  -RASPBIAN raspbian.org -T -DISCORDdiscordapp.com -discord.gg discord.mediadiscordapp.net +MACPORTS macports.org + +TIKTOK +muscdn.com +musical.ly +tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net  - FASTSTONE faststone.org -, - MXPLAYER-ADSevt.mxplay.com + WIREGUARD wireguard.com +E +WIX wix.com  wixmp.com wixsite.com wixstatic.com +€ + YUNFANJIASU yfcache.com +yfcalc.com yfcloud.com  yfdts.net  yfp2p.net +yfscdn.net yunfancdn.com +t + CAMBRIDGE cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.org +@ +HAVEIBEENPWNEDhaveibeenpwned.compwnedpasswords.com + +MYSQL  mysql.com + +CASTRO  castro.fm +R + KUAISHOU-ADS!log-sdk.gifshow.com +@adswlog.kuaishou.com +@ads +" + MOCLOUDPLUSmocloudplus.com +E +PIXIV  pixiv.net  pixiv.org pixiv.co.jp  pximg.net +* +TELEKOM telekom.com +telekom.de +¨ + YOUKU-ADSactives.youku.com +@ads!ad.api.3g.youku.com +@ads%ad.api.mobile.youku.com +@ads!ad.mobile.youku.com +@ads)a-dxk.play.api.3g.youku.com +@ads atm.youku.com +@ads$b.smartvideo.youku.com +@adsc.yes.youku.com +@adsdas.api.youku.com +@ads"das.mobile.youku.com +@ads"dev-push.m.youku.com +@adsdl.g.youku.com +@adsdmapp.youku.com +@adse.stat.ykimg.com +@ads$gamex.mobile.youku.com +@ads"guanggaoad.youku.com +@ads!hudong.pl.youku.com +@ads"huodong.pl.youku.com +@ads#huodong.vip.youku.com +@ads hz.youku.com +@adsiyes.youku.com +@ads l.ykimg.com +@adslstat.youku.com +@ads!mobilemsg.youku.com +@ads msg.youku.com +@adsmyes.youku.com +@ads p.l.youku.com +@ads pl.youku.com +@ads$passport-log.youku.com +@adsp-log.ykimg.com +@adspush.m.youku.com +@ads r.l.youku.com +@ads s.p.youku.com +@adssdk.m.youku.com +@adsstat.youku.com +@ads%statis.api.3g.youku.com +@ads'store.tv.api.3g.youku.com +@ads'store.xl.api.3g.youku.com +@adstdrec.youku.com +@ads test.ott.youku.com +@ads"test.sdk.m.youku.com +@ads v.l.youku.com +@adsval.api.youku.com +@ads&vali.cp31.ott.cibntv.net +@ads wan.youku.com +@adsykatr.youku.com +@adsykrec.youku.com @ads - -AHMIA ahmia.fi - -APACHE -apache.org -. -CABLETVcabletv.com.hk i-cable.com -CHOCOLATEYchocolatey.org -, -CYLINK -cylink.procylink0122.icu +JAVLIBRARYjavlibrary.com +5 +IMDB imdb.com imdb.tomedia-imdb.com + + +LANDOFHOPE landofhope.tv g OOKLA-SPEEDTEST-ADSPB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ @ads - -PORNHD -pornhd.com -œ -STEAM fanatical.comhumblebundle.complayartifact.comsteam-chat.comsteamcommunity.comsteamgames.comsteampowered.comsteamstatic.comunderlords.comvalvesoftware.comsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.net - - INMEDIAHK inmediahk.net -, -JAVAjava java.com java.net -B -MITmit mit.edu mit.netmitpressjournals.org -> -UBUNTU -ubuntu.com -ubuntu.netubuntuforums.org 0 - COWTRANSFER c-t.workcowtransfer.com -A -MEIZU flyme.cn meizu.cn  meizu.com  mzres.com -" - ONESIGNAL-ADS onesignal.com - -ERLANG -erlang.org - - NEWYORKER newyorker.com -ô -VERISIGN verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.com -" - ALPINELINUXalpinelinux.org + SOURCEFORGEsourceforge.net fsdn.com +3 +ENTRUST entrust.netentrustdatacard.com + +WTO wto.org +‚ +NETEASE 126.com 126.link 126.net 127.net 163.com163industry.com 163mail.com 163qiyukf.com +163yun.com 166.net +haowu.linkicourse163.org  kaola.com +lofter.com  nease.netnetease-inc.com netease.com +netease.im +qiyukf.com ydstatic.com yeah.net +youdao.com g.163.com +@ads +ä +TLD-CNcn citic baidu +unicomsohu +xn--fiqs8s +xn--fiqz9s xn--1qqw23a xn--xhq521b xn--8y0a063a xn--6frz82g +xn--fiq64b xn--estv75g xn--vuq861b xn--zfr164b + +DOI doi.org doi.info +% + +CHINAPOWERchinapower.csis.org +Y +DOUYU douyu.tv  douyu.com douyucdn.cn douyuscdn.com douyutv.com +* +HKOPENTV hkopentv.com fantv.hk  -ARCHIVE archive.org - -STAGE1ST saraba1st.com - - GREATFIRE greatfire.org - -HEGRE  hegre.com -$ -SCMP scmp.com -i-scmp.com -Ø - XIAOMITV-ADS ad.intl.xiaomi.com -@ads ad.mi.com -@ads ad.xiaomi.com -@adsadmob.xiaomi.com -@adsad1.xiaomi.com -@adsmistat.xiaomi.com -@adstracking.miui.com -@adsadv.sec.miui.com -@ads#adv.sec.intl.miui.com -@ads#misc.in.duokanbox.com -@ads ad.hpplay.cn -@adsadeng.hpplay.cn -@ads atianqi.com -@ads kuyun.com -@ads umeng.com -@ads -C - CHINATELECOM -189.cnchinatelecom.com.cn -chntel.com - -CONAIR  conair.me +NETFLAV netflav.com + +TSQUARE +tsquare.tv  -HQPORNER hqporner.com - - WIREGUARD wireguard.com -= - JAVFINDER javfinder.sh findercdn.me o0-2.com -. - PUBMATIC-ADSads.pubmatic.com -@ads - - -SHUZIYIMINshuziyimin.org - -YANDE yande.re - -AVN avn.com -B -DISQUS -disqus.com disquscdn.comdisqusservice.com +ADDTOANY addtoany.com ¢ GOOGLE-ADS  admob.com adsense.comadservice.google.comadvertisercommunity.comadvertiserscommunity.comadwords-community.com adwords.comadwordsexpress.comapp-measurement.comclickserver.googleads.comdoubleclick.comdoubleclick.netgoogle-analytics.comgoogleadapis.comgoogleadservices.comgoogleanalytics.comgoogleoptimize.comgooglesyndication.comgoogletagmanager.comgoogletagservices.comgoogletraveladservices.com urchin.com -¾ - IQIYI-ADSa.ckm.iqiyi.com -@adsad.m.iqiyi.com -@ads afp.iqiyi.com -@adsc.uaa.iqiyi.com -@ads!cloudpush.iqiyi.com -@ads#cm.passport.iqiyi.com -@adscupid.iqiyi.com -@ads$emoticon.sns.iqiyi.com -@ads"gamecenter.iqiyi.com -@ads"hotchat-im.iqiyi.com -@ads ifacelog.iqiyi.com -@adsmbdlog.iqiyi.com -@ads msg.71.am -@ads msg.video.qiyi.com -@ads!msg2.video.qiyi.com -@ads$policy.video.iqiyi.com -@adsyuedu.iqiyi.com -@ads -T +D -PROTONMAIL protonmail.chprotonmail.comprotonstatus.com pm.me -ö -TWITTERads-twitter.com periscope.tv pscp.tvt.co tellapart.com tweetdeck.com  twimg.com twitpic.com twitter.comtwitteroauth.comtwitterstat.us -twitter.jp vine.co twtrdns.net - -UNPKG  unpkg.com +LIVEJASMINlivejasmin.com dditsadn.com dditscdn.com , -BYPASSCENSORSHIPbypasscensorship.org - - -JAVLIBRARYjavlibrary.com +MATTERS matters.news matters.one  -NIXOS  nixos.org - -QUANTIL quantil.com - - SHARETHIS sharethis.com -N -CNBC cnbc.com -cnbcfm.com -nbcuni.comnbcudigitaladops.com -å -MOZILLAmozilla.community mozilla.net mozilla.org bugzilla.org getpocket.comseamonkey-project.orgthunderbird.net firefox.comdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud rust-lang.org  rustup.rs  crates.io docs.rs +PIGAV  pigav.com & - NETEASE-ADS g.163.com + STEAMUNLOCKEDsteamunlocked.net +å + TENCENT-ADS ad.qq.com +@ads ad.qun.qq.com +@ads"adfilter.imtt.qq.com +@ads adping.qq.com +@adsadpm.app.qq.com +@adsadsclick.qq.com +@adsadsfile.qq.com +@adsadshmmsg.qq.com +@adsadslvfile.qq.com +@adsadslvseed.qq.com +@ads&adsmind.apdcdn.tc.qq.com +@adsadsqqclick.qq.com +@ads adstestview.qq.com +@adsadsview.qq.com +@adsadsview2.qq.com +@adsadv.app.qq.com +@ads adver.qq.com +@ads btrace.qq.com +@adse.qq.com +@adslog.tbs.qq.com +@ads mpush.qq.com +@ads mtrace.qq.com +@ads push.qq.com +@ads pgdt.gtimg.cn @ads + +VIU viu.com +viu.tv +e +DISCORD discord.com +discord.gg discord.mediadiscordapp.comdiscordapp.net +% +DEMOCRACYEARTHdemocracy.earth +T + DLERCLOUD dlercloud.com dlercloud.org dlercloud.me dleris.best 9 -YOUZAN -youzan.com yzcdn.cn youzanyun.com -V - JETBRAINS jetbrains.com jetbrains.net datalore.iokotlinlang.org -n -TWITCH ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net - -XHAMSTER xhamster.com -Ü -YYETS -got001.com -got002.com jstucdn.com playcvn.com rrys.tv rrys2019.com rrysapp.com  yyets.com zmz2019.com -zmzapi.com cvnad.com -@ads -iyoowi.com -@ads -$ -CSDN csdn.net -csdnimg.cn - - -HONGKONGFPhongkongfp.com - -RSF rsf.org + SQUIRRELVPNsquirrelvpn.comsquirrelgroup.net  TRIBLER tribler.org -  - WIKIMEDIA mediawiki.org wikibooks.org wikidata.orgwikimediafoundation.org wikimedia.org wikinews.org wikipedia.org wikiquote.orgwikisource.orgwikiversity.orgwikivoyage.orgwiktionary.orgwmfusercontent.org -w.wiki - -RIXCLOUD rixcloud.com -q -TIKTOK -musical.ly tiktokcdn.com tiktokv.com -tiktok.com#p16-tiktokcdn-com.akamaized.net - -CYTHON -cython.org -* -JAVWIDE -javwide.tv javwide.com -+ - -KUBERNETES kubernetes.io -k8s.io - -MYSQL  mysql.com -‚ -NETEASE 126.com 126.link 126.net 127.net 163.com163industry.com 163mail.com 163qiyukf.com -163yun.com 166.net -haowu.linkicourse163.org  kaola.com -lofter.com  nease.netnetease-inc.com netease.com -netease.im -qiyukf.com ydstatic.com yeah.net -youdao.com g.163.com -@ads -Ñ -9NEWS 9cdn.net9nation.com.au 9news.com.au 9now.com.aufreeviewplus.net.au -mi9.com.au -mi9cdn.com nine.com.auninemsn.com.austatic9.net.au yourtv.com.au - -FEEDLY -feedly.com -& -HUYA huya.com msstatic.com +ö +TWITTERads-twitter.com periscope.tv pscp.tvt.co tellapart.com tweetdeck.com  twimg.com twitpic.com twitter.comtwitteroauth.comtwitterstat.us +twitter.jp vine.co twtrdns.net  - WTEAM-ADS ads.wteam.xyz - -ARK -ark.to -k - TAYLORFRANCIS tandf.co.uktaylorandfrancis.comtaylorfrancis.comtaylorandfrancis.com -( -GLOBALSECURITYglobalsecurity.org -A - PINDUODUO -pddpic.com pinduoduo.com yangkeduo.com - -VUVUZELA vuvuzela.io -' -APA apa.orgpsyccareers.com - -FIREFOX firefox.com + BREITBART breitbart.com + + INMEDIAHK inmediahk.net +„ +MDNdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud +H +HULU hulu.com +huluim.comhulustream.com +huluad.com / STARTPAGE startpage.com ixquick.com -‰ - 58TONGCHENG -58.com  58.com.cn 5858.com  58che.com 58xueche.com -anjuke.comanjukestatic.com chinahr.com fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com -˜- -BAIDU -91.com -aipage.com apollo.auto baidu.cn  baidu.com baidubce.combaiducontent.com baidupcs.combaidustatic.com -baifae.com baifubao.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn -bdydns.net chuanke.com  dlnel.com  dlnel.org -duapps.com -dwz.cn -hao123.com hao123img.com -hao222.com -haokan.com jomocdn.net jomodns.com -mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com a.baidu.com -@ads ad.duapps.com -@ads!ad.player.baidu.com -@ads adm.baidu.com -@adsadscdn.baidu.com -@adsadx.xiaodutv.com -@adsae.bdstatic.com -@ads afd.baidu.com -@ads als.baidu.com -@adsanquan.baidu.com -@ads!antivirus.baidu.com -@adsapi.cpu.baidu.com -@ads'api.mobula.sdk.duapps.com -@ads#api.tuisong.baidu.com -@adsappc.baidu.com -@adsb.bdstatic.com -@ads baichuan.baidu.com -@adsbaidustatic.com -@adsbaidutv.baidu.com + + WORDPRESSvideopress.com w.org wordpress.com wordpress.org wordpress.tv wp-themes.com +wp.com +† +SECTIGO sectigo.comenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.com +' +CATEGORY-MEDIA 9cdn.net9nation.com.au 9news.com.au 9now.com.aufreeviewplus.net.au +mi9.com.au +mi9cdn.com nine.com.auninemsn.com.austatic9.net.au yourtv.com.au afp.com afpforum.comamericasvoice.news +ap.org +apnews.comappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk +atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com bbc.com  bbc.co.uk +bbci.co.uk  boxun.combowenpress.com breitbart.comcabletv.com.hk i-cable.comcaijinglengyan.comchinadecoding.comchinadigitaltimes.net cnbc.com +cnbcfm.com +nbcuni.comnbcudigitaladops.com cnn.com +cnn.io cnnarabic.com cnnlabs.com cnnmoney.ch cnnmoney.comcnnmoneystream.comcnnpolitics.com +cup.com.hk d100.net +dw.com dajiyuan.com dajiyuan.euepochmediagroup.comepochstories.com epochtime.comepochtimes-romania.comepochtimes.co.ilepochtimes.co.krepochtimes.co.ukepochtimes.comepochtimes.com.auepochtimes.com.brepochtimes.com.sgepochtimes.com.twepochtimes.com.ua epochtimes.cz epochtimes.de epochtimes.eu epochtimes.fr epochtimes.it epochtimes.jp epochtimes.nl epochtimes.pl epochtimes.ru epochtimes.seepochtimestr.com epochweek.comepochweekly.com erabaru.netlagranepoca.com ntd.com ntdtv.ca ntdtv.co.kr  ntdtv.com ntdtv.com.tw ntdtv.jp ntdtv.kr  ntdtv.org ntdtv.ru ntdtvla.com  ntdvn.comtheepochtimes.comtheepochtimessubscribe.comvelkaepocha.czfox fox.comfoxbusiness.comfoxcorporation.com +foxdcg.com foxdoua.com +foxfdm.com +foxinc.com +foxneo.comfoxneodigital.com foxnews.com fxnetwork.com foxnewsplayer-a.akamaihd.netfreebeacon.comglobalvoices.orgglobalvoicesonline.org  guo.media  gnews.org gtv.org gtv1.org g-tvapp.com hk01.com hkcnews.com hkopentv.com fantv.hkhongkongfp.com inmediahk.net jfengtime.com landofhope.tvlocalpresshk.com +ltn.com.tw yes123.com.tw matters.news matters.one +medium.com +myradio.hkmyradio.com.hk newyorker.com +nikkei.com  nikkei.jp nikkei.co.jp now.com +now.com.hk nowe.com +now-tv.comnow-ashare.com ntd.com  ntdtv.com nyt.com nyt.net nytcn.me  nytco.com nytimes.com nytstyle.comtimestalks.compassiontimes.hk qmap.pubrealvision.com reuters.com +reuters.tvreutersmedia.net rfa.org +rfi.fr rsf.org etvonline.hk rthk.hk scmp.com +i-scmp.comshuziyimin.orgsinoinsider.comsoundofhope.orgtheinitium.com  init.shopthestandnews.com udn.com +udn.com.twudnfunlife.com  unwire.hkamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.ru insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com +voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.com cstatic.net +curbed.com  eater.comfunnyordie.com meridian.net polygon.com +racked.com +recode.net sbnation.com theverge.com vox-cdn.com vox.comvoxcreative.comvoxfieldguide.com voxmedia.com +voxops.netwashingtonpost.com watchout.tw +waa.tw +wenzhao.ca +zaobao.com zaobao.com.sg  zaobao.sg zerohedge.com zoomingin.tv + + CATEGORY-PORN +91porn.com  avgle.com avn.com beeg.com bongacams.com +bcicdn.com bcrncdn.com +btt804.com +btt904.com +bttzyw.com +bttzyw.net t66y.comchaturbate.com e-hentai.org ehgt.org ehtracker.org +ehwiki.org exhentai.orghentaiverse.org eporner.comfanhaodian.com  hegre.com hqporner.com +javbus.com javfinder.sh findercdn.me o0-2.com  javhd.comjavlibrary.com +javwide.tv javwide.com kindgirls.comlivejasmin.com dditsadn.com dditscdn.com +metart.commetartnetwork.com metcams.comnaiadsystems.com  nsimg.net netflav.com  pigav.com +pornhd.com +phncdn.com phprcdn.com pornhub.compornhubpremium.com  press.vin redtube.com spankbang.comtheporndude.com  tube8.comvaginacontest.com  x-art.com xhamster.com xnxx.com xnxx-cdn.com xvideos.comxvideos-cdn.com youporn.com +s +EHENTAI e-hentai.org ehgt.org ehtracker.org +ehwiki.org exhentai.orghentaiverse.org +T +NOW now.com +now.com.hk nowe.com +now-tv.comnow-ashare.com + +VUVUZELA vuvuzela.io +u + +ATTWATCHTV +att.tv atttvnow.comattwatchtv.com directv.com  dtvce.comnettyinternet.com +d + JUSTMYSOCKSjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net + +TUNSAFE tunsafe.com +¡ +VOXMEDIA cstatic.net +curbed.com  eater.comfunnyordie.com meridian.net polygon.com +racked.com +recode.net sbnation.com theverge.com vox-cdn.com vox.comvoxcreative.comvoxfieldguide.com voxmedia.com +voxops.net + +YOUPORN youporn.com +×Ò +GEOLOCATION-CN 3304399.net 4399.com 4399api.com 4399dmw.com +4399er.com4399youpai.com 5054399.com img4399.com  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn +58.com  58.com.cn 5858.com  58che.com 58xueche.com +anjuke.comanjukestatic.com chinahr.com +daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com acfun.cn aixifan.com!apilog-web.acfun.cn +@ads +acplay.netdandanplay.com a.alimama.cn +@adsacjs.aliyun.com +@ads adash.m.taobao.com +@ads"adashbc.m.taobao.com +@ads#adashbc.ut.taobao.com +@ads#adash-c.ut.taobao.com +@ads!adashx.m.taobao.com +@ads%adashx4ae.ut.taobao.com +@ads$adashx4yt.m.taobao.com +@ads$adashxgc.ut.taobao.com +@adsadsh.m.taobao.com +@adsafp.adchina.com +@adsafp.alicdn.com +@ads!agoodm.m.taobao.com +@ads$agoodm.wapa.taobao.com +@ads alipaylog.com +@adsamdc.alipay.com +@adsamdc.m.taobao.com +@ads!api.wapa.taobao.com +@ads$api.waptest.taobao.com +@ads apoll.m.taobao.com +@ads$appdownload.alicdn.com +@adsatanx.alicdn.com +@adsatanx2.alicdn.com +@adscbu01.alicdn.com +@adscdn0.mobmore.com +@adsclick.aliyun.com +@ads'click.mz.simba.taobao.com +@adscm.ipinyou.com +@ads cm.mlt01.com +@ads"dsp.simba.taobao.com +@adserr.taobao.com +@adsex.mobmore.com +@ads ex.puata.info +@ads"fav.simba.taobao.com +@ads%feedback.whalecloud.com +@adsff.win.taobao.com +@ads fm.p0y.cn +@ads g.click.taobao.com +@ads +g.tbcdn.cn +@adsgma.alicdn.com +@adsgtms01.alicdn.com +@adsgtms02.alicdn.com +@adsgtms03.alicdn.com +@adsgtms04.alicdn.com +@adshydra.alibaba.com +@ads(hz.pre.tbusergw.taobao.net +@ads$hz.tbusergw.taobao.net +@ads i.ipinyou.com +@adsinit.phpwind.com +@ads"intl.wapa.taobao.com +@ads%intl.waptest.taobao.com +@ads#jxlog.istreamsche.com +@adslog.umtrack.com +@adsm.intl.taobao.com +@ads m.simba.taobao.com +@ads match.p4p.1688.com +@ads&material.istreamsche.com +@ads mlt01.com +@ads'nbsdk-baichuan.alicdn.com +@ads'nbsdk-baichuan.taobao.com +@ads#osfota.cdn.aliyun.com +@ads!osupdate.aliyun.com +@ads'osupdateservice.yunos.com +@ads&pindao.huoban.taobao.com +@ads push.wandoujia.com +@adsre.m.taobao.com +@ads re.taobao.com +@ads'redirect.simba.taobao.com +@adsrj.m.taobao.co +@adsrj.m.taobao.com +@ads sdkinit.taobao.com +@ads show.re.taobao.com +@adssimaba.taobao.com +@ads simba.m.taobao.com +@ads"srd.simba.taobao.com +@adsstats.ipinyou.com +@ads!strip.taobaocdn.com +@ads%tanxlog.istreamsche.com +@adstejia.taobao.com +@adstemai.taobao.com +@ads"tns.simba.taobao.com +@ads!tongji.linezing.com +@ads!tvupgrade.yunos.com +@adstyh.taobao.com +@adsuserimg.qunar.com +@adsw.m.taobao.com +@adsyiliao.hupan.com +@adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com +alicdn.com alidayu.com +alidns.comaliyun-inc.comaliyun-iot-share.com +aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.toteambition.comteambition.netteambitionapis.com mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com +uyunad.comwhalecloud.comalog.umeng.com +@ads!alog.umengcloud.com +@ads 25pp.com  56che.com  95095.com 9game.cn +aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.comaliexpress.com alifanyi.comalihealth.com.cn alihealth.hk +aliimg.com +alikmd.com alimama.com alimebot.com +alimei.com alios.cn +alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com +aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn +asczwa.comasczxcefsv.com +asmlink.cn atatech.org +b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com +dfkhgj.com doctoryou.ai doctoryou.cn dongting.com +dratio.com emas-poc.com +gongyi.xin ialicdn.com iconfont.cn +ics.design +jhgtgb.com +kanbox.com +lazada.comliangxinyao.com m-now.cn +maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com +zuodao.com sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com +hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com +mashort.cn pailitao.com +taobao.com +taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmalltv.com tmjl.ai alitrip.com  feizhu.cn +feizhu.com +fliggy.com  fliggy.hk +iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net +91.com +aipage.com apollo.auto baidu.cn  baidu.com baidubce.combaiducontent.com baidupcs.combaidustatic.com +baifae.com baifubao.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn +bdydns.net chuanke.com  dlnel.com  dlnel.org +duapps.com +dwz.cn +hao123.com hao123img.com +hao222.com +haokan.com jomocdn.net jomodns.com +mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com a.baidu.com +@ads ad.duapps.com +@ads!ad.player.baidu.com +@ads adm.baidu.com +@adsadscdn.baidu.com +@adsadx.xiaodutv.com +@adsae.bdstatic.com +@ads afd.baidu.com +@ads als.baidu.com +@adsanquan.baidu.com +@ads!antivirus.baidu.com +@adsapi.cpu.baidu.com +@ads'api.mobula.sdk.duapps.com +@ads#api.tuisong.baidu.com +@adsappc.baidu.com +@adsb.bdstatic.com +@ads baichuan.baidu.com +@adsbaidustatic.com +@adsbaidutv.baidu.com @adsbanlv.baidu.com @ads bar.baidu.com @ads bce.baidu.com @@ -541,77 +577,150 @@ mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com @adsznsv.baidu.com @adszz.bdstatic.com @adszzy1.quyaoya.com -@ads - -DIGICERT digicert.com freessl.com geotrust.com rapidssl.com -thawte.com  thawte.de  thawte.fr -B -HASKELL haskell.orghaskellstack.org stackage.org -“ -KUAISHOU gifshow.com ksapisrv.com kuaishou.com -yximgs.com!log-sdk.gifshow.com -@adswlog.kuaishou.com -@ads -T - DLERCLOUD dlercloud.com dlercloud.org dlercloud.me dleris.best - -JENKINS -jenkins.io - -MARIADB mariadb.org -Y - PLAYSTATIONplaystation.complaystation.net sonyentertainmentnetwork.com - -SFACG  sfacg.com -$ - HUANGHUAGANGhuanghuagang.org -µ -JD-ADSads.union.jd.com -@ads c-nfa.jd.com -@adscps.360buy.com -@ads -jzt.jd.com -@ads stat.m.jd.com -@ads img-x.jd.com -@ads -' - MIXPANEL-ADSdecide.mixpanel.com -, -LINUXFROMSCRATCHlinuxfromscratch.org - - RPMFUSION rpmfusion.org -4 -SCInewisiknowledge.comisiknowledge.com -‹ -SINA-ADS 2016.sina.cn -@adsad.sina.com.cn -@adsadbox.sina.com.cn -@ads"adimages.sina.com.hk -@ads"adimg.mobile.sina.cn -@ads!adimg.uve.weibo.com -@ads"adm.leju.sina.com.cn -@ads ads.sina.com -@adsalitui.weibo.com -@adsapi.apps.sina.cn -@ads!appgift.sinaapp.com -@ads$appsupdate.sinaapp.com -@ads atm.sina.com -@ads beacon.sina.com.cn -@ads biz.weibo.com -@adsc.biz.weibo.com -@ads"c.wcpt.biz.weibo.com -@ads&click.uve.mobile.sina.cn -@ads!click.uve.weibo.com -@adscm.dmp.sina.cn -@ads1#contentrecommend-out.mobile.sina.cn -@ads%count.video.sina.com.cn -@ads!counter.sina.com.cn -@adscre.dp.sina.cn -@adscre-dp.sina.cn -@adsd00.sina.com.cn -@adsdcads.sina.com.cn -@adsdl.kjava.sina.cn -@ads dmp.sina.cn +@ads +acg.tv acgvideo.com +b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com  hdslb.com im9.com +mincdn.com$ upos-hz-mirrorakam.akamaized.net +bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.com +douyin.com huaxiong.comjokecommunity.comneihanshequ.com +pstatp.com +snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com +wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com +ixigua.com ixgvideo.com  365yg.com +csdl.ac.cn  las.ac.cn 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn +cmvideo.cn miguvideo.com andfx.cn  andfx.net +cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com +ctexcel.ca ctexcel.comctexcel.com.hk +ctexcel.fr +ctexcel.us +189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com +chntel.com  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn cnki.net  coding.me +coding.net coolapk.comcoolapkmarket.comcoolapkmarket.net c-t.workcowtransfer.com csdn.net +csdnimg.cn c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn +skysea.com  suanya.cn +suanya.com +tieyou.com +toptown.cn toursbms.com trip.com tripcdn.com +vipdlt.com biji.com +ddmogo.com +igetget.cn igetget.com luojilab.com  mogoo.com +sao.cn saolife.com douyu.tv  douyu.com douyucdn.cn douyuscdn.com douyutv.com +ele.me elemecdn.com eleme.cn erji.net  ganji.comganjistatic1.com +gcores.com gitv.cn gitv.tv hicloud.com hihonor.com honor.cn +huawei.comhuaweicloud.com  vmall.com vmallres.com hupu.com hupucdn.com huya.com msstatic.com coolbuy.com  ifanr.com ifanr.inifanrusercontent.com +ifanrx.com +minapp.com 71.am  iqiyi.com iqiyipic.com +pps.tv +ppsimg.com qiyi.com qiyipic.com +qy.net +71edge.coma.ckm.iqiyi.com +@adsad.m.iqiyi.com +@ads afp.iqiyi.com +@adsc.uaa.iqiyi.com +@ads!cloudpush.iqiyi.com +@ads#cm.passport.iqiyi.com +@adscupid.iqiyi.com +@ads$emoticon.sns.iqiyi.com +@ads"gamecenter.iqiyi.com +@ads"hotchat-im.iqiyi.com +@ads ifacelog.iqiyi.com +@adsmbdlog.iqiyi.com +@ads msg.71.am +@ads msg.video.qiyi.com +@ads!msg2.video.qiyi.com +@ads$policy.video.iqiyi.com +@adsyuedu.iqiyi.com +@ads3.cn  300hu.com +360buy.com 360buyimg.com +360top.com +7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn +dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com +jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com +jd-app.com  jd-ex.com jd.cn jd.co.th +jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com +jingxi.com +jkcsjd.com +joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn +paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com +vg.com wangyin.com  wdfok.com yhd.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com +@ads c-nfa.jd.com +@adscps.360buy.com +@ads +jzt.jd.com +@ads stat.m.jd.com +@ads img-x.jd.com +@ads +42r.cn +5566ua.com aurorapush.cn +e0n.cn japps.cn jchat.io +jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com +jsurvey.cn  jvoice.cn +kc9.cn +n0q.cn pushcfg.com +s0n.cn jiemian.comjiemian.com.cnjinrishici.com jinshuju.netjinshujucdn.com jsdelivr.net jsdelivr.com gifshow.com ksapisrv.com kuaishou.com +yximgs.com!log-sdk.gifshow.com +@adswlog.kuaishou.com +@ads  lagou.com lgstatic.com +lancdn.comlandiannews.com  wsoso.com +liepin.com +lietou.comlietou-static.com mafengwo.cn mafengwo.com mafengwo.net manmanbuy.com  meitu.com meitudata.com dianping.com +maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com flyme.cn meizu.cn  meizu.com  mzres.com +mihoyo.com bh3.com 126.com 126.link 126.net 127.net 163.com163industry.com 163mail.com 163qiyukf.com +163yun.com 166.net +haowu.linkicourse163.org  kaola.com +lofter.com  nease.netnetease-inc.com netease.com +netease.im +qiyukf.com ydstatic.com yeah.net +youdao.com g.163.com +@ads +nga.cn 178.com +ngabbs.com ngacn.cc oneplus.com +oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com coloros.com finzfin.com h2os.com +heytap.com heytapcs.comheytapdownload.comheytapimage.com +myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobi  oppoer.meoppomobile.com oppopay.com opposhop.cn +realme.com realmebbs.comrealmemobile.com +pddpic.com pinduoduo.com yangkeduo.com  pplive.cn +pplive.com pptv.com +360.cn 360.com +360-jr.com 360chou.com360daikuan.com360huzhubao.com +360jie.com360jinrong.net +360kan.com 360kuai.com  360os.com 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com +haosou.com haosou.com.cn +haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com qihucdn.com  qihoo.com qikucdn.com +so.com sou.comxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com +youhua.com 6655.com cooldock.com +ithome.com lapin365.com ruanmei.com +saayaa.com win7china.com win8china.com  feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.com sf-saas.comsf-tech.com.cn sffix.cn sfgy.org  sfacg.com  97973.com sina.com +sinaimg.cn sina.com.cn  sinajs.cn sina.cn sinaapp.com sinaedge.com sinaimg.com +sinajs.com  weibo.com weibo.com.cn weibo.cn weibocdn.com xhaiwai.com 2016.sina.cn +@adsad.sina.com.cn +@adsadbox.sina.com.cn +@ads"adimages.sina.com.hk +@ads"adimg.mobile.sina.cn +@ads!adimg.uve.weibo.com +@ads"adm.leju.sina.com.cn +@ads ads.sina.com +@adsalitui.weibo.com +@adsapi.apps.sina.cn +@ads!appgift.sinaapp.com +@ads$appsupdate.sinaapp.com +@ads atm.sina.com +@ads beacon.sina.com.cn +@ads biz.weibo.com +@adsc.biz.weibo.com +@ads"c.wcpt.biz.weibo.com +@ads&click.uve.mobile.sina.cn +@ads!click.uve.weibo.com +@adscm.dmp.sina.cn +@ads1#contentrecommend-out.mobile.sina.cn +@ads%count.video.sina.com.cn +@ads!counter.sina.com.cn +@adscre.dp.sina.cn +@adscre-dp.sina.cn +@adsd00.sina.com.cn +@adsdcads.sina.com.cn +@adsdl.kjava.sina.cn +@ads dmp.sina.cn @adsdp.im.weibo.cn @ads game.weibo.cn @adsgame.weibo.com @@ -666,136 +775,359 @@ jzt.jd.com @ads!woocall.sina.com.cn @adszc.biz.weibo.com @ads zymo.mps.weibo.com +@adssinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com +go2map.com sogo.com  sogou.com sogoucdn.com saraba1st.com cnsuning.com +suning.comsuningcloud.comsuningestate.comsuningholdings.com +tapimg.com +taptap.com +apcdns.net foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn imqq.com  myapp.com myqcloud.com +qcloud.com qcloudimg.com qlogo.cn qpic.cn +qq.com +qqmail.com  qzone.comservicewechat.com smtcdns.com +tencent.cn tencent.comtencent.com.cntencent.com.hktencent.net.cntencent-cloud.comtencentmusic.comtencentyun.com +tenpay.com +wechat.com +wegame.com +weiyun.com ad.qq.com +@ads ad.qun.qq.com +@ads"adfilter.imtt.qq.com +@ads adping.qq.com +@adsadpm.app.qq.com +@adsadsclick.qq.com +@adsadsfile.qq.com +@adsadshmmsg.qq.com +@adsadslvfile.qq.com +@adsadslvseed.qq.com +@ads&adsmind.apdcdn.tc.qq.com +@adsadsqqclick.qq.com +@ads adstestview.qq.com +@adsadsview.qq.com +@adsadsview2.qq.com +@adsadv.app.qq.com +@ads adver.qq.com +@ads btrace.qq.com +@adse.qq.com +@adslog.tbs.qq.com +@ads mpush.qq.com +@ads mtrace.qq.com +@ads push.qq.com +@ads pgdt.gtimg.cn +@ads tiancity.comtiancitycdn.com +tipdim.org tmtpost.com chaindd.com +72whys.com checkzeit.com +tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com 40017.cn +17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com +ly.com mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com +uyunad.comwhalecloud.comalog.umeng.com +@ads!alog.umengcloud.com +@ads  95516.com unionpay.comunionpayintl.comunionpaysecure.comwanfangdata.com.cn +sojump.com +wjx.cn wjx.com wjx.top +mi.com +mi-img.com  mifile.cn miui.com +miwifi.com  xiaomi.cn +xiaomi.com +xiaomi.netxiaomiyoupin.comdanjuanfunds.com +xueqiu.com  00cdn.com  88cdn.com +sandai.netthunderurl.com +xunlei.com ynet.com.cn ynet.com 0880.com ynet.cn +kumiao.com  youku.com  ykimg.com +mmstat.com soku.com +cibntv.net +youzan.com yzcdn.cn youzanyun.com yfcache.com +yfcalc.com yfcloud.com  yfdts.net  yfp2p.net +yfscdn.net yunfancdn.com  zhihu.com  zhimg.com zhihuishu.com  ksyun.com ksyungslb.com ourdvsss.com abchina.com +boc.cn  whccb.com moji.com mojichina.com0123456789.com +055110.com  05sun.com  100bt.com 100offer.com  11467.com +114chn.com 114piaowu.com 114shouji.com 115.com +119you.com 123juzi.com 123juzi.net 123u.com 1637.com 16rd.com  17173.com 178linux.com  17989.com  17cdn.com  18183.com 188.com 1905.com  19yxw.com 1nongjing.com  1ting.com 1zhe.com 21cn.com 2265.com 2288.org 2345.com 258.com 263.net 289.com 2cto.com 3000.com +310win.com +315che.com 3234.com 32r.com 3322.org 3387.com 33lc.com 3454.com 3456.cc +35.com 3533.com +360doc.com  360jq.com 360zhyx.com +365dmp.com 36kr.com +37.com 3733.com 3839.com +39.net 3conline.com 3d66.com 3dmgame.com +3elife.net 3h3.com 3yx.com  40407.com 4paradigm.com 500.com 500d.me +50bang.org 51.la 51credit.com  51cto.com 51eshop.com 51hejia.com51jingying.com 51wendang.com  51yes.com 5253.com  52hxw.com +52miji.com 52pk.com 52z.com 53kf.com +55.com +56.com 5577.com  55bbs.com  58pic.com  5bite.com 5fun.com 5gzm.net 5you.com 66wz.com 68h5.com +6rooms.com 71.am 714.com 7230.com +72byte.com  7down.com 7k7k.com  7moor.com 7po.com +7x24cc.com +7xdown.com  818ps.com  84399.com  8686c.com 885.com  88cdn.com +900.la 91danji.com 91yunxiao.com 9553.com 962.net 9718.com  99166.com 998.com 999d.com 99danji.com 9ht.com 9xu.com a9vg.com +aardio.com +adxvip.com agrantsem.com  aicdn.com  aiemy.com  aiops.com  aipai.comairchangan.com airguilin.com aisee.tv aiskycn.com aiyunxiao.com +aizhan.com +ali213.netalittle-tea.com +allyes.com anfensi.com +anquan.org +anruan.com +antutu.com apk3.com apk8.com +appinn.com  arpun.com babytree.combabytreeimg.com baidufree.combaifendian.com  baihe.com  baike.com baixing.com baixing.netbangongziyuan.com bankcomm.combankofchina.com baofeng.com baomitu.combaoxianshichang.com bcy.net bearychat.com beihaidc.com bengbeng.com  benmi.combestopview.com biancheng.net bianews.com bibaodao.com bidchance.com biddingx.com bihu.com +bio360.net  bio4p.com bio-equip.combiodiscover.com bishijie.com bitauto.combitautoimg.com bitecoin.com biyehome.net bjcathay.com bobo.com +bokecc.com bootcss.com btcfans.com btgtravel.com bthhotels.com caijingwu.com +caixin.com +caiyun.com caiyunapp.com cang.comcankaoxiaoxi.comcardbaobao.com +carnoc.com ccb.com cctv.com cctvpic.com  cdn20.com cebbank.com  cecdc.com cecport.com +ch.com changba.com chashebao.comchazhengla.com +che168.com  china.comchinacache.comchinacache.net chinafph.comchinalawedu.com chinanews.com chinapay.com chinapp.netchinapubmed.net chinasspp.comchinatranslation.net +chinaz.com +chinaz.net chiphell.comchongdiantou.com +chouti.com chuangxin.com chuansong.mechuansongme.com +chushou.tv chuyu.me  city8.com clouddn.com cloudxns.com cmbchina.com cn.bing.com cnanzhi.com +cnbeta.com cnbetacdn.com cnblogs.com +cnepub.com  cnfol.com  cnlaw.net cnstock.com cnzz.com code666.com +cofeed.com +cofool.com coindog.com  cpppf.org  cqvip.com  cr173.com  crsky.com  csbew.com csslcloud.net +ctfile.com ctiforum.com ctoutiao.com  ctsbw.com +cubead.com +cyagen.com  cybtc.com cyol.com cztv.com cztvcloud.com dadajiasu.com dadighost.com daguzhe.com dajiabao.com  dajie.com dajieimg.com dalongyun.com dangbei.com dangdang.com danji100.com +danji6.com daocloud.io daovoice.io dazijia.com  dbank.com +dcdkjx.com  dd373.com  ddooo.com dedecms.com develenv.com  dgtle.comdianchacha.com diandian.comdiandianqi.comdianwannan.comdidichuxing.comdingxiang-inc.com +diopic.net diyiyou.com dj99.com dmzj.com  docin.com dockerone.com +dockone.io dogedoge.com +donews.com +dongao.com dopa.com +douban.com  douban.fm doubanio.com +douxie.com +downcc.com +downyi.com +dpfile.comdrivergenius.com +dui.ai duiopen.com duoduocdn.com duokanbox.com +duomai.com duoshuo.com  duote.com +duowan.com dxpmedia.com +dxycdn.com  dyhjw.com dzw3.com  dzwww.com  easiu.com eastday.com eastmoney.com +eayyou.com  ebrun.com +ecitic.com +edu.cn  eduei.com eeyy.com eflycloud.com emarbox.com +emumax.comeoeandroid.com excelhome.net expreview.comf.cx  faloo.com famulei.com  fanli.com fanxian.com fastapi.net +feihuo.com feiniaomy.com feng.comfengkongcloud.com fengniao.comfengxian110.com  fenxi.com +fhldns.com  fimmu.com fixdown.com freebuf.com fugetech.com fuwj.com fyxz.com gameabc.com gamersky.com +gaodun.comgaoshouyou.com geekpark.net geetest.com geilicdn.comgenelinkout.com  getui.com +gezida.com gfan.com +giocdn.com  gitee.com gm86.com gmallbio.com  gmz88.com gold678.com  golue.comgongxiangcj.com gree.comgreenxiazai.com growingio.com  gtags.net  guabu.com guaiguai.comguanaitong.comguanhaobio.com gucheng.com  guigu.org  guokr.com  gupzs.com gushiwen.orgguzhangting.com +gwdang.comgxairlines.com +gxb.io gzwanju.com h5uc.com hack520.com hackhome.com haishun.com hanboshi.com +hao123.com hao123img.com  haote.comhaoyouyinxiang.com +heisha.net  henha.com henkuai.com  hexun.com +heytea.com  hiido.com hitv.com hiyd.com hktheone.com hn-cbec.com  hnair.com hntv.tv hnyuyuhui.com hollycrm.com homeinns.comhongsanban.com hongxiu.com +houdao.comhouyuantuan.com hteacher.net huanqiu.comhuashengdaili.com  huatu.com  huize.com  hujia.org hujiang.com hunantv.comhuochepiao.com huocheso.com  huxiu.com hxfy888.com iask.com +ibaotu.com icaidao.com ichangtou.com  iciba.com idongdong.com idqqimg.com  ifeng.com ifengimg.com iflytek.com  igao7.com +iheima.com ijiandao.com ijinshan.com +ikafan.com im2maker.com  im-cc.com +imedao.com imgo.tv  imooc.com indienova.com  infoq.cominfoqstatic.com  ip138.com +ip-cdn.com ipinyou.com ipip.net iranshao.com  irs01.com ishumei.com  it165.net  it168.com  it610.com  iteye.com +itjuzi.com  itmop.com  iyiou.com iyunxiao.com +izuche.com +jandan.net jb51.com  jdair.net jia.com jiameng.com jianshu.com +jianshu.io jianzhi8.com jiaodong.net jiaoyimao.com jiasuhui.com jiasule.com jiathis.com jiayuan.com jiazhao.com jiemeng8.comjikexueyuan.com jinianbi.comjinrongren.net  jinse.com  jinti.comjiqizhixin.com jisuanke.com jisuxia.com jiuzhilan.com jj20.com  jjwxc.net jmstatic.com jsbc.com +jsrdgg.com jstv.com juefeng.com  jumei.com  juxia.com  jyimg.com k366.com kaixin001.com kameng98.com +kanimg.com kankanews.com kantianqi.net kanzhun.com kaopu001.comkeboyunxiao.com  kejet.net kf5.com  kgimg.com +kimiss.com kingdee.com kkzj.com +kongfz.com koolearn.com +kouclo.com +koudai.com koudai8.com kq7.com  ksord.com ku6.com +ku6cdn.com +ku6img.com  kuaaa.com kuaidi100.com kuaihou.comkuaikanmanhua.com kuaizhan.com  kugou.com  kuqin.com lady8844.com laomaotao.net laomaotao.org  lascn.net  lawxp.com +le.com leanote.com ledu.comleetcode-cn.com leikeji.com leiphone.com leju.com leturich.org letv.com letvcdn.com letvimg.com lianjia.com lianmishu.com +liantu.com  liantu.me lianzhuli.comliaoxuefeng.com liba.com libaclub.comlieyunwang.com lightonus.com +likuso.com lingkou.com linkvans.com linuxidc.com liulanqi.net liuxiaoer.com lixinger.com lkkbrand.com longhoo.net +longre.comlongtugame.com longzhu.com  lotpc.com +loupan.com lrts.me +lu.com luckyair.net  lufax.com lufaxcdn.com luyouqi.com +lvmama.comlvsexitong.com  lxdns.com  lxway.com +magedu.com maisanqi.com +mamecn.com manmankan.com +mapbar.com mayi.com +mayihr.com +mcbang.com  mdpda.com mechina.org +mediav.com meika360.com meilishuo.commeimingteng.com +meiqia.commeishichina.com meishij.net mgtv.com miaopai.com miaozhen.com +miercn.com mikecrm.comminhangshi.com +mmbang.com mmbang.info moegirl.org +mofang.com mofazhu.com mogu.com mogucdn.com mogujie.com +mokahr.commoocollege.com mop.com +mscbsc.com mukewang.com muzhiwan.com +mydown.com mydrivers.com myshow360.net myyx618.com myzaker.com mzstatic.com naixuecha.com netbian.com +newasp.netnewbandeng.com  newyx.net nowcoder.com nowscore.com  nruan.com ntalker.com nvsheng.com  nzbdw.com oadz.com  oeeee.com  offcn.com +oicq88.com  okooo.com +ol-cdn.com +ol-img.com +oneapm.com onegreen.netonlinedown.netonlinesjtu.com +opdown.com oray.com oschina.net  ottcn.com +oupeng.com +p2peye.com p5w.net +paipai.compaipaibang.com paopaoche.net pc6.com +pcbeta.com +pchome.net pgzs.compharmacodia.com +pingan.compingplusplus.com pingwest.com +pingxx.com pintu360.com  pipaw.com  pipaw.net pptbest.com psbc.com +pubyun.com qbox.me  qc188.com qcc.com qcds.com qd8.com qd-metro.com qdmm.com qh24.com qianjia.com qianzhan.comqiaobutang.com qichacha.com +qidian.com +qie.tv qifeiye.comqijiayoudao.net qingcloud.comqingdaochina.orgqingdaonews.comqingsongchou.com  qiniu.com qiniucdn.com qiniudn.com qiniudns.com qiumibao.com qizuang.com  qqddc.comqqgexingqianming.com qqrizhi.comqqshuoshuo.com +qschou.com +qtmojo.com +qudong.com  qunar.com qunarzz.com qyer.com readnovel.com +renren.comrenren-inc.com rfchost.com rong360.com rtbasia.com  ruan8.comruby-china.org +runoob.com  saibo.com sanguosha.com +sanwen.net  scdng.com scoregg.com +sczsxx.com sdo.com sec-wiki.comsegmentfault.com +sencdn.com seniverse.comsenlinjimore.com +sgamer.com shangzhibo.tv sharejs.comshenmayouxi.com  sheui.com shijiexia.com shixiseng.com shmetro.comshoujihuifu.comshouyoubus.com shrbank.comshuidichou.comshuidihuzhu.com shumensy.comshuoshuokong.com +shutcm.com +simei8.com simuwang.com  sjwyx.com  skycn.com  smzdm.com  sobot.com sofreight.com softwhy.com sohu.com +sohucs.com +sojson.com +somode.com soso.com souqian.comsouthmoney.comspringtour.com  sspai.com ssports.com starbaby.cc starbaby.comstaticfile.org stockstar.com +sunrtb.com supermap.comsupermapcloud.com +sys321.com szfw.org szzfgjj.com t1y5.com  taihe.comtaihuoniao.com tanx.com +tao123.com +taoche.com te5.com tenxcloud.com  tgbus.comtianjimedia.comtianjin-air.com +tianqi.com tietuku.com +tiexue.net timedoo.com tingyun.com tjjt360.com  tmcdn.net +tobosu.com tom.com tongdun.net topthink.com travelsky.com trustutn.org  tudou.com tudouui.com tuer123.com tuicool.com  tujia.com  tuniu.com tutuapp.com  tuwan.com tuwanjun.com u.tools u17.com  ucbug.com upaiyun.com  upyun.com urselect.comurumqi-air.com  useso.com uuu9.com uzzf.com  v5875.com value500.com vamaker.com  vancl.com vanclimg.com  vcimg.com veryhuo.com veryzhun.com +vgtime.com  vic18.com videojj.com  vijos.org vip.com  vobao.com +vpgame.comwallstreetcn.comwangyangyang.vipwannianli8.com wanwushuo.com wanyiwang.com  wanyx.com +wdjimg.com wdzj.com  weand.com webterren.com weicaifu.com weidian.comweilaicaijing.comweilaiyunxiao.com weiphone.com weiphone.net weixing.com weiyangx.comwelltrend-edu.com wenjuan.com +win007.com win8.netwindows10zj.comwindows7en.com windowszj.com winwin7.com wishdown.com  wmzhe.com wnhuifu.com wonnder.com +wooyun.org worktile.comwoyaogexing.com  woyoo.com  wqiis.com wrating.com +wscdns.com  wumii.comwuximediaglobal.com xafc.com  xdwan.com +xfdown.com +xhscdn.comxiachufang.comxiaobaixitong.com xiaogouh5.comxiaohongshu.com  xiaoka.tv xiaokaxiu.comxiaoxiongxitong.comxiaoyuxitong.com  xiayx.com xiazaiba.com ximalaya.com xinhuanet.comxinrenxinshi.com xinshipu.comxingtan001.com xitong8.com xitu.com xiu8.com +xiucai.com xiziwang.net  xnpic.com xoyo.com  xpgod.com +xsa239.comxuanchuanyi.com  xue51.com xundupdf.com xuexicha.com xxsy.net  xycdn.com xywy.com +xzking.com yahui.cc +yaolan.com  yaoyl.com  yaozh.com  yccdn.com +ycgame.com +yeepay.com  yesky.com yh31.com yhd.com  yicai.com  yigao.com yigoonet.com yihaodian.comyihaodianimg.com yikexue.comyingjia360.comyinhang123.net yinxiang.com yinyuetai.comyinzhaowang.com +yiqifa.com +yiqifa.org yisu.com yitaifang.com  yiwan.com yixi.tv yizhibo.com  yjbys.com +yocajr.com +youboy.com youjiao.com youke.co youshang.com youxihezi.net youxila.com youxiniao.com youxigt.com  youzu.com yoyojie.com  yoyou.com  ypppt.com  ysten.com +yuewen.com  yunaq.com yunba.io yundaex.com yundasys.com +yundun.com yunqishi.net yunshipei.com yunxiao.com yunzhijia.com  yupoo.com  yuzua.com  yxbao.com +yxdown.com +yy.com +yytcdn.com +zampda.net zampdsp.com zastatic.com +zbjimg.com zczj.com +zdfans.com +zdmimg.com zgjm.org +zgjsks.com  zgzcw.com zhanbuba.com zhanzhang.net  zhanqi.tv zhaodanji.com zhaopin.com zhcw.com +zhenai.com  zhibo8.cc  zhidx.com +zhipin.com zhiziyun.comzhuangjiba.comzhuanyewanjia.comzhuayoukong.com zhubajie.com zhugeapi.net zhugeio.com  zimuzu.io zixiaomao.com zixuntop.com  zjstv.com zmengzhu.com zongheng.com +zrblog.net zsxq.com  zuche.com zuchecdn.com zuidaima.com zuowen8.comzuowenwang.net jindidata.comtianyancha.comzhuanxiandai.com +fm3838.comlarsonlimited.com runsheng.com vzuu.com +zoom3g.com +zoomyou.cn chaoxing.com chaoxing.cc + +HEGRE  hegre.com +Z +SPRINGER +apress.com springer.comspringerlink.comspringernature.com + +TIPDM +tipdim.org + +AHMIA ahmia.fi +@ +REUTERS reuters.com +reuters.tvreutersmedia.net +Y +UNIONPAY  95516.com unionpay.comunionpayintl.comunionpaysecure.com +- +LANTERNgetlantern.org +lantern.io +• +DMM-ADS bluekai.com +@adsfout.jp +@ads gmossp-sp.jp +@adsi-mobile.co.jp +@ads im-apps.net +@ads impact-ad.jp +@ads ladsp.com +@ads microad.co.jp +@ads +microad.jp +@ads socdm.com @ads -© -VILAVPN vilavpn.com vilavpn.xyz vilavpn1.xyz vilavpn2.xyz vilavpn3.xyz vilavpn4.xyz vilavpn5.xyz vilavpn6.xyz vilavpn7.xyz + + GREATFIRE greatfire.org +$ + HUANGHUAGANGhuanghuagang.org + -BOSLIFE boslife.biz boslife.net -§˜ -CNcn citic baidu -unicomsohu -xn--fiqs8s -xn--fiqz9s xn--1qqw23a xn--xhq521b xn--8y0a063a xn--6frz82g -xn--fiq64b xn--estv75g xn--vuq861b xn--zfr164b 3304399.net 4399.com 4399dmw.com -4399er.com4399youpai.com 5054399.com img4399.com  51job.com 51jobcdn.comyingjiesheng.comzhiding.com.cn -58.com  58.com.cn 5858.com  58che.com 58xueche.com -anjuke.comanjukestatic.com chinahr.com fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com acfun.cn aixifan.com!apilog-web.acfun.cn -@ads -acplay.netdandanplay.com 25pp.com  56che.com  95095.com 9game.cn -aliapp.org alibaba.comalibaba-inc.comalibabacapital.comalibabacorp.comalibabadns.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com -alicdn.com alidayu.com -alidns.com alifanyi.comalihealth.com.cn alihealth.hk -aliimg.com -alikmd.com alimama.com alimebot.com alios.cn -alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com -aliway.com aliwork.com alixiaomi.com -aliyun.comaliyun-inc.com aliyuncdn.com aliyuncs.comalizhaopin.com -asczwa.comasczxcefsv.com atatech.org -b2byao.com  bazai.com  bcvbw.com  cheng.xin damai.cn -dfkhgj.com doctoryou.ai doctoryou.cn dongting.com -dratio.com emas-poc.com -gongyi.xin hichina.com iconfont.cn -ics.design -jhgtgb.com -kanbox.com -lazada.comliangxinyao.com -maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc mxhichina.com nic.xinphilanthropy.xin saee.org.cn shenjing.com  shuqi.comshuqireader.com wandoujia.comxinlingshou.cn yowhale.com  yunos.com yunos-inc.comyushanfang.com -zuodao.com sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com -hemaos.com shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com pailitao.com -taobao.com -taobao.org taobaocdn.comtaopiaopiao.com tb.cn tbcache.com  tmall.com tmalltv.com tmjl.ai alitrip.com  feizhu.cn -feizhu.com -fliggy.com  fliggy.hk -iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net a.alimama.cn -@adsacjs.aliyun.com -@ads adash.m.taobao.com -@ads"adashbc.m.taobao.com -@ads#adashbc.ut.taobao.com -@ads#adash-c.ut.taobao.com -@ads!adashx.m.taobao.com -@ads%adashx4ae.ut.taobao.com -@ads$adashx4yt.m.taobao.com -@ads$adashxgc.ut.taobao.com -@adsadsh.m.taobao.com -@adsafp.adchina.com -@adsafp.alicdn.com -@ads!agoodm.m.taobao.com -@ads$agoodm.wapa.taobao.com -@ads alipaylog.com -@adsamdc.alipay.com -@adsamdc.m.taobao.com -@ads!api.wapa.taobao.com -@ads$api.waptest.taobao.com -@ads apoll.m.taobao.com -@ads$appdownload.alicdn.com -@adsatanx.alicdn.com -@adsatanx2.alicdn.com -@adscbu01.alicdn.com -@adscdn0.mobmore.com -@adsclick.aliyun.com -@ads'click.mz.simba.taobao.com -@adscm.ipinyou.com -@ads cm.mlt01.com -@ads"dsp.simba.taobao.com -@adserr.taobao.com -@adsex.mobmore.com -@ads ex.puata.info -@ads"fav.simba.taobao.com -@ads%feedback.whalecloud.com -@adsff.win.taobao.com -@ads fm.p0y.cn -@ads g.click.taobao.com -@ads -g.tbcdn.cn -@adsgma.alicdn.com -@adsgtms01.alicdn.com -@adsgtms02.alicdn.com -@adsgtms03.alicdn.com -@adsgtms04.alicdn.com -@adshydra.alibaba.com -@ads(hz.pre.tbusergw.taobao.net -@ads$hz.tbusergw.taobao.net -@ads i.ipinyou.com -@adsinit.phpwind.com -@ads"intl.wapa.taobao.com -@ads%intl.waptest.taobao.com -@ads#jxlog.istreamsche.com -@adslog.umtrack.com -@adsm.intl.taobao.com -@ads m.simba.taobao.com -@ads match.p4p.1688.com -@ads&material.istreamsche.com -@ads mlt01.com -@ads'nbsdk-baichuan.alicdn.com -@ads'nbsdk-baichuan.taobao.com -@ads#osfota.cdn.aliyun.com -@ads!osupdate.aliyun.com -@ads'osupdateservice.yunos.com -@ads&pindao.huoban.taobao.com -@ads push.wandoujia.com -@adsre.m.taobao.com -@ads re.taobao.com -@ads'redirect.simba.taobao.com -@adsrj.m.taobao.co -@adsrj.m.taobao.com -@ads sdkinit.taobao.com -@ads show.re.taobao.com -@adssimaba.taobao.com -@ads simba.m.taobao.com -@ads"srd.simba.taobao.com -@adsstats.ipinyou.com -@ads!strip.taobaocdn.com -@ads%tanxlog.istreamsche.com -@adstejia.taobao.com -@adstemai.taobao.com -@ads"tns.simba.taobao.com -@ads!tongji.linezing.com -@ads!tvupgrade.yunos.com -@adstyh.taobao.com -@adsuserimg.qunar.com -@adsw.m.taobao.com -@adsyiliao.hupan.com -@ads ddurl.to dingding.xin dingtalk.com dingtalk.net dingtalk.cndingtalkapps.com laiwang.com lwurl.to + +KUBERNETES kubernetes.io +k8s.io + + +TORPROJECTtorproject.org + + +CITIZENLAB citizenlab.ca +( +LAGOU  lagou.com lgstatic.com +– +OOKLA-SPEEDTEST  cdnst.net cellmaps.com ekahau.cloud +ekahau.com  ookla.com pingtest.net speedtest.co speedtest.netspeedtestcustom.com webtest.netPB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +@ads +# + PASSIONTIMESpassiontimes.hk +1 +TIANCITY tiancity.comtiancitycdn.com +‹ + HASHICORP  consul.io hashicorp.comnomadproject.io  packer.io terraform.io vagrantup.comvaultproject.io +8 +DMM dmm.com  dmm.co.jpdmm-extension.com + + FASTSTONE faststone.org +_ +FEDORA getfedora.orgfedoraforum.orgfedoraproject.orgfedoramagazine.org + +CONAIR  conair.me +, +DUYAOSS duyaoss.com duyaossr.com + +SFACG  sfacg.com + +STAGE1ST saraba1st.com +" +TED ted.com +tedcdn.com +¦ + CHINAMOBILE 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn +cmvideo.cn miguvideo.com andfx.cn  andfx.net +cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com + +TWISTERtwister.net.co + +ERLANG +erlang.org + +ARK +ark.to + +BILIPLUS biliplus.com + +FTEPROXY fteproxy.org +O +GUO  guo.media  gnews.org gtv.org gtv1.org g-tvapp.com +Š +SLACKslack-edge.comslack-imgs.com  slack.com +slackb.comslackcertified.com slackdemo.com slackhq.com +! +WANFANGwanfangdata.com.cn +< +ANACONDA anaconda.com anaconda.org conda.io +ô +DROPBOX db.ttdropbox-dns.com dropbox.com dropbox.techdropboxapi.comdropboxbusiness.comdropboxcaptcha.comdropboxforum.comdropboxforums.comdropboxinsiders.comdropboxmail.comdropboxpartners.comdropboxstatic.comdropboxusercontent.comgetdropbox.com&"paper-attachments.s3.amazonaws.com +" + ONESIGNAL-ADS onesignal.com +˜- +BAIDU 91.com aipage.com apollo.auto baidu.cn  baidu.com baidubce.combaiducontent.com baidupcs.combaidustatic.com baifae.com baifubao.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn @@ -966,197 +1298,29 @@ mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com @adsznsv.baidu.com @adszz.bdstatic.com @adszzy1.quyaoya.com -@ads -acg.tv acgvideo.com -b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com  hdslb.com im9.com -mincdn.com$ upos-hz-mirrorakam.akamaized.net -bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.com -douyin.com huaxiong.comjokecommunity.comneihanshequ.com -pstatp.com -snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com -wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com -ixigua.com ixgvideo.com  365yg.com -csdl.ac.cn  las.ac.cn 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn -cmvideo.cn miguvideo.com andfx.cn  andfx.net -cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com -189.cnchinatelecom.com.cn -chntel.com  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cn  wo.com.cn cnki.net  coding.me -coding.net coolapk.comcoolapkmarket.comcoolapkmarket.net c-t.workcowtransfer.com csdn.net -csdnimg.cn c-ctrip.com ctrip.cn  ctrip.com ctripbiz.com biji.com -ddmogo.com -igetget.cn igetget.com luojilab.com  mogoo.com -sao.cn saolife.com douyu.tv  douyu.com douyucdn.cn douyuscdn.com -ele.me elemecdn.com eleme.cn  ganji.comganjistatic1.com -gcores.com gitv.cn gitv.tv hicloud.com hihonor.com honor.cn -huawei.comhuaweicloud.com  vmall.com vmallres.com hupu.com hupucdn.com huya.com msstatic.com coolbuy.com  ifanr.com ifanr.inifanrusercontent.com -ifanrx.com -minapp.com 71.am  iqiyi.com iqiyipic.com -pps.tv -ppsimg.com qiyi.com qiyipic.com -qy.net -71edge.coma.ckm.iqiyi.com -@adsad.m.iqiyi.com -@ads afp.iqiyi.com -@adsc.uaa.iqiyi.com -@ads!cloudpush.iqiyi.com -@ads#cm.passport.iqiyi.com -@adscupid.iqiyi.com -@ads$emoticon.sns.iqiyi.com -@ads"gamecenter.iqiyi.com -@ads"hotchat-im.iqiyi.com -@ads ifacelog.iqiyi.com -@adsmbdlog.iqiyi.com -@ads msg.71.am -@ads msg.video.qiyi.com -@ads!msg2.video.qiyi.com -@ads$policy.video.iqiyi.com -@adsyuedu.iqiyi.com -@ads3.cn  300hu.com -360buy.com 360buyimg.com -360top.com -7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn -dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com -jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com -jd-app.com  jd-ex.com jd.cn jd.co.th -jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com -jingxi.com -jkcsjd.com -joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn -paipai.comprestodb-china.com qianxun.com toplife.com -vg.com wangyin.com  wdfok.com yhd.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com -@ads c-nfa.jd.com -@adscps.360buy.com -@ads -jzt.jd.com -@ads stat.m.jd.com -@ads img-x.jd.com -@ads -42r.cn -5566ua.com aurorapush.cn -e0n.cn japps.cn jchat.io -jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com -jsurvey.cn  jvoice.cn -kc9.cn -n0q.cn pushcfg.com -s0n.cn jiemian.comjiemian.com.cnjinrishici.com jinshuju.netjinshujucdn.com jsdelivr.net jsdelivr.com gifshow.com ksapisrv.com kuaishou.com -yximgs.com!log-sdk.gifshow.com -@adswlog.kuaishou.com -@ads  lagou.com lgstatic.com -lancdn.comlandiannews.com  wsoso.com -liepin.com -lietou.comlietou-static.com mafengwo.cn mafengwo.com mafengwo.net  meitu.com meitudata.com dianping.com -maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com flyme.cn meizu.cn  meizu.com  mzres.com 126.com 126.link 126.net 127.net 163.com163industry.com 163mail.com 163qiyukf.com -163yun.com 166.net -haowu.linkicourse163.org  kaola.com -lofter.com  nease.netnetease-inc.com netease.com -netease.im -qiyukf.com ydstatic.com yeah.net -youdao.com g.163.com -@ads oneplus.com -oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com coloros.com finzfin.com h2os.com -heytap.com heytapcs.comheytapdownload.comheytapimage.com -myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobi  oppoer.meoppomobile.com oppopay.com opposhop.cn -realme.com realmebbs.comrealmemobile.com -pddpic.com pinduoduo.com yangkeduo.com  pplive.cn -pplive.com pptv.com -360.cn 360.com -360-jr.com 360chou.com360daikuan.com360huzhubao.com -360jie.com360jinrong.net -360kan.com 360kuai.com  360os.com 360safe.com 360shouji.com 360taojin.com 360tpcdn.com360webcache.com  haoso.com -haosou.com haosou.com.cn -haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com qihucdn.com  qihoo.com qikucdn.com -so.com sou.com xjietiao.com 6655.com cooldock.com -ithome.com lapin365.com ruanmei.com -saayaa.com win7china.com win8china.comsf-tech.com.cnsf-express.com  sfacg.com  97973.com sina.com -sinaimg.cn sina.com.cn  sinajs.cn sina.cn sinaapp.com sinaedge.com sinaimg.com -sinajs.com  weibo.com weibo.com.cn weibo.cn weibocdn.com 2016.sina.cn -@adsad.sina.com.cn -@adsadbox.sina.com.cn -@ads"adimages.sina.com.hk -@ads"adimg.mobile.sina.cn -@ads!adimg.uve.weibo.com -@ads"adm.leju.sina.com.cn -@ads ads.sina.com -@adsalitui.weibo.com -@adsapi.apps.sina.cn -@ads!appgift.sinaapp.com -@ads$appsupdate.sinaapp.com -@ads atm.sina.com -@ads beacon.sina.com.cn -@ads biz.weibo.com -@adsc.biz.weibo.com -@ads"c.wcpt.biz.weibo.com -@ads&click.uve.mobile.sina.cn -@ads!click.uve.weibo.com -@adscm.dmp.sina.cn -@ads1#contentrecommend-out.mobile.sina.cn -@ads%count.video.sina.com.cn -@ads!counter.sina.com.cn -@adscre.dp.sina.cn -@adscre-dp.sina.cn -@adsd00.sina.com.cn -@adsdcads.sina.com.cn -@adsdl.kjava.sina.cn -@ads dmp.sina.cn -@adsdp.im.weibo.cn -@ads game.weibo.cn -@adsgame.weibo.com -@ads#gw5.push.mcp.weibo.cn -@ads#gw6.push.mcp.weibo.cn -@ads#img.adbox.sina.com.cn -@ads$img.amp.ad.sina.com.cn -@ads#int.dpool.sina.com.cn -@ads&interest.mix.sina.com.cn -@ads*log.interest.mix.sina.com.cn -@ads!log.mix.sina.com.cn -@ads log.sina.cn -@ads"m.beacon.sina.com.cn -@adsm.game.weibo.cn -@ads"mg.games.sina.com.cn -@ads"motu.p4p.sina.com.cn -@ads newspush.sinajs.cn -@ads!oascentral.sina.com -@ads$oascentral.sina.com.hk -@adsp4p.sina.com.cn -@adspalmnews.sina.cn -@ads pay.mobile.sina.cn -@adspfp.sina.com.cn -@adspfpip.sina.com -@ads"promote.biz.weibo.cn -@ads r.dmp.sina.cn -@adsrm.sina.com.cn -@ads rs.sinajs.cn -@ads s.alitui.weibo.com -@ads#s.img.mix.sina.com.cn -@ads sapi.sina.cn -@ads sax.sina.cn -@adssax.sina.com.cn -@adssaxn.sina.com.cn -@adssaxs.sina.com.cn -@ads!sbeacon.sina.com.cn -@ads#sdkapp.mobile.sina.cn -@ads"sdkapp.uve.weibo.com -@ads%sdkclick.mobile.sina.cn -@ads slog.sina.cn -@adsslog.sina.com.cn -@ads(staticadm.leju.sina.com.cn -@adstjs.sjs.sinajs.cn -@ads#trends.mobile.sina.cn -@ads#u1.img.mobile.sina.cn -@ads'wapwbclick.mobile.sina.cn -@ads"wbapp.mobile.sina.cn -@ads!wbapp.uve.weibo.com -@ads$wbclick.mobile.sina.cn -@ads%wbpctips.mobile.sina.cn -@adswidget.weibo.com -@ads!woocall.sina.com.cn -@adszc.biz.weibo.com -@ads zymo.mps.weibo.com -@ads -go2map.com sogo.com  sogou.com sogoucdn.com saraba1st.com cnsuning.com -suning.comsuningcloud.comsuningestate.comsuningholdings.com -tapimg.com -taptap.comteambition.comteambition.net +@ads + + +FANHAODIANfanhaodian.com + +LINUX  linux.org +( +WASHINGTONPOSTwashingtonpost.com +  + WIKIMEDIA mediawiki.org wikibooks.org wikidata.orgwikimediafoundation.org wikimedia.org wikinews.org wikipedia.org wikiquote.orgwikisource.orgwikiversity.orgwikivoyage.orgwiktionary.orgwmfusercontent.org +w.wiki +¤ +YOUTUBE ggpht.cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com youtube.comyoutubeeducation.comyoutubegaming.comyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.com +’ +CNN cnn.com +cnn.io cnnarabic.com cnnlabs.com cnnmoney.ch cnnmoney.comcnnmoneystream.comcnnpolitics.com + +MEDIUM +medium.com + +REMIREPO remirepo.net +ã +TENCENT apcdns.net foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn imqq.com  myapp.com myqcloud.com qcloud.com qcloudimg.com qlogo.cn qpic.cn qq.com @@ -1189,184 +1353,26 @@ weiyun.com ad.qq.com @ads mtrace.qq.com @ads push.qq.com @ads pgdt.gtimg.cn -@ads tiancity.comtiancitycdn.com -tipdim.org tmtpost.com chaindd.com -72whys.com checkzeit.com -tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com 40017.cn -17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com -ly.com  umeng.comwhalecloud.com umtrack.com  umsns.com -uyunad.comumengcloud.com mobmore.comalog.umeng.com -@ads!alog.umengcloud.com -@ads  95516.com unionpay.comunionpayintl.comunionpaysecure.comwanfangdata.com.cn -mi.com -mi-img.com  mifile.cn miui.com -miwifi.com  xiaomi.cn -xiaomi.com -xiaomi.netxiaomiyoupin.comdanjuanfunds.com -xueqiu.com  00cdn.com  88cdn.com -sandai.netthunderurl.com -xunlei.com ynet.com.cn ynet.com 0880.com ynet.cn -kumiao.com  youku.com  ykimg.com -mmstat.com soku.com -cibntv.net -youzan.com yzcdn.cn youzanyun.com yfcache.com yfcloud.com  yfp2p.net yunfancdn.com  zhihu.com  zhimg.com zhihuishu.com  ksyun.com ksyungslb.com ourdvsss.com abchina.com -boc.cn  whccb.com moji.com mojichina.com -055110.com 100offer.com  11467.com -114chn.com 115.com 123juzi.com 123juzi.net 123u.com 16rd.com  17173.com 178.com 178linux.com  17cdn.com 188.com 1905.com  19yxw.com  1ting.com 21cn.com 2265.com 2288.org 2345.com 258.com 263.net 289.com 2cto.com 3234.com 3322.org -35.com -360doc.com  360jq.com 360zhyx.com -365dmp.com 36kr.com 3733.com -39.net 3conline.com 3dmgame.com -3elife.net 4paradigm.com 500d.me -50bang.org 51.la 51credit.com  51cto.com 51eshop.com51jingying.com 51wendang.com  51yes.com  52hxw.com -52miji.com 52z.com 53kf.com -55.com 5577.com  55bbs.com 5fun.com 5you.com -6rooms.com 71.am 714.com -72byte.com  7down.com 7k7k.com  7moor.com -7x24cc.com  8686c.com  88cdn.com -900.la 91danji.com 91yunxiao.com 962.net 9718.com 998.com 999d.com 9xu.com -aardio.com -adxvip.com agrantsem.com  aicdn.com  aiemy.com  aiops.comairchangan.com airguilin.com aiyunxiao.com -aizhan.com -ali213.netalittle-tea.com -allyes.com -anquan.org -anruan.com -antutu.com -appinn.com babytree.combabytreeimg.com baidufree.combaifendian.com  baihe.com  baike.com baixing.com baixing.netbangongziyuan.com bankcomm.combankofchina.com baomitu.com bcy.net bearychat.com  benmi.com biancheng.net biddingx.com bihu.com bio-equip.com -bio360.net  bio4p.combiodiscover.com bitauto.combitautoimg.com bjcathay.com bobo.com -bokecc.com bootcss.com btcfans.com btgtravel.com bthhotels.com -caixin.com -caiyun.com caiyunapp.com -carnoc.com ccb.com cctv.com cctvpic.com  cdn20.com cebbank.com  cecdc.com cecport.com -ch.com chashebao.com -che168.com  china.comchinacache.comchinacache.net chinafph.com chinanews.com chinapay.comchinapubmed.netchinatranslation.net -chinaz.com -chinaz.net chiphell.comchongdiantou.com -chouti.com chuangxin.com chuansong.mechuansongme.com chuyu.me  city8.com clouddn.com cloudxns.com cmbchina.com cn.bing.com cnanzhi.com -cnbeta.com cnbetacdn.com cnblogs.com -cnepub.com  cnfol.com  cnlaw.net cnstock.com cnzz.com code666.com  cpppf.org  cqvip.com  csbew.com csslcloud.net -ctfile.com ctoutiao.com  ctsbw.com -cubead.com -cyagen.com cyol.com cztv.com cztvcloud.com  dajie.com dajieimg.com dangdang.com -danji6.com daocloud.io daovoice.io  dbank.com -dcdkjx.com dedecms.com develenv.com  dgtle.com diandian.comdiandianqi.comdidichuxing.comdingxiang-inc.com -diopic.net diyiyou.com  docin.com dockerone.com -dockone.io dogedoge.com -donews.com dopa.com -douban.com  douban.fm doubanio.com -downyi.com -dpfile.com -dui.ai duiopen.com duoduocdn.com duokanbox.com -duomai.com duoshuo.com -duowan.com dxpmedia.com -dxycdn.com eastday.com -eayyou.com  ebrun.com -ecitic.com -edu.cn eeyy.com eflycloud.com emarbox.comeoeandroid.com excelhome.net expreview.com famulei.com  fanli.com fastapi.net feiniaomy.com feng.comfengkongcloud.com fengniao.comfengxian110.com  fenxi.com -fhldns.com  fimmu.com freebuf.com fugetech.com gamersky.com geekpark.net geetest.com geilicdn.com  getui.com -gezida.com gfan.com -giocdn.com  gitee.com gmallbio.com  gmz88.com  golue.com gree.com growingio.com  gtags.netguanhaobio.com  guigu.org  guokr.com -gwdang.comgxairlines.com gzwanju.com hackhome.com -hao123.com hao123img.com  haote.com  henha.com henkuai.com  hexun.com -heytea.com  hiido.com hitv.com hktheone.com hn-cbec.com  hnair.com hnyuyuhui.com hollycrm.com homeinns.comhongsanban.com hongxiu.com huanqiu.com hunantv.comhuochepiao.com  huxiu.com iask.com -ibaotu.com ichangtou.com  iciba.com idqqimg.com  ifeng.com ifengimg.com iflytek.com  igao7.com -iheima.com ijiandao.com ijinshan.com -ikafan.com im2maker.com  im-cc.com -imedao.com imgo.tv  imooc.com  infoq.cominfoqstatic.com -ip-cdn.com  ip138.com ipinyou.com ipip.net iranshao.com  irs01.com ishumei.com  it165.net  it168.com  it610.com  iteye.com -itjuzi.com iyunxiao.com -izuche.com -jandan.net jb51.com  jdair.net jia.com jianshu.com -jianshu.io jiasuhui.com jiasule.com jiathis.com jiayuan.comjikexueyuan.comjiqizhixin.com jisuanke.com jiuzhilan.com jmstatic.com jsbc.com -jsrdgg.com jstv.com  jumei.com  jyimg.com kaixin001.com -kanimg.com kankanews.com kanzhun.comkeboyunxiao.com  kejet.net kf5.com  kgimg.com -kimiss.com kingdee.com -kouclo.com -koudai.com koudai8.com  ksord.com ku6.com -ku6cdn.com -ku6img.com  kuaaa.com kuaizhan.com  kugou.com  kuqin.com lady8844.com  lascn.net  lawxp.com -le.com leanote.comleetcode-cn.com leikeji.com leiphone.com leju.com leturich.org letv.com letvcdn.com letvimg.com  liantu.meliaoxuefeng.com liba.com libaclub.com lightonus.com -likuso.com lingkou.com lixinger.com linkvans.com linuxidc.com liuxiaoer.com lkkbrand.com lrts.me -lu.com luckyair.net  lufax.com lufaxcdn.com -lvmama.comlvsexitong.com  lxdns.com  lxway.com -magedu.com -mamecn.com manmankan.com mayi.com -mayihr.com -mcbang.com mechina.org -mediav.com meika360.com meilishuo.com -meiqia.com meishij.net mgtv.com miaopai.com miaozhen.comminhangshi.com -mmbang.com mmbang.info moegirl.org mogu.com mogucdn.com mogujie.commoocollege.com mop.com -mscbsc.com mukewang.com -mydown.com mydrivers.com myshow360.net myyx618.com myzaker.com mzstatic.com naixuecha.com -newasp.netnewbandeng.com -ngabbs.com ngacn.cc nowcoder.com  nruan.com ntalker.com nvsheng.com  nzbdw.com oadz.com  oeeee.com -ol-cdn.com -ol-img.com -oneapm.comonlinedown.netonlinesjtu.com -opdown.com oray.com oschina.net -paipai.com -pcbeta.com -pchome.net pgzs.compharmacodia.com -pingan.compingplusplus.com pingwest.com -pingxx.com pintu360.com  pipaw.com  pipaw.net pptbest.com psbc.com -pubyun.com qbox.me qcc.com qcds.com qdmm.com qianjia.comqiaobutang.com qichacha.com -qidian.com -qie.tv qifeiye.comqijiayoudao.net qingcloud.comqingsongchou.com  qiniu.com qiniucdn.com qiniudn.com qiniudns.com qiumibao.com -qschou.com -qtmojo.com -qudong.com  qunar.com qunarzz.com readnovel.com -renren.comrenren-inc.com rfchost.com rtbasia.comruby-china.org -runoob.com sanguosha.com -sanwen.net  scdng.com scoregg.com -sczsxx.com sec-wiki.comsegmentfault.com -sencdn.com seniverse.comsenlinjimore.com shangzhibo.tv sharejs.com  sheui.com shmetro.com shrbank.comshuidichou.comshuidihuzhu.com -shutcm.com -simei8.com  smzdm.com  sobot.com softwhy.com sohu.com -sohucs.com -sojson.com soso.com  sspai.com ssports.com starbaby.cc starbaby.comstaticfile.org stockstar.com -sunrtb.com supermap.comsupermapcloud.com szfw.org szzfgjj.com t1y5.comtaihuoniao.com tanx.com -tao123.com tenxcloud.com  tgbus.comtianjimedia.comtianjin-air.com tietuku.com -tiexue.net timedoo.com tingyun.com tjjt360.com  tmcdn.net tom.com tongdun.net topthink.com travelsky.com trustutn.org  ttpod.com  tudou.com tudouui.com tuer123.com tuicool.com  tujia.com  tuniu.com tutuapp.com u.tools u17.com upaiyun.com  upyun.com urselect.comurumqi-air.com  useso.com uzzf.com  v5875.com vamaker.com  vancl.com vanclimg.com  vcimg.com veryzhun.com  vic18.com videojj.com  vijos.org vip.comwallstreetcn.comwangyangyang.vip wanwushuo.com  wanyx.com -wdjimg.com  weand.com webterren.com weicaifu.com weidian.comweilaiyunxiao.com weiphone.com weiphone.net weixing.com wishdown.com wonnder.com -wooyun.org worktile.com wrating.com -wscdns.com  wumii.comwuximediaglobal.com -xhscdn.comxiachufang.comxiaobaixitong.comxiaohongshu.com  xiaoka.tv xiaokaxiu.com  xiayx.com xinhuanet.comxinrenxinshi.com xinshipu.com xitu.com xiu8.com  xnpic.com -xsa239.comxuanchuanyi.com xuexicha.com xxsy.net  xycdn.com xywy.com -yaolan.com  yaoyl.com  yaozh.com  yccdn.com -yeepay.com  yesky.com yh31.com yhd.com  yigao.com yigoonet.com yihaodian.comyihaodianimg.com yikexue.com yinxiang.com yinyuetai.com yisu.com  yiwan.com yixi.tv yizhibo.com  yjbys.com  yunaq.com -youboy.com youke.co youshang.com youxihezi.net  youzu.com  ypppt.com  ysten.com -yuewen.com yunba.io yundaex.com yundasys.com -yundun.com yunshipei.com yunxiao.com yunzhijia.com  yupoo.com  yuzua.com -yy.com -yytcdn.com -zampda.net zampdsp.com zastatic.com -zbjimg.com -zdfans.com -zdmimg.com zhanzhang.net  zhanqi.tv zhaopin.com -zhenai.com  zhibo8.cc  zhidx.com -zhipin.com zhiziyun.com zhubajie.com zhugeapi.net zhugeio.com  zimuzu.io zixiaomao.com zixuntop.com  zjstv.com zmengzhu.com -zrblog.net zsxq.com  zuche.com zuchecdn.com zuidaima.com jindidata.comtianyancha.comzhuanxiandai.com -fm3838.comlarsonlimited.com runsheng.com vzuu.com -zoom3g.com -zoomyou.cn chaoxing.com chaoxing.cc -8 -DMM dmm.com  dmm.co.jpdmm-extension.com - -JS-ORG -js.org -. -NOTION  notion.sonotion-static.com -8 - KINGKONGLIVEkingkong.com.twkingkongapp.com -œ -TMTPOST tmtpost.com chaindd.com -72whys.com checkzeit.com -tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com -æ -SINA  97973.com sina.com -sinaimg.cn sina.com.cn  sinajs.cn sina.cn sinaapp.com sinaedge.com sinaimg.com -sinajs.com  weibo.com weibo.com.cn weibo.cn weibocdn.com 2016.sina.cn +@ads +: + ENTERMEDIADBentermediadb.netentermediadb.org +' + MIXPANEL-ADSdecide.mixpanel.com + +STUNNEL stunnel.org +" + THEPORNDUDEtheporndude.com + +WHO who.int +0 + COWTRANSFER c-t.workcowtransfer.com +  +ORACLE +oracle +oracle.comoraclecloud.comoraclefoundation.org oracleimg.comateam-oracle.com +bronto.comcovid19-rx.org covid19rx.org sun.com addthis.comaddthiscdn.comaddthisedge.comjava java.com java.net +‹ +SINA-ADS 2016.sina.cn @adsad.sina.com.cn @adsadbox.sina.com.cn @ads"adimages.sina.com.hk @@ -1450,383 +1456,207 @@ sinajs.com  weibo.com weibo.com.cn weibo.cn weibocdn.com @adszc.biz.weibo.com @ads zymo.mps.weibo.com @ads - -TWISTERtwister.net.co -. -XDAxda-developers.com xda-cdn.com -/ -ADDTHIS addthis.comaddthisedge.com -‡ -NVIDIA geforce.com -nvidia.com nvidia.co.jp geforce.co.kr nvidia.co.krgeforce.com.tw nvidia.com.tw - -OPENVPN openvpn.net -3 -PPTV  pplive.cn -pplive.com pptv.com -? -SHOPIFY shopify.com shopify.devshopifysvc.com - -XDTY xdty.org -] -BUYPASSbuypass-ssl.com buypass.com -buypass.no -buypass.se minid.no -& -CLEARBITJS-ADSx.clearbitjs.com -Ð -OPPO coloros.com finzfin.com h2os.com -heytap.com heytapcs.comheytapdownload.comheytapimage.com -myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobi  oppoer.meoppomobile.com oppopay.com opposhop.cn -realme.com realmebbs.comrealmemobile.com -I -PYTHON -python.orgpythonhosted.org pypa.io pypi.org : SOFTETHER softether.orgsoftether-download.com -C -GITBOOK gitbook.com -gitbook.iogitbook.zendesk.com - - -NODESOURCEnodesource.com - - WIRESHARK wireshark.org -¤ -YOUTUBE ggpht.cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com youtube.comyoutubeeducation.comyoutubegaming.comyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.com -R -51JOB  51job.com 51jobcdn.comyingjiesheng.comzhiding.com.cn - -DENO  deno.land -„ -MDNdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud -Š -TELEGRAMt.me tdesktop.com -telegra.ph -telesco.pe telegram.me telegram.org telegram.dog  graph.org - -91PORN -91porn.com -i -ARCHIVEOFOUROWN ao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net -û -CATEGORY-ANTICENSORSHIP ahmia.fi akasha.worldbrowserleaks.combypasscensorship.org citizenlab.cadat.foundationdemocracy.earth eff.orgepicbrowser.com ffprofile.comfreenetproject.org fteproxy.org  gfw.press -gfw.report greatfire.orgguardianproject.infohaveibeenpwned.compwnedpasswords.com -geti2p.net ipfs.io  jitsi.orggetlantern.org -lantern.io  ntc.partyonionshare.org ooni.org openvpn.netprivacytools.io psiphon3.comshadowsocks.org softether.orgsoftether-download.com stunnel.org telex.cctorproject.org tribler.org tunsafe.comtwister.net.co -uproxy.org  v2ray.com -v2ray.cool  v2fly.org vuvuzela.io -whonix.org wikileaks.org wireguard.com -zeronet.io -º -GITHUB -git.io github.blog -github.comgithub.community  github.io githubapp.comgithubassets.comgithubstatus.comgithubusercontent.com atom.io/+github-avatars.oss-cn-hongkong.aliyuncs.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.com - -IUS -ius.io - -DW -dw.com -% -FONTS  fonts.com  fonts.net -d - JUSTMYSOCKSjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net -. -NETLIFY netlify.combitballoon.com - -HK01 hk01.com +1 + STACKPATH stackpath.com stackpath.dev +- +SURFLITE surflite.co surflite.net +n +TWITCH ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net +0 +OPENWRT openwrt.orglede-project.org + +RIXCLOUD rixcloud.com +@ +YNET ynet.com.cn ynet.com 0880.com ynet.cn +¡ + BYTEDANCE +bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.com +douyin.com huaxiong.comjokecommunity.comneihanshequ.com +pstatp.com +snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com +wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com +ixigua.com ixgvideo.com  365yg.com +‘ + STARBUCKS starbucks.castarbucks.co.uk starbucks.comstarbucks.com.cn starbucks.de starbucks.fr starbucks.ie +ô +VERISIGN verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.com +9 +YOUZAN +youzan.com yzcdn.cn youzanyun.com +$ +AFP afp.com afpforum.com  -NETFLAV netflav.com -< -VIMEO  vimeo.com vimeocdn.comlivestream.com -, -ACPLAY -acplay.netdandanplay.com +MARIADB mariadb.org  - BITWARDEN bitwarden.com + ZEROHEDGE zerohedge.com +( +GLOBALSECURITYglobalsecurity.org J FLICKR flickr flickr.com flickr.netstaticflickr.com -) -NPMJS  npmjs.com npm.community -% -ZHIHU  zhihu.com  zhimg.com - - -CITIZENLAB citizenlab.ca -_ -FEDORA getfedora.orgfedoraforum.orgfedoraproject.orgfedoramagazine.org - -KALI kali.org - -OSDN osdn.net - -REMIREPO remirepo.net -4 - -SF-EXPRESSsf-tech.com.cnsf-express.com - -ZERONET -zeronet.io -‰ - -APPLEDAILYappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk -atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com -„ -DEDAO biji.com -ddmogo.com -igetget.cn igetget.com luojilab.com  mogoo.com -sao.cn saolife.com -) -MEITU  meitu.com meitudata.com -- -MYRADIO -myradio.hkmyradio.com.hk +1 +GODADDY godaddy.comx.co godaddy +z +LINE +lin.ee line.me line.naver.jp line-apps.com line-cdn.net line-scdn.net +nhncorp.jp +® +OUPamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com +ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.com + +RFA rfa.org + + BITWARDEN bitwarden.com + +ISGD is.gdv.gd +‘ +SAMSUNG samsung +xn--cg4bkigalaxyappstore.comgalaxymobile.jpgame-platform.net knoxemm.com samsung.comsamsungapps.comsamsungcloud.com samsungdm.comsamsunggalaxyfriends.comsamsungknox.comsamsungqbe.com H - YAHOO-ADS ads.yahoo.com -@adsgemini.yahoo.com -@ads +BTTZYW +btt804.com +btt904.com +bttzyw.com +bttzyw.net +. +JIEMIAN jiemian.comjiemian.com.cn +Ì +NETFLIX fast.com +netflix.ca netflix.com netflix.netnetflixinvestor.com nflxext.com nflximg.com nflximg.netnflxsearch.net +nflxso.net nflxvideo.net + + TRUSTWAVE trustwave.com +7 + FONTAWESOMEfontawesome.comfortawesome.com + +DW +dw.com +/ +FASTLANE fastlane.cifastlane.tools  -FTEPROXY fteproxy.org -" - HUBBLEPHONEhubblephone.com -* -PAGECDN pagecdn.com -pagecdn.io -F -SOGOU -go2map.com sogo.com  sogou.com sogoucdn.com - - -LANDOFHOPE landofhope.tv +GRAVATAR gravatar.com  -TIPDM -tipdim.org -* -BOXUN  boxun.combowenpress.com - -GENTOO -gentoo.org - -TELEX telex.cc - -AP -ap.org -apnews.com -" - SHADOWSOCKSshadowsocks.org +HOMEBREW brew.sh  -AMYTELE amytele.com +PATREON patreon.com +. +CHINADIGITALTIMESchinadigitaltimes.net + +FIREFOX firefox.com É GOOGLE-SCHOLARscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk -. -SCALAscala-lang.org scala-sbt.org + +PSIPHON psiphon3.com + + SPEEDTEST  cdnst.net cellmaps.com ekahau.cloud +ekahau.com  ookla.com pingtest.net speedtest.co speedtest.netspeedtestcustom.com webtest.netPB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +@ads +¡ +AMAZON +amazon.com amazon.com.au amazon.co.uk amazon.co.jp  amazon.de  amazon.jp amazon.jobsamazontrust.com amzn.commedia-amazon.comssl-images-amazon.com amazonaws.comamplifyapp.com awsstatic.com awstrust.comcloudfront.netelasticbeanstalk.comamazonvideo.comprimevideo.comaws!amazon-adsystem.com +@ads + + INOREADER inoreader.com +? +LIEPIN +liepin.com +lietou.comlietou-static.com + + +NODESOURCEnodesource.com +S +PORNHUB +phncdn.com phprcdn.com pornhub.compornhubpremium.com  -EPORNER eporner.com - -MOOV moov.hk - -CENTOS -centos.org +FREEBSD freebsd.org +F + IDENTRUST identrust.comidentrust.co.uk identrust.net + +JITSI  jitsi.org +½ +RARBG rarbg.me rarbg.to rarbg.israrbgaccess.org rarbggo.orgrarbgmirror.comrarbgmirror.orgrarbgproxy.org rarbgprx.orgrarbgunblock.com +­ +CATEGORY-SCHOLAR-!CN apa.orgpsyccareers.com cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.orgnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.com doi.org doi.infoengineeringvillage.com +scopus.comscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.skmit mit.edu mit.netmitpressjournals.orgamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com +ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.comsciencedirect.comsciencedirectassets.com +apress.com springer.comspringerlink.comspringernature.com tandf.co.uktaylorandfrancis.comtaylorfrancis.comtaylorandfrancis.com +aclweb.org acm.organalytictech.comannualreviews.org  arxiv.org asha.org berkeley.edu biorxiv.org  brill.com cell.comcomputingreviews.com degruyter.comdentalhypotheses.comelifesciences.orgfrontiersin.org hindawi.com ieee.orgisca-speech.org jmlr.org jneurosci.org  jstor.org mdpi.com +nature.com nejm.org neurology.org ovid.com  peerj.comphysiology.org plos.org pnas.org princeton.eduresearchgate.netroutledgehandbooks.comroyalsocietypublishing.org sagepub.comscholarpedia.orgsciencemag.orgscientificamerican.com scitation.orgspiedigitallibrary.orgstatsmakemecry.com thelancet.com uchicago.edu ucla.edu  umass.edu  wiley.com yale.edu + +ELIXIRelixir-lang.org +P +REDDIT +reddit.comredditstatic.comredditmedia.com redd.it + +REDTUBE redtube.com +9 +SHADOWSOCKSCOMshadowsocks.comshadowsocks.nl ++ +TYPEKIT typekit.com typekit.net + +UNPKG  unpkg.com +< +VIMEO  vimeo.com vimeocdn.comlivestream.com +' +CODING  coding.me +coding.net  CYGWIN cygwin.com -· -NETFLIX btstatic.com -netflix.ca netflix.com netflix.net nflxext.com nflximg.com nflximg.netnflxsearch.net -nflxso.net nflxvideo.net -P -PUBMATIC pubmatic.compubmatic.co.jpads.pubmatic.com -@ads -† -SECTIGO sectigo.comenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.com -1 -TIANCITY tiancity.comtiancitycdn.com - -WHO who.int -E -WIX wix.com  wixmp.com wixsite.com wixstatic.com - -CLOJURE clojure.org -# - DATFOUNDATIONdat.foundation +g +BESTBUY bestbuy.combestbuy.com.mx +bestbuy.cabestbuy-jobs.com bbystatic.com +% +HUPU hupu.com hupucdn.com + +JUPYTER jupyter.org +‡ +BILIBILI +acg.tv acgvideo.com +b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com  hdslb.com im9.com +mincdn.com$ upos-hz-mirrorakam.akamaized.net  MUNCLOUD muncloud.dog -m -SUNING cnsuning.com -suning.comsuningcloud.comsuningestate.comsuningholdings.com - - -REALVISIONrealvision.com -ã -TENCENT -apcdns.net foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn imqq.com  myapp.com myqcloud.com -qcloud.com qcloudimg.com qlogo.cn qpic.cn -qq.com -qqmail.com  qzone.comservicewechat.com smtcdns.com -tencent.cn tencent.comtencent.com.cntencent.com.hktencent.net.cntencent-cloud.comtencentmusic.comtencentyun.com -tenpay.com -wechat.com -wegame.com -weiyun.com ad.qq.com -@ads ad.qun.qq.com -@ads"adfilter.imtt.qq.com -@ads adping.qq.com -@adsadpm.app.qq.com -@adsadsclick.qq.com -@adsadsfile.qq.com -@adsadshmmsg.qq.com -@adsadslvfile.qq.com -@adsadslvseed.qq.com -@ads&adsmind.apdcdn.tc.qq.com -@adsadsqqclick.qq.com -@ads adstestview.qq.com -@adsadsview.qq.com -@adsadsview2.qq.com -@adsadv.app.qq.com -@ads adver.qq.com -@ads btrace.qq.com -@adse.qq.com -@adslog.tbs.qq.com -@ads mpush.qq.com -@ads mtrace.qq.com -@ads push.qq.com -@ads pgdt.gtimg.cn -@ads - -YARNPKG yarnpkg.com -> - YYETS-ADS cvnad.com -@ads -iyoowi.com -@ads - -FOX fox.com foxnews.comfoxbusiness.com -foxdcg.com -uplynk.comtheplatform.com foxnewsplayer-a.akamaihd.net - -GCORES -gcores.com -= -LANDIAN -lancdn.comlandiannews.com  wsoso.com - -WTO wto.org -, -BANDCAMP bandcamp.com -bcbits.com - -SQLITE -sqlite.org -U - UNITY-ADS"unityads.unity3d.com -@ads$unityads.unitychina.cn -@ads - -VIU viu.com -viu.tv - -WEBFLOW webflow.com -( -DEBIAN -debian.org -dotdeb.org - -KERNEL -kernel.org - -MINGW  mingw.org -* -TELEKOM telekom.com -telekom.de -q -UNITY  unity.com unity3d.com"unityads.unity3d.com -@ads$unityads.unitychina.cn -@ads - -CNKI cnki.net - - PACKAGIST packagist.org - -WEVERSE -weverse.io -. -JIEMIAN jiemian.comjiemian.com.cn -( -LTN -ltn.com.tw yes123.com.tw - -STEEMIT steemit.com +† +GOLANG go-lang.com go-lang.net go-lang.org +go.dev  godoc.org +golang.com +golang.net +golang.org  -BIGHEAD bighead.group -F - -DEVIANTARTdeviantart.comdeviantart.net da-files.com -­ -HBO cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk -hbomax.com -hbonow.com  maxgo.com -Þ -HEROKU  heroku.co -heroku.com  heroku.me herokuapp.com herokucdn.comherokucharge.com herokussl.comheroku-app.comheroku-charge.com codei.sh -codeish.co -codeish.io -H -HULU hulu.com -huluim.comhulustream.com -huluad.com - -UNWIRE  unwire.hk - -ELREPO -elrepo.org +EVERNOTE evernote.com +V + JETBRAINS jetbrains.com jetbrains.net datalore.iokotlinlang.org +À +SHOPEE shopee.co.id shopee.co.th +shopee.com shopee.com.br shopee.com.my  shopee.ph  shopee.sg  shopee.tw  shopee.vnshopeemobile.com +shp.ee H -BTTZYW -btt804.com -btt904.com -bttzyw.com -bttzyw.net - -WINDY  windy.com - -JAVBUS -javbus.com -z -LINE -lin.ee line.me line.naver.jp line-apps.com line-cdn.net line-scdn.net -nhncorp.jp -< -SHOWTIMEANYTIMEshowtimeanytime.com showtime.com -9 - SQUIRRELVPNsquirrelvpn.comsquirrelgroup.net -g -BESTBUY bestbuy.combestbuy.com.mx -bestbuy.cabestbuy-jobs.com bbystatic.com -@ - GLOBALVOICESglobalvoices.orgglobalvoicesonline.org -~ -HUAWEI hicloud.com hihonor.com honor.cn -huawei.comhuaweicloud.com  vmall.com vmallres.com -" -LIHKG -lih.kg  lihkg.com - -UPROXY -uproxy.org - -PCRE pcre.org - -SIGNAL -signal.org -L - UMENG-ADSalog.umeng.com -@ads!alog.umengcloud.com + YAHOO-ADS ads.yahoo.com +@adsgemini.yahoo.com @ads -¶ - ALIBABA-ADS a.alimama.cn + +CUTTLY cutt.ly +$ + BROWSERLEAKSbrowserleaks.com +( +CAIJINGLENGYANcaijinglengyan.com +§Ô +CNcn citic baidu +unicomsohu +xn--fiqs8s +xn--fiqz9s xn--1qqw23a xn--xhq521b xn--8y0a063a xn--6frz82g +xn--fiq64b xn--estv75g xn--vuq861b xn--zfr164b 3304399.net 4399.com 4399api.com 4399dmw.com +4399er.com4399youpai.com 5054399.com img4399.com  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn +58.com  58.com.cn 5858.com  58che.com 58xueche.com +anjuke.comanjukestatic.com chinahr.com +daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com acfun.cn aixifan.com!apilog-web.acfun.cn +@ads +acplay.netdandanplay.com a.alimama.cn @adsacjs.aliyun.com @ads adash.m.taobao.com @ads"adashbc.m.taobao.com @@ -1915,110 +1745,48 @@ g.tbcdn.cn @adsuserimg.qunar.com @adsw.m.taobao.com @adsyiliao.hupan.com -@ads - -ATOM atom.io -ù -CATEGORY-ADS-ALLadvertserve.com httpool.com mgid.com -unimhk.com taboola.com!apilog-web.acfun.cn -@ads adcolony.com -@ads a.alimama.cn -@adsacjs.aliyun.com -@ads adash.m.taobao.com -@ads"adashbc.m.taobao.com -@ads#adashbc.ut.taobao.com -@ads#adash-c.ut.taobao.com -@ads!adashx.m.taobao.com -@ads%adashx4ae.ut.taobao.com -@ads$adashx4yt.m.taobao.com -@ads$adashxgc.ut.taobao.com -@adsadsh.m.taobao.com -@adsafp.adchina.com -@adsafp.alicdn.com -@ads!agoodm.m.taobao.com -@ads$agoodm.wapa.taobao.com -@ads alipaylog.com -@adsamdc.alipay.com -@adsamdc.m.taobao.com -@ads!api.wapa.taobao.com -@ads$api.waptest.taobao.com -@ads apoll.m.taobao.com -@ads$appdownload.alicdn.com -@adsatanx.alicdn.com -@adsatanx2.alicdn.com -@adscbu01.alicdn.com -@adscdn0.mobmore.com -@adsclick.aliyun.com -@ads'click.mz.simba.taobao.com -@adscm.ipinyou.com -@ads cm.mlt01.com -@ads"dsp.simba.taobao.com -@adserr.taobao.com -@adsex.mobmore.com -@ads ex.puata.info -@ads"fav.simba.taobao.com -@ads%feedback.whalecloud.com -@adsff.win.taobao.com -@ads fm.p0y.cn -@ads g.click.taobao.com -@ads -g.tbcdn.cn -@adsgma.alicdn.com -@adsgtms01.alicdn.com -@adsgtms02.alicdn.com -@adsgtms03.alicdn.com -@adsgtms04.alicdn.com -@adshydra.alibaba.com -@ads(hz.pre.tbusergw.taobao.net -@ads$hz.tbusergw.taobao.net -@ads i.ipinyou.com -@adsinit.phpwind.com -@ads"intl.wapa.taobao.com -@ads%intl.waptest.taobao.com -@ads#jxlog.istreamsche.com -@adslog.umtrack.com -@adsm.intl.taobao.com -@ads m.simba.taobao.com -@ads match.p4p.1688.com -@ads&material.istreamsche.com -@ads mlt01.com -@ads'nbsdk-baichuan.alicdn.com -@ads'nbsdk-baichuan.taobao.com -@ads#osfota.cdn.aliyun.com -@ads!osupdate.aliyun.com -@ads'osupdateservice.yunos.com -@ads&pindao.huoban.taobao.com -@ads push.wandoujia.com -@adsre.m.taobao.com -@ads re.taobao.com -@ads'redirect.simba.taobao.com -@adsrj.m.taobao.co -@adsrj.m.taobao.com -@ads sdkinit.taobao.com -@ads show.re.taobao.com -@adssimaba.taobao.com -@ads simba.m.taobao.com -@ads"srd.simba.taobao.com -@adsstats.ipinyou.com -@ads!strip.taobaocdn.com -@ads%tanxlog.istreamsche.com -@adstejia.taobao.com -@adstemai.taobao.com -@ads"tns.simba.taobao.com -@ads!tongji.linezing.com -@ads!tvupgrade.yunos.com -@adstyh.taobao.com -@adsuserimg.qunar.com -@adsw.m.taobao.com -@adsyiliao.hupan.com -@ads!amazon-adsystem.com -@adsiadsdk.apple.com -@ads iad.apple.com -@ads qwapi.com -@ads applovin.com -@ads -applvn.com -@ads a.baidu.com +@adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com +alicdn.com alidayu.com +alidns.comaliyun-inc.comaliyun-iot-share.com +aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.toteambition.comteambition.netteambitionapis.com mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com +uyunad.comwhalecloud.comalog.umeng.com +@ads!alog.umengcloud.com +@ads 25pp.com  56che.com  95095.com 9game.cn +aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.comaliexpress.com alifanyi.comalihealth.com.cn alihealth.hk +aliimg.com +alikmd.com alimama.com alimebot.com +alimei.com alios.cn +alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com +aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn +asczwa.comasczxcefsv.com +asmlink.cn atatech.org +b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com +dfkhgj.com doctoryou.ai doctoryou.cn dongting.com +dratio.com emas-poc.com +gongyi.xin ialicdn.com iconfont.cn +ics.design +jhgtgb.com +kanbox.com +lazada.comliangxinyao.com m-now.cn +maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com +zuodao.com sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com +hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com +mashort.cn pailitao.com +taobao.com +taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmalltv.com tmjl.ai alitrip.com  feizhu.cn +feizhu.com +fliggy.com  fliggy.hk +iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net +91.com +aipage.com apollo.auto baidu.cn  baidu.com baidubce.combaiducontent.com baidupcs.combaidustatic.com +baifae.com baifubao.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn +bdydns.net chuanke.com  dlnel.com  dlnel.org +duapps.com +dwz.cn +hao123.com hao123img.com +hao222.com +haokan.com jomocdn.net jomodns.com +mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com a.baidu.com @ads ad.duapps.com @ads!ad.player.baidu.com @ads adm.baidu.com @@ -2179,27 +1947,43 @@ applvn.com @adsznsv.baidu.com @adszz.bdstatic.com @adszzy1.quyaoya.com -@adsx.clearbitjs.com bluekai.com -@adsfout.jp -@ads gmossp-sp.jp -@adsi-mobile.co.jp -@ads im-apps.net -@ads impact-ad.jp -@ads ladsp.com -@ads microad.co.jp -@ads -microad.jp -@ads socdm.com -@adsdata.flurry.com  admob.com adsense.comadservice.google.comadvertisercommunity.comadvertiserscommunity.comadwords-community.com adwords.comadwordsexpress.comapp-measurement.comclickserver.googleads.comdoubleclick.comdoubleclick.netgoogle-analytics.comgoogleadapis.comgoogleadservices.comgoogleanalytics.comgoogleoptimize.comgooglesyndication.comgoogletagmanager.comgoogletagservices.comgoogletraveladservices.com -urchin.comclick.hunantv.com -@adsda.hunantv.com -@ads da.mgtv.com -@adslog.hunantv.com -@ads log.v2.hunantv.com -@adsres.hunantv.com -@ads v2.log.hunantv.com -@adsinner-active.mobi -@adsa.ckm.iqiyi.com +@ads +acg.tv acgvideo.com +b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com  hdslb.com im9.com +mincdn.com$ upos-hz-mirrorakam.akamaized.net +bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.com +douyin.com huaxiong.comjokecommunity.comneihanshequ.com +pstatp.com +snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com +wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com +ixigua.com ixgvideo.com  365yg.com +csdl.ac.cn  las.ac.cn 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn +cmvideo.cn miguvideo.com andfx.cn  andfx.net +cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com +ctexcel.ca ctexcel.comctexcel.com.hk +ctexcel.fr +ctexcel.us +189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com +chntel.com  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn cnki.net  coding.me +coding.net coolapk.comcoolapkmarket.comcoolapkmarket.net c-t.workcowtransfer.com csdn.net +csdnimg.cn c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn +skysea.com  suanya.cn +suanya.com +tieyou.com +toptown.cn toursbms.com trip.com tripcdn.com +vipdlt.com biji.com +ddmogo.com +igetget.cn igetget.com luojilab.com  mogoo.com +sao.cn saolife.com douyu.tv  douyu.com douyucdn.cn douyuscdn.com douyutv.com +ele.me elemecdn.com eleme.cn erji.net  ganji.comganjistatic1.com +gcores.com gitv.cn gitv.tv hicloud.com hihonor.com honor.cn +huawei.comhuaweicloud.com  vmall.com vmallres.com hupu.com hupucdn.com huya.com msstatic.com coolbuy.com  ifanr.com ifanr.inifanrusercontent.com +ifanrx.com +minapp.com 71.am  iqiyi.com iqiyipic.com +pps.tv +ppsimg.com qiyi.com qiyipic.com +qy.net +71edge.coma.ckm.iqiyi.com @adsad.m.iqiyi.com @ads afp.iqiyi.com @adsc.uaa.iqiyi.com @@ -2216,36 +2000,69 @@ urchin.comclick.hunantv.com @ads!msg2.video.qiyi.com @ads$policy.video.iqiyi.com @adsyuedu.iqiyi.com -@adsads.union.jd.com +@ads3.cn  300hu.com +360buy.com 360buyimg.com +360top.com +7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn +dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com +jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com +jd-app.com  jd-ex.com jd.cn jd.co.th +jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com +jingxi.com +jkcsjd.com +joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn +paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com +vg.com wangyin.com  wdfok.com yhd.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com @ads c-nfa.jd.com @adscps.360buy.com @ads jzt.jd.com @ads stat.m.jd.com @ads img-x.jd.com -@ads!log-sdk.gifshow.com +@ads +42r.cn +5566ua.com aurorapush.cn +e0n.cn japps.cn jchat.io +jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com +jsurvey.cn  jvoice.cn +kc9.cn +n0q.cn pushcfg.com +s0n.cn jiemian.comjiemian.com.cnjinrishici.com jinshuju.netjinshujucdn.com jsdelivr.net jsdelivr.com gifshow.com ksapisrv.com kuaishou.com +yximgs.com!log-sdk.gifshow.com @adswlog.kuaishou.com -@ads$api.game.letvstore.com -@ads ark.letv.com -@ads dc.letv.com -@adsdev.dc.letv.com -@ads fz.letv.com -@ads g3.letv.com -@adsletv.allyes.com -@adsminisite.letv.com -@adsmsg.m.letv.com -@adsn.mark.letv.com -@adsplog.dc.letv.com -@adspro.hoye.letv.com -@ads pro.letv.com -@ads stat.letv.com -@ads#static.app.m.letv.com -@adsdecide.mixpanel.com mopub.com -@adsevt.mxplay.com -@ads g.163.com -@ads onesignal.comPB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ -@adsads.pubmatic.com -@adscdn.segment.com 2016.sina.cn +@ads  lagou.com lgstatic.com +lancdn.comlandiannews.com  wsoso.com +liepin.com +lietou.comlietou-static.com mafengwo.cn mafengwo.com mafengwo.net manmanbuy.com  meitu.com meitudata.com dianping.com +maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com flyme.cn meizu.cn  meizu.com  mzres.com +mihoyo.com bh3.com 126.com 126.link 126.net 127.net 163.com163industry.com 163mail.com 163qiyukf.com +163yun.com 166.net +haowu.linkicourse163.org  kaola.com +lofter.com  nease.netnetease-inc.com netease.com +netease.im +qiyukf.com ydstatic.com yeah.net +youdao.com g.163.com +@ads +nga.cn 178.com +ngabbs.com ngacn.cc oneplus.com +oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com coloros.com finzfin.com h2os.com +heytap.com heytapcs.comheytapdownload.comheytapimage.com +myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobi  oppoer.meoppomobile.com oppopay.com opposhop.cn +realme.com realmebbs.comrealmemobile.com +pddpic.com pinduoduo.com yangkeduo.com  pplive.cn +pplive.com pptv.com +360.cn 360.com +360-jr.com 360chou.com360daikuan.com360huzhubao.com +360jie.com360jinrong.net +360kan.com 360kuai.com  360os.com 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com +haosou.com haosou.com.cn +haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com qihucdn.com  qihoo.com qikucdn.com +so.com sou.comxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com +youhua.com 6655.com cooldock.com +ithome.com lapin365.com ruanmei.com +saayaa.com win7china.com win8china.com  feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.com sf-saas.comsf-tech.com.cn sffix.cn sfgy.org  sfacg.com  97973.com sina.com +sinaimg.cn sina.com.cn  sinajs.cn sina.cn sinaapp.com sinaedge.com sinaimg.com +sinajs.com  weibo.com weibo.com.cn weibo.cn weibocdn.com xhaiwai.com 2016.sina.cn @adsad.sina.com.cn @adsadbox.sina.com.cn @ads"adimages.sina.com.hk @@ -2328,24 +2145,20 @@ jzt.jd.com @ads!woocall.sina.com.cn @adszc.biz.weibo.com @ads zymo.mps.weibo.com -@adsadnet.sohu.com -@ads ads.sohu.com -@ads aty.sohu.com -@adsdata.vod.itc.cn -@adsepro.sogou.com -@ads go.sohu.com -@adsgolden1.sogou.com -@adsimp.optaim.com -@adsinte.sogou.com -@adsinte.sogoucdn.com -@adslu.sogoucdn.com -@ads theta.sogoucdn.com -@adsuranus.sogou.com -@adsv2.reachmax.cn -@ads*e8aeb8bbdbbd7.cdn.sohucs.com -@ads*643108e7617ef.cdn.sohucs.com -@adsssp.api.tappx.com -@ads ad.qq.com +@adssinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com +go2map.com sogo.com  sogou.com sogoucdn.com saraba1st.com cnsuning.com +suning.comsuningcloud.comsuningestate.comsuningholdings.com +tapimg.com +taptap.com +apcdns.net foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn imqq.com  myapp.com myqcloud.com +qcloud.com qcloudimg.com qlogo.cn qpic.cn +qq.com +qqmail.com  qzone.comservicewechat.com smtcdns.com +tencent.cn tencent.comtencent.com.cntencent.com.hktencent.net.cntencent-cloud.comtencentmusic.comtencentyun.com +tenpay.com +wechat.com +wegame.com +weiyun.com ad.qq.com @ads ad.qun.qq.com @ads"adfilter.imtt.qq.com @ads adping.qq.com @@ -2369,428 +2182,506 @@ jzt.jd.com @ads mtrace.qq.com @ads push.qq.com @ads pgdt.gtimg.cn -@ads uberads.com -@adsalog.umeng.com +@ads tiancity.comtiancitycdn.com +tipdim.org tmtpost.com chaindd.com +72whys.com checkzeit.com +tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com 40017.cn +17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com +ly.com mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com +uyunad.comwhalecloud.comalog.umeng.com @ads!alog.umengcloud.com -@ads"unityads.unity3d.com -@ads$unityads.unitychina.cn -@ads ads.wteam.xyz ad.intl.xiaomi.com -@ads ad.mi.com -@ads ad.xiaomi.com -@adsadmob.xiaomi.com -@adsad1.xiaomi.com -@adsmistat.xiaomi.com -@adstracking.miui.com -@adsadv.sec.miui.com -@ads#adv.sec.intl.miui.com -@ads#misc.in.duokanbox.com -@ads ad.hpplay.cn -@adsadeng.hpplay.cn -@ads atianqi.com -@ads kuyun.com -@ads umeng.com -@ads ads.yahoo.com -@adsgemini.yahoo.com -@adsactives.youku.com -@ads!ad.api.3g.youku.com -@ads%ad.api.mobile.youku.com -@ads!ad.mobile.youku.com -@ads)a-dxk.play.api.3g.youku.com -@ads atm.youku.com -@ads$b.smartvideo.youku.com -@adsc.yes.youku.com -@adsdas.api.youku.com -@ads"das.mobile.youku.com -@ads"dev-push.m.youku.com -@adsdl.g.youku.com -@adsdmapp.youku.com -@adse.stat.ykimg.com -@ads$gamex.mobile.youku.com -@ads"guanggaoad.youku.com -@ads!hudong.pl.youku.com -@ads"huodong.pl.youku.com -@ads#huodong.vip.youku.com -@ads hz.youku.com -@adsiyes.youku.com -@ads l.ykimg.com -@adslstat.youku.com -@ads!mobilemsg.youku.com -@ads msg.youku.com -@adsmyes.youku.com -@ads p.l.youku.com -@ads pl.youku.com -@ads$passport-log.youku.com -@adsp-log.ykimg.com -@adspush.m.youku.com -@ads r.l.youku.com -@ads s.p.youku.com -@adssdk.m.youku.com -@adsstat.youku.com -@ads%statis.api.3g.youku.com -@ads'store.tv.api.3g.youku.com -@ads'store.xl.api.3g.youku.com -@adstdrec.youku.com -@ads test.ott.youku.com -@ads"test.sdk.m.youku.com -@ads v.l.youku.com -@adsval.api.youku.com -@ads&vali.cp31.ott.cibntv.net -@ads wan.youku.com -@adsykatr.youku.com -@adsykrec.youku.com -@ads cvnad.com +@ads  95516.com unionpay.comunionpayintl.comunionpaysecure.comwanfangdata.com.cn +sojump.com +wjx.cn wjx.com wjx.top +mi.com +mi-img.com  mifile.cn miui.com +miwifi.com  xiaomi.cn +xiaomi.com +xiaomi.netxiaomiyoupin.comdanjuanfunds.com +xueqiu.com  00cdn.com  88cdn.com +sandai.netthunderurl.com +xunlei.com ynet.com.cn ynet.com 0880.com ynet.cn +kumiao.com  youku.com  ykimg.com +mmstat.com soku.com +cibntv.net +youzan.com yzcdn.cn youzanyun.com yfcache.com +yfcalc.com yfcloud.com  yfdts.net  yfp2p.net +yfscdn.net yunfancdn.com  zhihu.com  zhimg.com zhihuishu.com  ksyun.com ksyungslb.com ourdvsss.com abchina.com +boc.cn  whccb.com moji.com mojichina.com0123456789.com +055110.com  05sun.com  100bt.com 100offer.com  11467.com +114chn.com 114piaowu.com 114shouji.com 115.com +119you.com 123juzi.com 123juzi.net 123u.com 1637.com 16rd.com  17173.com 178linux.com  17989.com  17cdn.com  18183.com 188.com 1905.com  19yxw.com 1nongjing.com  1ting.com 1zhe.com 21cn.com 2265.com 2288.org 2345.com 258.com 263.net 289.com 2cto.com 3000.com +310win.com +315che.com 3234.com 32r.com 3322.org 3387.com 33lc.com 3454.com 3456.cc +35.com 3533.com +360doc.com  360jq.com 360zhyx.com +365dmp.com 36kr.com +37.com 3733.com 3839.com +39.net 3conline.com 3d66.com 3dmgame.com +3elife.net 3h3.com 3yx.com  40407.com 4paradigm.com 500.com 500d.me +50bang.org 51.la 51credit.com  51cto.com 51eshop.com 51hejia.com51jingying.com 51wendang.com  51yes.com 5253.com  52hxw.com +52miji.com 52pk.com 52z.com 53kf.com +55.com +56.com 5577.com  55bbs.com  58pic.com  5bite.com 5fun.com 5gzm.net 5you.com 66wz.com 68h5.com +6rooms.com 71.am 714.com 7230.com +72byte.com  7down.com 7k7k.com  7moor.com 7po.com +7x24cc.com +7xdown.com  818ps.com  84399.com  8686c.com 885.com  88cdn.com +900.la 91danji.com 91yunxiao.com 9553.com 962.net 9718.com  99166.com 998.com 999d.com 99danji.com 9ht.com 9xu.com a9vg.com +aardio.com +adxvip.com agrantsem.com  aicdn.com  aiemy.com  aiops.com  aipai.comairchangan.com airguilin.com aisee.tv aiskycn.com aiyunxiao.com +aizhan.com +ali213.netalittle-tea.com +allyes.com anfensi.com +anquan.org +anruan.com +antutu.com apk3.com apk8.com +appinn.com  arpun.com babytree.combabytreeimg.com baidufree.combaifendian.com  baihe.com  baike.com baixing.com baixing.netbangongziyuan.com bankcomm.combankofchina.com baofeng.com baomitu.combaoxianshichang.com bcy.net bearychat.com beihaidc.com bengbeng.com  benmi.combestopview.com biancheng.net bianews.com bibaodao.com bidchance.com biddingx.com bihu.com +bio360.net  bio4p.com bio-equip.combiodiscover.com bishijie.com bitauto.combitautoimg.com bitecoin.com biyehome.net bjcathay.com bobo.com +bokecc.com bootcss.com btcfans.com btgtravel.com bthhotels.com caijingwu.com +caixin.com +caiyun.com caiyunapp.com cang.comcankaoxiaoxi.comcardbaobao.com +carnoc.com ccb.com cctv.com cctvpic.com  cdn20.com cebbank.com  cecdc.com cecport.com +ch.com changba.com chashebao.comchazhengla.com +che168.com  china.comchinacache.comchinacache.net chinafph.comchinalawedu.com chinanews.com chinapay.com chinapp.netchinapubmed.net chinasspp.comchinatranslation.net +chinaz.com +chinaz.net chiphell.comchongdiantou.com +chouti.com chuangxin.com chuansong.mechuansongme.com +chushou.tv chuyu.me  city8.com clouddn.com cloudxns.com cmbchina.com cn.bing.com cnanzhi.com +cnbeta.com cnbetacdn.com cnblogs.com +cnepub.com  cnfol.com  cnlaw.net cnstock.com cnzz.com code666.com +cofeed.com +cofool.com coindog.com  cpppf.org  cqvip.com  cr173.com  crsky.com  csbew.com csslcloud.net +ctfile.com ctiforum.com ctoutiao.com  ctsbw.com +cubead.com +cyagen.com  cybtc.com cyol.com cztv.com cztvcloud.com dadajiasu.com dadighost.com daguzhe.com dajiabao.com  dajie.com dajieimg.com dalongyun.com dangbei.com dangdang.com danji100.com +danji6.com daocloud.io daovoice.io dazijia.com  dbank.com +dcdkjx.com  dd373.com  ddooo.com dedecms.com develenv.com  dgtle.comdianchacha.com diandian.comdiandianqi.comdianwannan.comdidichuxing.comdingxiang-inc.com +diopic.net diyiyou.com dj99.com dmzj.com  docin.com dockerone.com +dockone.io dogedoge.com +donews.com +dongao.com dopa.com +douban.com  douban.fm doubanio.com +douxie.com +downcc.com +downyi.com +dpfile.comdrivergenius.com +dui.ai duiopen.com duoduocdn.com duokanbox.com +duomai.com duoshuo.com  duote.com +duowan.com dxpmedia.com +dxycdn.com  dyhjw.com dzw3.com  dzwww.com  easiu.com eastday.com eastmoney.com +eayyou.com  ebrun.com +ecitic.com +edu.cn  eduei.com eeyy.com eflycloud.com emarbox.com +emumax.comeoeandroid.com excelhome.net expreview.comf.cx  faloo.com famulei.com  fanli.com fanxian.com fastapi.net +feihuo.com feiniaomy.com feng.comfengkongcloud.com fengniao.comfengxian110.com  fenxi.com +fhldns.com  fimmu.com fixdown.com freebuf.com fugetech.com fuwj.com fyxz.com gameabc.com gamersky.com +gaodun.comgaoshouyou.com geekpark.net geetest.com geilicdn.comgenelinkout.com  getui.com +gezida.com gfan.com +giocdn.com  gitee.com gm86.com gmallbio.com  gmz88.com gold678.com  golue.comgongxiangcj.com gree.comgreenxiazai.com growingio.com  gtags.net  guabu.com guaiguai.comguanaitong.comguanhaobio.com gucheng.com  guigu.org  guokr.com  gupzs.com gushiwen.orgguzhangting.com +gwdang.comgxairlines.com +gxb.io gzwanju.com h5uc.com hack520.com hackhome.com haishun.com hanboshi.com +hao123.com hao123img.com  haote.comhaoyouyinxiang.com +heisha.net  henha.com henkuai.com  hexun.com +heytea.com  hiido.com hitv.com hiyd.com hktheone.com hn-cbec.com  hnair.com hntv.tv hnyuyuhui.com hollycrm.com homeinns.comhongsanban.com hongxiu.com +houdao.comhouyuantuan.com hteacher.net huanqiu.comhuashengdaili.com  huatu.com  huize.com  hujia.org hujiang.com hunantv.comhuochepiao.com huocheso.com  huxiu.com hxfy888.com iask.com +ibaotu.com icaidao.com ichangtou.com  iciba.com idongdong.com idqqimg.com  ifeng.com ifengimg.com iflytek.com  igao7.com +iheima.com ijiandao.com ijinshan.com +ikafan.com im2maker.com  im-cc.com +imedao.com imgo.tv  imooc.com indienova.com  infoq.cominfoqstatic.com  ip138.com +ip-cdn.com ipinyou.com ipip.net iranshao.com  irs01.com ishumei.com  it165.net  it168.com  it610.com  iteye.com +itjuzi.com  itmop.com  iyiou.com iyunxiao.com +izuche.com +jandan.net jb51.com  jdair.net jia.com jiameng.com jianshu.com +jianshu.io jianzhi8.com jiaodong.net jiaoyimao.com jiasuhui.com jiasule.com jiathis.com jiayuan.com jiazhao.com jiemeng8.comjikexueyuan.com jinianbi.comjinrongren.net  jinse.com  jinti.comjiqizhixin.com jisuanke.com jisuxia.com jiuzhilan.com jj20.com  jjwxc.net jmstatic.com jsbc.com +jsrdgg.com jstv.com juefeng.com  jumei.com  juxia.com  jyimg.com k366.com kaixin001.com kameng98.com +kanimg.com kankanews.com kantianqi.net kanzhun.com kaopu001.comkeboyunxiao.com  kejet.net kf5.com  kgimg.com +kimiss.com kingdee.com kkzj.com +kongfz.com koolearn.com +kouclo.com +koudai.com koudai8.com kq7.com  ksord.com ku6.com +ku6cdn.com +ku6img.com  kuaaa.com kuaidi100.com kuaihou.comkuaikanmanhua.com kuaizhan.com  kugou.com  kuqin.com lady8844.com laomaotao.net laomaotao.org  lascn.net  lawxp.com +le.com leanote.com ledu.comleetcode-cn.com leikeji.com leiphone.com leju.com leturich.org letv.com letvcdn.com letvimg.com lianjia.com lianmishu.com +liantu.com  liantu.me lianzhuli.comliaoxuefeng.com liba.com libaclub.comlieyunwang.com lightonus.com +likuso.com lingkou.com linkvans.com linuxidc.com liulanqi.net liuxiaoer.com lixinger.com lkkbrand.com longhoo.net +longre.comlongtugame.com longzhu.com  lotpc.com +loupan.com lrts.me +lu.com luckyair.net  lufax.com lufaxcdn.com luyouqi.com +lvmama.comlvsexitong.com  lxdns.com  lxway.com +magedu.com maisanqi.com +mamecn.com manmankan.com +mapbar.com mayi.com +mayihr.com +mcbang.com  mdpda.com mechina.org +mediav.com meika360.com meilishuo.commeimingteng.com +meiqia.commeishichina.com meishij.net mgtv.com miaopai.com miaozhen.com +miercn.com mikecrm.comminhangshi.com +mmbang.com mmbang.info moegirl.org +mofang.com mofazhu.com mogu.com mogucdn.com mogujie.com +mokahr.commoocollege.com mop.com +mscbsc.com mukewang.com muzhiwan.com +mydown.com mydrivers.com myshow360.net myyx618.com myzaker.com mzstatic.com naixuecha.com netbian.com +newasp.netnewbandeng.com  newyx.net nowcoder.com nowscore.com  nruan.com ntalker.com nvsheng.com  nzbdw.com oadz.com  oeeee.com  offcn.com +oicq88.com  okooo.com +ol-cdn.com +ol-img.com +oneapm.com onegreen.netonlinedown.netonlinesjtu.com +opdown.com oray.com oschina.net  ottcn.com +oupeng.com +p2peye.com p5w.net +paipai.compaipaibang.com paopaoche.net pc6.com +pcbeta.com +pchome.net pgzs.compharmacodia.com +pingan.compingplusplus.com pingwest.com +pingxx.com pintu360.com  pipaw.com  pipaw.net pptbest.com psbc.com +pubyun.com qbox.me  qc188.com qcc.com qcds.com qd8.com qd-metro.com qdmm.com qh24.com qianjia.com qianzhan.comqiaobutang.com qichacha.com +qidian.com +qie.tv qifeiye.comqijiayoudao.net qingcloud.comqingdaochina.orgqingdaonews.comqingsongchou.com  qiniu.com qiniucdn.com qiniudn.com qiniudns.com qiumibao.com qizuang.com  qqddc.comqqgexingqianming.com qqrizhi.comqqshuoshuo.com +qschou.com +qtmojo.com +qudong.com  qunar.com qunarzz.com qyer.com readnovel.com +renren.comrenren-inc.com rfchost.com rong360.com rtbasia.com  ruan8.comruby-china.org +runoob.com  saibo.com sanguosha.com +sanwen.net  scdng.com scoregg.com +sczsxx.com sdo.com sec-wiki.comsegmentfault.com +sencdn.com seniverse.comsenlinjimore.com +sgamer.com shangzhibo.tv sharejs.comshenmayouxi.com  sheui.com shijiexia.com shixiseng.com shmetro.comshoujihuifu.comshouyoubus.com shrbank.comshuidichou.comshuidihuzhu.com shumensy.comshuoshuokong.com +shutcm.com +simei8.com simuwang.com  sjwyx.com  skycn.com  smzdm.com  sobot.com sofreight.com softwhy.com sohu.com +sohucs.com +sojson.com +somode.com soso.com souqian.comsouthmoney.comspringtour.com  sspai.com ssports.com starbaby.cc starbaby.comstaticfile.org stockstar.com +sunrtb.com supermap.comsupermapcloud.com +sys321.com szfw.org szzfgjj.com t1y5.com  taihe.comtaihuoniao.com tanx.com +tao123.com +taoche.com te5.com tenxcloud.com  tgbus.comtianjimedia.comtianjin-air.com +tianqi.com tietuku.com +tiexue.net timedoo.com tingyun.com tjjt360.com  tmcdn.net +tobosu.com tom.com tongdun.net topthink.com travelsky.com trustutn.org  tudou.com tudouui.com tuer123.com tuicool.com  tujia.com  tuniu.com tutuapp.com  tuwan.com tuwanjun.com u.tools u17.com  ucbug.com upaiyun.com  upyun.com urselect.comurumqi-air.com  useso.com uuu9.com uzzf.com  v5875.com value500.com vamaker.com  vancl.com vanclimg.com  vcimg.com veryhuo.com veryzhun.com +vgtime.com  vic18.com videojj.com  vijos.org vip.com  vobao.com +vpgame.comwallstreetcn.comwangyangyang.vipwannianli8.com wanwushuo.com wanyiwang.com  wanyx.com +wdjimg.com wdzj.com  weand.com webterren.com weicaifu.com weidian.comweilaicaijing.comweilaiyunxiao.com weiphone.com weiphone.net weixing.com weiyangx.comwelltrend-edu.com wenjuan.com +win007.com win8.netwindows10zj.comwindows7en.com windowszj.com winwin7.com wishdown.com  wmzhe.com wnhuifu.com wonnder.com +wooyun.org worktile.comwoyaogexing.com  woyoo.com  wqiis.com wrating.com +wscdns.com  wumii.comwuximediaglobal.com xafc.com  xdwan.com +xfdown.com +xhscdn.comxiachufang.comxiaobaixitong.com xiaogouh5.comxiaohongshu.com  xiaoka.tv xiaokaxiu.comxiaoxiongxitong.comxiaoyuxitong.com  xiayx.com xiazaiba.com ximalaya.com xinhuanet.comxinrenxinshi.com xinshipu.comxingtan001.com xitong8.com xitu.com xiu8.com +xiucai.com xiziwang.net  xnpic.com xoyo.com  xpgod.com +xsa239.comxuanchuanyi.com  xue51.com xundupdf.com xuexicha.com xxsy.net  xycdn.com xywy.com +xzking.com yahui.cc +yaolan.com  yaoyl.com  yaozh.com  yccdn.com +ycgame.com +yeepay.com  yesky.com yh31.com yhd.com  yicai.com  yigao.com yigoonet.com yihaodian.comyihaodianimg.com yikexue.comyingjia360.comyinhang123.net yinxiang.com yinyuetai.comyinzhaowang.com +yiqifa.com +yiqifa.org yisu.com yitaifang.com  yiwan.com yixi.tv yizhibo.com  yjbys.com +yocajr.com +youboy.com youjiao.com youke.co youshang.com youxihezi.net youxila.com youxiniao.com youxigt.com  youzu.com yoyojie.com  yoyou.com  ypppt.com  ysten.com +yuewen.com  yunaq.com yunba.io yundaex.com yundasys.com +yundun.com yunqishi.net yunshipei.com yunxiao.com yunzhijia.com  yupoo.com  yuzua.com  yxbao.com +yxdown.com +yy.com +yytcdn.com +zampda.net zampdsp.com zastatic.com +zbjimg.com zczj.com +zdfans.com +zdmimg.com zgjm.org +zgjsks.com  zgzcw.com zhanbuba.com zhanzhang.net  zhanqi.tv zhaodanji.com zhaopin.com zhcw.com +zhenai.com  zhibo8.cc  zhidx.com +zhipin.com zhiziyun.comzhuangjiba.comzhuanyewanjia.comzhuayoukong.com zhubajie.com zhugeapi.net zhugeio.com  zimuzu.io zixiaomao.com zixuntop.com  zjstv.com zmengzhu.com zongheng.com +zrblog.net zsxq.com  zuche.com zuchecdn.com zuidaima.com zuowen8.comzuowenwang.net jindidata.comtianyancha.comzhuanxiandai.com +fm3838.comlarsonlimited.com runsheng.com vzuu.com +zoom3g.com +zoomyou.cn chaoxing.com chaoxing.cc +( +DEBIAN +debian.org +dotdeb.org +. +JSDELIVR jsdelivr.net jsdelivr.com +. +SCALAscala-lang.org scala-sbt.org +c +YOUKU +kumiao.com  youku.com  ykimg.com +mmstat.com soku.com +cibntv.net +1 +BBC bbc.com  bbc.co.uk +bbci.co.uk +> + YYETS-ADS cvnad.com @ads iyoowi.com -@ads 51y5.net a.adtng.com -aaxads.com -ad-srv.netad.api.moji.comad.wang502.com adbutter.netads.trafficjunky.net adtechus.comcfts1tifqr.comcontentabc.comimg-bss.csdn.net imglnkc.com imglnkd.comja2.gamersky.com jl3.yjaxa.topkepler-37b.com -lqc006.coms4yxaqyq95.comshhs-ydd8x2.yjrmss.cnstatic.javhd.comtrafficfactory.biz toboads.com ad.unimhk.com ysm.yahoo.com adxprtz.com exoclick.com -exosrv.comcdn.advertserve.comcdn.banclip.comcdn.tsyndicate.com -s -EHENTAI e-hentai.org ehgt.org ehtracker.org -ehwiki.org exhentai.orghentaiverse.org - -HKCNEWS hkcnews.com -! -WANFANGwanfangdata.com.cn -D - APPLOVIN-ADS applovin.com +@ads + +TUBE8  tube8.com +, +SECOM secom.co.jpsecomtrust.net + +GITV gitv.cn gitv.tv +j +HP +hp.comhpstore-china.com hpstore.com www8-hp.comhpstore.corpmerchandise.com +3 +INNER-ACTIVE-ADSinner-active.mobi +@ads +Ñ + +JD3.cn  300hu.com +360buy.com 360buyimg.com +360top.com +7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn +dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com +jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com +jd-app.com  jd-ex.com jd.cn jd.co.th +jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com +jingxi.com +jkcsjd.com +joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn +paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com +vg.com wangyin.com  wdfok.com yhd.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com +@ads c-nfa.jd.com +@adscps.360buy.com @ads -applvn.com +jzt.jd.com +@ads stat.m.jd.com +@ads img-x.jd.com @ads -% -HUPU hupu.com hupucdn.com -$ -NOTEPADnotepad-plus-plus.org - -NTC  ntc.party - -SSRPASS -ssrpass.pw - -REDTUBE redtube.com +‡ +NVIDIA geforce.com +nvidia.com nvidia.co.jp geforce.co.kr nvidia.co.krgeforce.com.tw nvidia.com.tw +4 +SCInewisiknowledge.comisiknowledge.com +: +ZAOBAO +zaobao.com zaobao.com.sg  zaobao.sg ' AMERICASVOICEamericasvoice.news -6 -ELSEVIERengineeringvillage.com -scopus.com - -LUA lua.org - -OPENSUSE opensuse.org -# -PRIVATE local  localhost -• -DMM-ADS bluekai.com -@adsfout.jp -@ads gmossp-sp.jp -@adsi-mobile.co.jp -@ads im-apps.net -@ads impact-ad.jp -@ads ladsp.com -@ads microad.co.jp -@ads -microad.jp -@ads socdm.com -@ads -H -DOUYU douyu.tv  douyu.com douyucdn.cn douyuscdn.com - -OPENSSL openssl.org -3 -HKEDCITY hkedcity.nethkreadingcity.net -( -LAGOU  lagou.com lgstatic.com -T -NOW now.com -now.com.hk nowe.com -now-tv.comnow-ashare.com -% + +PCRE pcre.org + + RPMFUSION rpmfusion.org +ï -CHINAPOWERchinapower.csis.org -! +MASTERCARD mastercard.ae mastercard.at mastercard.az mastercard.ba mastercard.be mastercard.bg mastercard.by mastercard.ca mastercard.ch mastercard.clmastercard.co.idmastercard.co.ilmastercard.co.inmastercard.co.jpmastercard.co.kemastercard.co.krmastercard.co.nzmastercard.co.thmastercard.co.ukmastercard.co.vemastercard.co.zamastercard.commastercard.com.armastercard.com.aumastercard.com.bhmastercard.com.brmastercard.com.bzmastercard.com.cnmastercard.com.comastercard.com.cymastercard.com.egmastercard.com.gemastercard.com.gtmastercard.com.hkmastercard.com.kwmastercard.com.lbmastercard.com.mxmastercard.com.mymastercard.com.ngmastercard.com.pemastercard.com.phmastercard.com.samastercard.com.sgmastercard.com.trmastercard.com.twmastercard.com.vemastercard.com.vn mastercard.cz mastercard.de mastercard.dk mastercard.es mastercard.eu mastercard.fi mastercard.fr mastercard.gr mastercard.hr mastercard.hu mastercard.ie mastercard.it mastercard.jo mastercard.ke mastercard.kz mastercard.lu mastercard.md mastercard.my mastercard.nl mastercard.no mastercard.om mastercard.pl mastercard.pt mastercard.qa mastercard.ro mastercard.rs mastercard.ru mastercard.se mastercard.si mastercard.sk mastercard.ua mastercard.us +ë + EPICGAMESbattlebreakers.com epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com*&^epicgames-download\d\.akamaized\.net$.*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$3/^epicgames-download\d-\d+\.file\.myqcloud\.com$ +­ +HBO cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk +hbomax.com +hbonow.com  maxgo.com +µ + PINTEREST +pin.it +pinimg.com pinterest.at pinterest.be pinterest.ca pinterest.ch pinterest.cl pinterest.copinterest.co.atpinterest.co.inpinterest.co.krpinterest.co.nzpinterest.co.uk pinterest.compinterest.com.aupinterest.com.bopinterest.com.ecpinterest.com.mxpinterest.com.pepinterest.com.pypinterest.com.uypinterest.com.vn pinterest.de pinterest.dk pinterest.ecpinterest.engineering pinterest.es pinterest.fr pinterest.hu pinterest.id pinterest.ie pinterest.inpinterest.info pinterest.it pinterest.jp pinterest.kr pinterest.mx pinterest.nl pinterest.nz pinterest.pe pinterest.ph pinterest.pt pinterest.ru pinterest.se pinterest.th pinterest.tw pinterest.uk pinterest.vnpinterestmail.com +. + POCKETCASTS +pca.stpocketcasts.com +‰ -FLURRY-ADSdata.flurry.com - -GOFUNDME gofundme.com -† -GOLANG go-lang.com go-lang.net go-lang.org -go.dev  godoc.org -golang.com -golang.net -golang.org +APPLEDAILYappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk +atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com +$ +CSDN csdn.net +csdnimg.cn +" + GETCOMPOSERgetcomposer.org +B +HASKELL haskell.orghaskellstack.org stackage.org +" + LETSENCRYPTletsencrypt.org + + +POSTGRESQLpostgresql.org +' +928PLUS 928.plus +zind.cloud + + R-PROJECT r-project.org +ž +ADOBE  adobe.com adobe.ioadobeaemcloud.comadobeaemcloud.netadobeccstatic.com adobedc.net adobedtm.comadobelogin.com adobeoobe.comassetsadobe.com behance.net edgefonts.net +omtrdc.net typekit.com typekit.net  -MEDIUM -medium.com -þ -JIGUANG -42r.cn -5566ua.com aurorapush.cn -e0n.cn japps.cn jchat.io -jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com -jsurvey.cn  jvoice.cn -kc9.cn -n0q.cn pushcfg.com -s0n.cn -@ -JQUERY -jquery.comjquerymobile.com jqueryui.com -, -MATTERS matters.news matters.one -D -RUST rust-lang.org  rustup.rs  crates.io docs.rs -4 - ARCHLINUX archlinux.orgarchlinuxarm.org - -AVGLE  avgle.com - - JFENGTIME jfengtime.com -D - -LIVEJASMINlivejasmin.com dditsadn.com dditscdn.com -S -PORNHUB -phncdn.com phprcdn.com pornhub.compornhubpremium.com -Ø -LETV-ADS$api.game.letvstore.com -@ads ark.letv.com -@ads dc.letv.com -@adsdev.dc.letv.com -@ads fz.letv.com -@ads g3.letv.com -@adsletv.allyes.com -@adsminisite.letv.com -@adsmsg.m.letv.com -@adsn.mark.letv.com -@adsplog.dc.letv.com -@adspro.hoye.letv.com -@ads pro.letv.com -@ads stat.letv.com -@ads#static.app.m.letv.com -@ads -6 - RULEOFLAWrolfoundation.orgrolsociety.org - -TUNSAFE tunsafe.com - -X-ORG x.org -Q - YUNFANJIASU yfcache.com yfcloud.com  yfp2p.net yunfancdn.com -a -SSRCLOUDchina-internet-exchange.com cxkcloud.com ssrcloud.com ssrcloud.org -, - TAPPX-ADSssp.api.tappx.com -@ads -| -4399 3304399.net 4399.com 4399dmw.com -4399er.com4399youpai.com 5054399.com img4399.com -I -ACFUN acfun.cn aixifan.com!apilog-web.acfun.cn -@ads - - CATEGORY-PORN -91porn.com  avgle.com avn.com beeg.com bongacams.com -bcicdn.com bcrncdn.com -btt804.com -btt904.com -bttzyw.com -bttzyw.net t66y.comchaturbate.com e-hentai.org ehgt.org ehtracker.org -ehwiki.org exhentai.orghentaiverse.org eporner.comfanhaodian.com  hegre.com hqporner.com -javbus.com javfinder.sh findercdn.me o0-2.com  javhd.comjavlibrary.com -javwide.tv javwide.com kindgirls.comlivejasmin.com dditsadn.com dditscdn.com -metart.commetartnetwork.com metcams.comnaiadsystems.com  nsimg.net netflav.com  pigav.com -pornhd.com -phncdn.com phprcdn.com pornhub.compornhubpremium.com  press.vin redtube.com spankbang.comtheporndude.com  tube8.comvaginacontest.com  x-art.com xhamster.com xnxx.com xnxx-cdn.com xvideos.comxvideos-cdn.com youporn.com -3 -ELEME -ele.me elemecdn.com eleme.cn +KERNEL +kernel.org  -MRAY  mray.club -­ - -BLOGSPOT blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn -, -HITUN hitun.ioxn--90wwvt03e.com - - KINDGIRLS kindgirls.com -– -OOKLA-SPEEDTEST  cdnst.net cellmaps.com ekahau.cloud -ekahau.com  ookla.com pingtest.net speedtest.co speedtest.netspeedtestcustom.com webtest.netPB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ -@ads -4 -PERL perl.org cpan.org metacpan.org - - WORDPRESSvideopress.com w.org wordpress.com wordpress.org wordpress.tv wp-themes.com -wp.com +REDIS redis.io + +CENTOS +centos.org ++ +LINKEDIN linkedin.com  licdn.com +. +NETLIFY netlify.combitballoon.com c COMODO comodo.com comodoca.com comodoca2.com comodoca3.com comodoca4.com -, -DUYAOSS duyaoss.com duyaossr.com -¤ -IBMibmweatherchannel weather bluemix.com bluemix.net ibm.com -ibm.eu ibm.net -ibm.us s-bluemix.net s81c.com  - OPENRESTY openresty.org -¾ -VOANEWSamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.ru insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com -voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.com -‡ -BILIBILI -acg.tv acgvideo.com -b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com  hdslb.com im9.com -mincdn.com$ upos-hz-mirrorakam.akamaized.net -$ -CAS -csdl.ac.cn  las.ac.cn - -PINCONG pincong.rocks -, -SECOM secom.co.jpsecomtrust.net -( - UBERADS-ADS uberads.com + MANMANBUY manmanbuy.com + +WINDY  windy.com +º +GITHUB +git.io github.blog +github.comgithub.community  github.io githubapp.comgithubassets.comgithubstatus.comgithubusercontent.com atom.io/+github-avatars.oss-cn-hongkong.aliyuncs.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.com + +I2P +geti2p.net +µ +JD-ADSads.union.jd.com +@ads c-nfa.jd.com +@adscps.360buy.com +@ads +jzt.jd.com +@ads stat.m.jd.com +@ads img-x.jd.com @ads +p +ONEPLUS oneplus.com +oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com +> +UBUNTU +ubuntu.com +ubuntu.netubuntuforums.org +7 +DART dart.dev dartlang.org dartpad.dev +. +ANDROID android.comandroidify.com  - LINUXMINT linuxmint.com -? -MAFENGWO mafengwo.cn mafengwo.com mafengwo.net -# - PASSIONTIMESpassiontimes.hk -( -WASHINGTONPOSTwashingtonpost.com + CORDCLOUD cordcloud.org " - THEPORNDUDEtheporndude.com -$ - BROWSERLEAKSbrowserleaks.com -ú -EBAY ebay.at ebay.be ebay.ca ebay.ch ebay.cn -ebay.co.uk ebay.com ebay.com.au ebay.com.hk ebay.com.sg ebay.de ebay.es ebay.fr ebay.ie ebay.in ebay.it ebay.nl ebay.pl ebayimg.com ebayinc.comebaymainstreet.comebayprivacycenter.com ebayrtm.comebaystatic.com + ALPINELINUXalpinelinux.org $ - MOPUB-ADS mopub.com -@ads -w -NYTIMES nyt.com nyt.net nytcn.me  nytco.com nytimes.com nytstyle.comtimestalks.com -9 -SHADOWSOCKSCOMshadowsocks.comshadowsocks.nl -# -EDX edx.org edx-cdn.org - -TSQUARE -tsquare.tv - -XPOSED xposed.info - -EFF eff.org -º -CATEGORY-VPNSERVICES 928.plus -zind.cloud aaex.uk amytele.com -ark.tobaicaonetwork.com bighead.groupblinkload.zone boslife.biz boslife.net  cloudn.me  conair.me cordcloud.org ctyun.online -cylink.procylink0122.icu dlercloud.com dlercloud.org dlercloud.me dleris.best duyaoss.com duyaossr.com hitun.ioxn--90wwvt03e.comjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net  maying.coxn--i2ru8q2qg.commocloudplus.com  mray.club muncloud.dog n3ro.fun  n3ro.live n3ro.net nexitally.comnexitallysafe.com nexitcore.com paofu.cloud paofuyun.me renzhe.cloud rixcloud.comshadowsocks.comshadowsocks.nlsquirrelvpn.comsquirrelgroup.net -ssplive.pwchina-internet-exchange.com cxkcloud.com ssrcloud.com ssrcloud.org -ssrpass.pwstc-server.com surflite.co surflite.net vilavpn.com vilavpn.xyz vilavpn1.xyz vilavpn2.xyz vilavpn3.xyz vilavpn4.xyz vilavpn5.xyz vilavpn6.xyz vilavpn7.xyz -  +GFW  gfw.press +gfw.report + + OPENRESTY openresty.org +ñ -CLOUDFLAREcloudflare.comcloudflare-dns.comcloudflare-ipfs.comcloudflareapps.comcloudflareinsights.comcloudflaressl.comcloudflarestatus.comcloudflarestream.comtrycloudflare.com workers.dev one.one.onevideodelivery.net - -MACPORTS macports.org - -ELIXIRelixir-lang.org -¿ -NINTENDOnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hk nintendo.de nintendo.es nintendo.eu nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.pt nintendo.ru -" - SOUNDOFHOPEsoundofhope.org - -WENZHAO -wenzhao.ca -å - TENCENT-ADS ad.qq.com -@ads ad.qun.qq.com -@ads"adfilter.imtt.qq.com -@ads adping.qq.com -@adsadpm.app.qq.com -@adsadsclick.qq.com -@adsadsfile.qq.com -@adsadshmmsg.qq.com -@adsadslvfile.qq.com -@adsadslvseed.qq.com -@ads&adsmind.apdcdn.tc.qq.com -@adsadsqqclick.qq.com -@ads adstestview.qq.com -@adsadsview.qq.com -@adsadsview2.qq.com -@adsadv.app.qq.com -@ads adver.qq.com -@ads btrace.qq.com -@adse.qq.com -@adslog.tbs.qq.com -@ads mpush.qq.com -@ads mtrace.qq.com -@ads push.qq.com -@ads pgdt.gtimg.cn -@ads +SALESFORCE appcloud.comappexchange.com attic.iobeyondcore.combuddymedia.com chatter.comcloudcraze.com cotweet.com data.comdemandware.com desk.comdocumentforce.comdreamforce.com einstein.comexacttarget.com  force.com govforce.comgravitytank.com heywire.com krux.commarketingcloud.com metamind.io +pardot.com quotable.com radian6.com relateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.com sequence.comsfdcstatic.com +sforce.com site.com +social.comsteelbrick.com twinprime.comweinvoiceit.com +a +SSRCLOUDchina-internet-exchange.com cxkcloud.com ssrcloud.com ssrcloud.org +Z +XUNLEI  00cdn.com  88cdn.com +sandai.netthunderurl.com +xunlei.com + +CLOUDN  cloudn.me +e + CLARIVATEnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.com + +REURL reurl.cc  -VAGRANT vagrantup.com -L -APKPURE apkpure.com cdnpure.com pureapk.com -winudf.com -­ -CATEGORY-SCHOLAR-!CN apa.orgpsyccareers.com cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.orgnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.com doi.org doi.infoengineeringvillage.com -scopus.comscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.skmit mit.edu mit.netmitpressjournals.orgamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com -ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.comsciencedirect.comsciencedirectassets.com -apress.com springer.comspringerlink.comspringernature.com tandf.co.uktaylorandfrancis.comtaylorfrancis.comtaylorandfrancis.com -aclweb.org acm.organalytictech.comannualreviews.org  arxiv.org asha.org berkeley.edu biorxiv.org  brill.com cell.comcomputingreviews.com degruyter.comdentalhypotheses.comelifesciences.orgfrontiersin.org hindawi.com ieee.orgisca-speech.org jmlr.org jneurosci.org  jstor.org mdpi.com -nature.com nejm.org neurology.org ovid.com  peerj.comphysiology.org plos.org pnas.org princeton.eduresearchgate.netroutledgehandbooks.comroyalsocietypublishing.org sagepub.comscholarpedia.orgsciencemag.orgscientificamerican.com scitation.orgspiedigitallibrary.orgstatsmakemecry.com thelancet.com uchicago.edu ucla.edu  umass.edu  wiley.com yale.edu +XHAMSTER xhamster.com + +BEEG beeg.com + +CHANGE +change.org +* +JAVWIDE +javwide.tv javwide.com +) +LINGUEE linguee.com  deepl.com +û + MICROSOFT  microsoft azurebing hotmail +office skype windowsxbox 1drv.com 1drv.ms +aka.ms appcenter.msapplicationinsights.ioapplicationinsights.net asp.net aspnetcdn.com azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-test.net  azure.com  azure.netazurecomcdn.netazurecontainer.ioazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazurewebsites.net bing.com bing.net bingads.combotframework.com breakdown.mecentralvalidation.com +ch9.ms cloudapp.netcloudappsecurity.comcortanaanalytics.comcrmdynint-gcc.com crmdynint.com docs.com dot.net dynamics.com efproject.net +gfx.ms hotmail.com live.com live.netmicrosoft-int.commicrosoft-ppe.commicrosoft-sbs-domains.com microsoft.com microsoft.iomicrosoft365.commicrosoftadvertising.commicrosoftaffiliates.commicrosoftonline-p.commicrosoftonline.commicrosoftstore.commicrosoftstore.com.hkmicrosofttranslator.commicrosoftuwp.commono-project.comms-studiosmedia.com  msads.net +msauth.net msdn.com +msecnd.net +msedge.net  msft.info msft.net msftauth.net msftnet.org msn.com +msocdn.com +msocsp.commymicrosoft.com  nuget.org nugettest.orgo365weve-dev.como365weve-ppe.com o365weve.com +office.com +office.net office365.com onedrive.com onenote.com onenote.net outlook.com passport.netpowerappscdn.net powerbi.compowershellgallery.coms-microsoft.com  s-msn.com sfbassets.com sfbassets.net +sfx.mssharepointonline.com  skype.com  skype.netskypeassets.comskypeassets.net surface.com sway-cdn.com sway.comsysinternals.com tfsallin.netvideobreakdown.comvideoindexer.aivisualstudio-staging.comvisualstudio.com vsallin.net vsassets.iowindows-int.net windows.com windows.netwindowsphone-int.comwindowsphone.comwindowsupdate.com xamarin.com xbox.com +xboxab.com xboxlive.com +yammer.com + +UNWIRE  unwire.hk +g + ATLASSIAN atlassian.com bitbucket.org statuspage.io +trello.com trellocdn.com +1 +JINSHUJU jinshuju.netjinshujucdn.com +< +NGA +nga.cn 178.com +ngabbs.com ngacn.cc +. + PUBMATIC-ADSads.pubmatic.com +@ads +¾ + IQIYI-ADSa.ckm.iqiyi.com +@adsad.m.iqiyi.com +@ads afp.iqiyi.com +@adsc.uaa.iqiyi.com +@ads!cloudpush.iqiyi.com +@ads#cm.passport.iqiyi.com +@adscupid.iqiyi.com +@ads$emoticon.sns.iqiyi.com +@ads"gamecenter.iqiyi.com +@ads"hotchat-im.iqiyi.com +@ads ifacelog.iqiyi.com +@adsmbdlog.iqiyi.com +@ads msg.71.am +@ads msg.video.qiyi.com +@ads!msg2.video.qiyi.com +@ads$policy.video.iqiyi.com +@adsyuedu.iqiyi.com +@ads + +CAOLIU t66y.com + +CYTHON +cython.org -CHATURBATEchaturbate.com -# -DCARD dcard.io dcard.tw - -SSPLIVE -ssplive.pw +HONGKONGFPhongkongfp.com , -PAOFUYUN paofu.cloud paofuyun.me -P -REDDIT -reddit.comredditstatic.comredditmedia.com redd.it - -REDIS redis.io - -SWIFT  swift.org -„ - TONGCHENG 40017.cn -17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com -ly.com - -AKASHA akasha.world -È( -ALIBABA 25pp.com  56che.com  95095.com 9game.cn -aliapp.org alibaba.comalibaba-inc.comalibabacapital.comalibabacorp.comalibabadns.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com -alicdn.com alidayu.com -alidns.com alifanyi.comalihealth.com.cn alihealth.hk -aliimg.com -alikmd.com alimama.com alimebot.com alios.cn -alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com -aliway.com aliwork.com alixiaomi.com -aliyun.comaliyun-inc.com aliyuncdn.com aliyuncs.comalizhaopin.com -asczwa.comasczxcefsv.com atatech.org -b2byao.com  bazai.com  bcvbw.com  cheng.xin damai.cn -dfkhgj.com doctoryou.ai doctoryou.cn dongting.com -dratio.com emas-poc.com -gongyi.xin hichina.com iconfont.cn -ics.design -jhgtgb.com -kanbox.com -lazada.comliangxinyao.com -maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc mxhichina.com nic.xinphilanthropy.xin saee.org.cn shenjing.com  shuqi.comshuqireader.com wandoujia.comxinlingshou.cn yowhale.com  yunos.com yunos-inc.comyushanfang.com -zuodao.com sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com -hemaos.com shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com pailitao.com -taobao.com -taobao.org taobaocdn.comtaopiaopiao.com tb.cn tbcache.com  tmall.com tmalltv.com tmjl.ai alitrip.com  feizhu.cn -feizhu.com -fliggy.com  fliggy.hk -iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net a.alimama.cn + MXPLAYER-ADSevt.mxplay.com +@ads + +PORNHD +pornhd.com +C + SCIENCEDIRECTsciencedirect.comsciencedirectassets.com + + SPANKBANG spankbang.com +Ñ +9NEWS 9cdn.net9nation.com.au 9news.com.au 9now.com.aufreeviewplus.net.au +mi9.com.au +mi9cdn.com nine.com.auninemsn.com.austatic9.net.au yourtv.com.au +W +SPOTIFY pscdn.co scdn.co spoti.fi spotify.comspotifycdn.com + + +JINRISHICIjinrishici.com +) +MEITU  meitu.com meitudata.com +Y + PLAYSTATIONplaystation.complaystation.net sonyentertainmentnetwork.com +T + +PROTONMAIL protonmail.chprotonmail.comprotonstatus.com pm.me +" + SINOINSIDERsinoinsider.com +F +SOGOU +go2map.com sogo.com  sogou.com sogoucdn.com +L + +TEAMBITIONteambition.comteambition.netteambitionapis.com +  + CATEGORY-ADS!apilog-web.acfun.cn +@ads adcolony.com +@ads a.alimama.cn @adsacjs.aliyun.com @ads adash.m.taobao.com @ads"adashbc.m.taobao.com @@ -2879,23 +2770,14 @@ g.tbcdn.cn @adsuserimg.qunar.com @adsw.m.taobao.com @adsyiliao.hupan.com -@ads ddurl.to dingding.xin dingtalk.com dingtalk.net dingtalk.cndingtalkapps.com laiwang.com lwurl.to - -BEEG beeg.com -¡ - BYTEDANCE -bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.com -douyin.com huaxiong.comjokecommunity.comneihanshequ.com -pstatp.com -snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com -wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com -ixigua.com ixgvideo.com  365yg.com - -OONI ooni.org -@ -YNET ynet.com.cn ynet.com 0880.com ynet.cn -Ú( - BAIDU-ADS a.baidu.com +@ads!amazon-adsystem.com +@adsiadsdk.apple.com +@ads iad.apple.com +@ads qwapi.com +@ads applovin.com +@ads +applvn.com +@ads a.baidu.com @ads ad.duapps.com @ads!ad.player.baidu.com @ads adm.baidu.com @@ -3056,68 +2938,27 @@ ixigua.com ixgvideo.com  365yg.com @adsznsv.baidu.com @adszz.bdstatic.com @adszzy1.quyaoya.com -@ads -" - GETCOMPOSERgetcomposer.org -" - SUBLIMETEXTsublimetext.com -ä -TLD-CNcn citic baidu -unicomsohu -xn--fiqs8s -xn--fiqz9s xn--1qqw23a xn--xhq521b xn--8y0a063a xn--6frz82g -xn--fiq64b xn--estv75g xn--vuq861b xn--zfr164b - -XINGRZ  xingrz.me - - WIKILEAKS wikileaks.org -/ - -AMAZON-ADS!amazon-adsystem.com -@ads -’ -CNN cnn.com -cnn.io cnnarabic.com cnnlabs.com cnnmoney.ch cnnmoney.comcnnmoneystream.comcnnpolitics.com -1 -GODADDY godaddy.comx.co godaddy - -KOTLINkotlinlang.org -0 - -SOUNDCLOUDsoundcloud.com -sndcdn.com - -MAYING  maying.co - -PRESS  press.vin -& - STEAMUNLOCKEDsteamunlocked.net -4 - -TEAMBITIONteambition.comteambition.net -H - NEXITALLY nexitally.comnexitallysafe.com nexitcore.com -æ - SWISSSIGN digital-id.ch digitalid.chmanaged-pki.chmanaged-pki.de pki-post.ch pki-posta.ch pki-poste.chroot-signing.chrootsigning.comssl-certificate.ch -swissid.ch swissign.com swissign.liswisssign-group.chswisssign-group.comswisssign-group.li swisssign.ch swisssign.com swisssign.li swisssign.net swisssign.orgswisssigner.chswisssigner.comswisssigngroup.chswisssigngroup.comswissstick.com swisstsa.ch swisstsa.li trustdoc.ch trustsign.ch zert.ch - -TUBE8  tube8.com - -AAEX aaex.uk -¡ -AMAZON -amazon.com amazon.com.au amazon.co.uk amazon.co.jp  amazon.de  amazon.jp amazon.jobsamazontrust.com amzn.commedia-amazon.comssl-images-amazon.com amazonaws.comamplifyapp.com awsstatic.com awstrust.comcloudfront.netelasticbeanstalk.comamazonvideo.comprimevideo.comaws!amazon-adsystem.com -@ads -~ -GITLAB -gitlab.com  gitlab.io -gitlab.netgitlab-static.net.*gitlab-assets.oss-cn-hongkong.aliyuncs.com -½ -IQIYI 71.am  iqiyi.com iqiyipic.com -pps.tv -ppsimg.com qiyi.com qiyipic.com -qy.net -71edge.coma.ckm.iqiyi.com +@adsx.clearbitjs.com bluekai.com +@adsfout.jp +@ads gmossp-sp.jp +@adsi-mobile.co.jp +@ads im-apps.net +@ads impact-ad.jp +@ads ladsp.com +@ads microad.co.jp +@ads +microad.jp +@ads socdm.com +@adsdata.flurry.com  admob.com adsense.comadservice.google.comadvertisercommunity.comadvertiserscommunity.comadwords-community.com adwords.comadwordsexpress.comapp-measurement.comclickserver.googleads.comdoubleclick.comdoubleclick.netgoogle-analytics.comgoogleadapis.comgoogleadservices.comgoogleanalytics.comgoogleoptimize.comgooglesyndication.comgoogletagmanager.comgoogletagservices.comgoogletraveladservices.com +urchin.comclick.hunantv.com +@adsda.hunantv.com +@ads da.mgtv.com +@adslog.hunantv.com +@ads log.v2.hunantv.com +@adsres.hunantv.com +@ads v2.log.hunantv.com +@adsinner-active.mobi +@adsa.ckm.iqiyi.com @adsad.m.iqiyi.com @ads afp.iqiyi.com @adsc.uaa.iqiyi.com @@ -3134,100 +2975,119 @@ ppsimg.com qiyi.com qiyipic.com @ads!msg2.video.qiyi.com @ads$policy.video.iqiyi.com @adsyuedu.iqiyi.com -@ads -e -METART -metart.commetartnetwork.com metcams.comnaiadsystems.com  nsimg.net - -NODEJS -nodejs.org -/ - -THEINITIUMtheinitium.com  init.shop -* -HKOPENTV hkopentv.com fantv.hk -- -LANTERNgetlantern.org -lantern.io - - -POSTGRESQLpostgresql.org -½ -RARBG rarbg.me rarbg.to rarbg.israrbgaccess.org rarbggo.orgrarbgmirror.comrarbgmirror.orgrarbgproxy.org rarbgprx.orgrarbgunblock.com - -CLOUDN  cloudn.me - -IPFS ipfs.io -E -PIXIV  pixiv.net  pixiv.org pixiv.co.jp  pximg.net - -PSIPHON psiphon3.com -* -SCIENTIFICLINUXscientificlinux.org - -LINUX  linux.org -¿ -ORACLE -oracle -oracle.comoraclecloud.comoraclefoundation.org oracleimg.comateam-oracle.com -bronto.com sun.comjava java.com java.net -" - RASPBERRYPIraspberrypi.org -j -HP -hp.comhpstore-china.com hpstore.com www8-hp.comhpstore.corpmerchandise.com -3 -INNER-ACTIVE-ADSinner-active.mobi -@ads -+ -RUBY ruby-lang.org rubygems.org -C - SCIENCEDIRECTsciencedirect.comsciencedirectassets.com -4 -CSIS csis.orgcsis-prod.s3.amazonaws.com -( -IMGUR  imgur.com imgurinc.com - - R-PROJECT r-project.org - -TABOOLA taboola.com - -PATREON patreon.com -. -CHINADIGITALTIMESchinadigitaltimes.net -¦ - CHINAMOBILE 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn -cmvideo.cn miguvideo.com andfx.cn  andfx.net -cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com -3 -ENTRUST entrust.netentrustdatacard.com - -I2P -geti2p.net -p -ONEPLUS oneplus.com -oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com -Z -SPRINGER -apress.com springer.comspringerlink.comspringernature.com -t - CAMBRIDGE cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.org - -GRAVATAR gravatar.com - - -JINRISHICIjinrishici.com -) -LINGUEE linguee.com  deepl.com - -PHP php.net -* - ADCOLONY-ADS adcolony.com -@ads -< -ANACONDA anaconda.com anaconda.org conda.io - -SOHU-ADSadnet.sohu.com +@adsads.union.jd.com +@ads c-nfa.jd.com +@adscps.360buy.com +@ads +jzt.jd.com +@ads stat.m.jd.com +@ads img-x.jd.com +@ads!log-sdk.gifshow.com +@adswlog.kuaishou.com +@ads$api.game.letvstore.com +@ads ark.letv.com +@ads dc.letv.com +@adsdev.dc.letv.com +@ads fz.letv.com +@ads g3.letv.com +@adsletv.allyes.com +@adsminisite.letv.com +@adsmsg.m.letv.com +@adsn.mark.letv.com +@adsplog.dc.letv.com +@adspro.hoye.letv.com +@ads pro.letv.com +@ads stat.letv.com +@ads#static.app.m.letv.com +@adsdecide.mixpanel.com mopub.com +@adsevt.mxplay.com +@ads g.163.com +@ads onesignal.comPB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +@adsads.pubmatic.com +@adscdn.segment.com 2016.sina.cn +@adsad.sina.com.cn +@adsadbox.sina.com.cn +@ads"adimages.sina.com.hk +@ads"adimg.mobile.sina.cn +@ads!adimg.uve.weibo.com +@ads"adm.leju.sina.com.cn +@ads ads.sina.com +@adsalitui.weibo.com +@adsapi.apps.sina.cn +@ads!appgift.sinaapp.com +@ads$appsupdate.sinaapp.com +@ads atm.sina.com +@ads beacon.sina.com.cn +@ads biz.weibo.com +@adsc.biz.weibo.com +@ads"c.wcpt.biz.weibo.com +@ads&click.uve.mobile.sina.cn +@ads!click.uve.weibo.com +@adscm.dmp.sina.cn +@ads1#contentrecommend-out.mobile.sina.cn +@ads%count.video.sina.com.cn +@ads!counter.sina.com.cn +@adscre.dp.sina.cn +@adscre-dp.sina.cn +@adsd00.sina.com.cn +@adsdcads.sina.com.cn +@adsdl.kjava.sina.cn +@ads dmp.sina.cn +@adsdp.im.weibo.cn +@ads game.weibo.cn +@adsgame.weibo.com +@ads#gw5.push.mcp.weibo.cn +@ads#gw6.push.mcp.weibo.cn +@ads#img.adbox.sina.com.cn +@ads$img.amp.ad.sina.com.cn +@ads#int.dpool.sina.com.cn +@ads&interest.mix.sina.com.cn +@ads*log.interest.mix.sina.com.cn +@ads!log.mix.sina.com.cn +@ads log.sina.cn +@ads"m.beacon.sina.com.cn +@adsm.game.weibo.cn +@ads"mg.games.sina.com.cn +@ads"motu.p4p.sina.com.cn +@ads newspush.sinajs.cn +@ads!oascentral.sina.com +@ads$oascentral.sina.com.hk +@adsp4p.sina.com.cn +@adspalmnews.sina.cn +@ads pay.mobile.sina.cn +@adspfp.sina.com.cn +@adspfpip.sina.com +@ads"promote.biz.weibo.cn +@ads r.dmp.sina.cn +@adsrm.sina.com.cn +@ads rs.sinajs.cn +@ads s.alitui.weibo.com +@ads#s.img.mix.sina.com.cn +@ads sapi.sina.cn +@ads sax.sina.cn +@adssax.sina.com.cn +@adssaxn.sina.com.cn +@adssaxs.sina.com.cn +@ads!sbeacon.sina.com.cn +@ads#sdkapp.mobile.sina.cn +@ads"sdkapp.uve.weibo.com +@ads%sdkclick.mobile.sina.cn +@ads slog.sina.cn +@adsslog.sina.com.cn +@ads(staticadm.leju.sina.com.cn +@adstjs.sjs.sinajs.cn +@ads#trends.mobile.sina.cn +@ads#u1.img.mobile.sina.cn +@ads'wapwbclick.mobile.sina.cn +@ads"wbapp.mobile.sina.cn +@ads!wbapp.uve.weibo.com +@ads$wbclick.mobile.sina.cn +@ads%wbpctips.mobile.sina.cn +@adswidget.weibo.com +@ads!woocall.sina.com.cn +@adszc.biz.weibo.com +@ads zymo.mps.weibo.com +@adsadnet.sohu.com @ads ads.sohu.com @ads aty.sohu.com @adsdata.vod.itc.cn @@ -3243,253 +3103,369 @@ JINRISHICIjinrishici.com @adsv2.reachmax.cn @ads*e8aeb8bbdbbd7.cdn.sohucs.com @ads*643108e7617ef.cdn.sohucs.com -@ads -! -NTD ntd.com  ntdtv.com -. -XUEQIUdanjuanfunds.com -xueqiu.com -7 - BOOTSTRAPbootstrapcdn.comgetbootstrap.com -H -COOLAPK coolapk.comcoolapkmarket.comcoolapkmarket.net - -GITV gitv.cn gitv.tv -w -JWPLAYER -jwpcdn.comjwplatform.com jwplayer.com -jwpltx.com -jwpsrv.comlongtailvideo.com -1 -N3RO n3ro.fun  n3ro.live n3ro.net -" -TED ted.com -tedcdn.com -Y -UNIONPAY  95516.com unionpay.comunionpayintl.comunionpaysecure.com -ûT -GOOGLE blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn go-lang.com go-lang.net go-lang.org -go.dev  godoc.org -golang.com -golang.net -golang.org ggpht.cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com youtube.comyoutubeeducation.comyoutubegaming.comyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.com  admob.com adsense.comadservice.google.comadvertisercommunity.comadvertiserscommunity.comadwords-community.com adwords.comadwordsexpress.comapp-measurement.comclickserver.googleads.comdoubleclick.comdoubleclick.netgoogle-analytics.comgoogleadapis.comgoogleadservices.comgoogleanalytics.comgoogleoptimize.comgooglesyndication.comgoogletagmanager.comgoogletagservices.comgoogletraveladservices.com -urchin.com -googlegoog  google.ad  google.ae  google.al  google.am  google.as  google.at  google.az  google.ba  google.be  google.bf  google.bg  google.bi  google.bj  google.bs  google.bt  google.by  google.ca -google.cat  google.cd  google.cf  google.cg  google.ch  google.ci  google.cl  google.cm  google.cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.id google.co.il google.co.in google.co.jp google.co.ke google.co.kr google.co.ls google.co.ma google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw -google.com google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn  google.cv  google.cz  google.de  google.dj  google.dk  google.dm  google.dz  google.ee  google.es  google.fi  google.fm  google.fr  google.ga  google.ge  google.gg  google.gl  google.gm  google.gr  google.gy  google.hn  google.hr  google.ht  google.hu  google.ie  google.im  google.iq  google.is  google.it  google.je  google.jo  google.kg  google.ki  google.kz  google.la  google.li  google.lk  google.lt  google.lu  google.lv  google.md  google.me  google.mg  google.mk  google.ml  google.mn  google.ms  google.mu  google.mv  google.mw  google.ne  google.nl  google.no  google.nr  google.nu  google.pl  google.pn  google.ps  google.pt  google.ro  google.rs  google.ru  google.rw  google.sc  google.se  google.sh  google.si  google.sk  google.sm  google.sn  google.so  google.sr  google.st  google.td  google.tg  google.tl  google.tm  google.tn  google.to  google.tt  google.vg  google.vu  google.ws 0emm.com  1e100.net  1ucrs.com -466453.com abc.xyz adgoogle.net -admeld.com amp.devampproject.comampproject.netampproject.org android.comandroidify.comangulardart.org -api.ai -apigee.com appbridge.ca appbridge.io appbridge.it appspot.com -apture.com area120.com -asp-cc.com autodraw.com bandpage.combaselinestudy.combaselinestudy.org bazel.buildbeatthatquote.com  blink.org blogblog.com blogger.combrocaproject.com -brotli.org bumpshare.com -bumptop.ca bumptop.com bumptop.net bumptop.org bumptunes.comcampuslondon.com certificate-transparency.org chat.gle -chrome.comchromebook.comchromecast.com chromium.orgcloudburstresearch.comcloudfunctions.netcloudrobotics.comcobrasearch.com codespot.com conscrypt.com conscrypt.orgcookiechoices.org  coova.com  coova.net  coova.orgcrossmediapanel.com crr.com  cs4hs.com dart.dev dartlang.orgdartsearch.netdataliberation.org  debug.comdebugproject.com deepmind.comdevsitetest.howdialogflow.comdigitalassetlinks.org episodic.com fastlane.cifastlane.toolsfeedburner.com -fflick.comfinanceleadsonline.comfirebaseapp.comflutterapp.com -foofle.com froogle.com fuchsia.dev  g-tun.comg.co g.dev -g.pagegerritcodereview.comgetbumptop.com ggoogle.com gipscorp.com gkecnapps.cn globaledu.org  gmail.com gmodules.com  gogle.com -gogole.comgonglchuangl.net -goo.gl -googel.com -googil.com  googl.comgoogle-syndication.com google.berlin -google.dev -google.net -google.orggoogle.ventures"googleacquisitionmigration.com googleapis.cngoogleapis.comgoogleapps.comgooglearth.comgoogleblog.com googlebot.comgooglecapital.comgooglecert.netgooglecnapps.cngooglecode.comgooglecommerce.comgooglecompare.co.ukgoogledanmark.comgoogledomains.comgoogledrive.com googlee.comgoogleearth.comgooglefiber.netgooglefinland.comgooglemail.comgooglemaps.comgooglepagecreator.comgooglephotos.comgoogleplay.comgoogleplus.comgooglescholar.comgooglesource.comgooglestore.comgooglesverige.comgoogleusercontent.comgoogleventures.com -googlr.com -goolge.com gooogle.com gridaware.app gsrc.io -gstatic.cn gstatic.comgstaticcnapps.cn -gsuite.com -gv.com gvt0.com gvt1.com gvt2.com gvt3.com gvt5.com gvt6.com gvt7.com gvt9.comhdrplusdata.org hey.gle hindiweb.comhowtogetmo.co.ukhtml5rocks.com hwgo.comiamremarkable.org igoogle.com impermium.com -j2objc.orgjibemobile.com keyhole.comkeytransparency.comkeytransparency.fookeytransparency.org lanternal.com like.commadewithcode.com material.io mdialog.commfg-inspector.commobileview.pagemoodstocks.com near.by nest.com nomulus.foo -oauthz.com -ok.gle on.here on2.comonefifteen.netonefifteen.orgoneworldmanystories.com openthread.io openweave.io orbitera.com  page.linkpagespeedmobilizer.com pageview.mobi panoramio.compartylikeits1986.orgpaxlicense.org -picasa.com picasaweb.com picasaweb.net picasaweb.org -picnik.com pittpatt.compolymer-project.orgpolymerproject.org postini.comprojectara.comprojectbaseline.compublishproxy.comquestvisual.comquickoffice.com quiksee.com recaptcha.net -revolv.comridepenguin.com run.appsavethedate.foo -saynow.com schemer.comscreenwisetrends.comscreenwisetrendspanel.com snapseed.com solveforx.com -stadia.devstcroixmosquito.comstcroixmosquitoproject.comstudywatchbyverily.comstudywatchbyverily.orgstxmosquito.comstxmosquitoproject.comstxmosquitoproject.netstxmosquitoproject.org synergyse.comtensorflow.org  tfhub.devthecleversense.comthegooglestore.comthinkquarterly.co.ukthinkquarterly.comthinkwithgoogle.com tiltbrush.com txcloud.net  txvia.comunfiltered.news -urchin.com useplannr.comusvimosquito.comusvimosquitoproject.com -v8.dev v8project.orgvelostrata.com -verily.comverilylifesciences.comverilystudyhub.comverilystudywatch.comverilystudywatch.org -wallet.com  waymo.com waze.com web.appwebappfieldguide.comwebmproject.orgwebpkgcache.com -webrtc.orgweltweitwachsen.dewhatbrowser.org widevine.comwithgoogle.com womenwill.comwomenwill.com.br womenwill.id womenwill.in womenwill.mx  x.company -x.team xn--9kr7l.comxn--9trs65b.comxn--flw351e.com xplr.cozukunftswerkstatt.de -é - HUNANTV-ADSclick.hunantv.com -@adsda.hunantv.com -@ads da.mgtv.com -@adslog.hunantv.com -@ads log.v2.hunantv.com -@adsres.hunantv.com -@ads v2.log.hunantv.com -@ads -È -QIHOO360 -360.cn 360.com -360-jr.com 360chou.com360daikuan.com360huzhubao.com -360jie.com360jinrong.net -360kan.com 360kuai.com  360os.com 360safe.com 360shouji.com 360taojin.com 360tpcdn.com360webcache.com  haoso.com -haosou.com haosou.com.cn -haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com qihucdn.com  qihoo.com qikucdn.com -so.com sou.com xjietiao.com - -RENZHE renzhe.cloud -C -SPOTIFY pscdn.co scdn.co spotify.com spoti.fi -ï -DISNEYadventuresbydisney.com -babble.com -dilcdn.comdisney-plus.net  disney.ca -disney.com disney.com.br  disney.iodisneyaulani.comdisneybaby.comdisneyjunior.comdisneylatino.comdisneymovieinsiders.comdisneyplus.comdisneyredirects.comdisneystore.com -dssott.com -go.commoviesanywhere.complaymation.comshopdisney.com starwars.comthestationbymaker.comthisispolaris.com -$ -GFW  gfw.press -gfw.report +@adsssp.api.tappx.com +@ads ad.qq.com +@ads ad.qun.qq.com +@ads"adfilter.imtt.qq.com +@ads adping.qq.com +@adsadpm.app.qq.com +@adsadsclick.qq.com +@adsadsfile.qq.com +@adsadshmmsg.qq.com +@adsadslvfile.qq.com +@adsadslvseed.qq.com +@ads&adsmind.apdcdn.tc.qq.com +@adsadsqqclick.qq.com +@ads adstestview.qq.com +@adsadsview.qq.com +@adsadsview2.qq.com +@adsadv.app.qq.com +@ads adver.qq.com +@ads btrace.qq.com +@adse.qq.com +@adslog.tbs.qq.com +@ads mpush.qq.com +@ads mtrace.qq.com +@ads push.qq.com +@ads pgdt.gtimg.cn +@ads uberads.com +@adsalog.umeng.com +@ads!alog.umengcloud.com +@ads"unityads.unity3d.com +@ads$unityads.unitychina.cn +@ads ads.wteam.xyz ad.intl.xiaomi.com +@ads ad.mi.com +@ads ad.xiaomi.com +@adsadmob.xiaomi.com +@adsad1.xiaomi.com +@adsmistat.xiaomi.com +@adstracking.miui.com +@adsadv.sec.miui.com +@ads#adv.sec.intl.miui.com +@ads#misc.in.duokanbox.com +@ads ad.hpplay.cn +@adsadeng.hpplay.cn +@ads atianqi.com +@ads kuyun.com +@ads umeng.com +@ads ads.yahoo.com +@adsgemini.yahoo.com +@adsactives.youku.com +@ads!ad.api.3g.youku.com +@ads%ad.api.mobile.youku.com +@ads!ad.mobile.youku.com +@ads)a-dxk.play.api.3g.youku.com +@ads atm.youku.com +@ads$b.smartvideo.youku.com +@adsc.yes.youku.com +@adsdas.api.youku.com +@ads"das.mobile.youku.com +@ads"dev-push.m.youku.com +@adsdl.g.youku.com +@adsdmapp.youku.com +@adse.stat.ykimg.com +@ads$gamex.mobile.youku.com +@ads"guanggaoad.youku.com +@ads!hudong.pl.youku.com +@ads"huodong.pl.youku.com +@ads#huodong.vip.youku.com +@ads hz.youku.com +@adsiyes.youku.com +@ads l.ykimg.com +@adslstat.youku.com +@ads!mobilemsg.youku.com +@ads msg.youku.com +@adsmyes.youku.com +@ads p.l.youku.com +@ads pl.youku.com +@ads$passport-log.youku.com +@adsp-log.ykimg.com +@adspush.m.youku.com +@ads r.l.youku.com +@ads s.p.youku.com +@adssdk.m.youku.com +@adsstat.youku.com +@ads%statis.api.3g.youku.com +@ads'store.tv.api.3g.youku.com +@ads'store.xl.api.3g.youku.com +@adstdrec.youku.com +@ads test.ott.youku.com +@ads"test.sdk.m.youku.com +@ads v.l.youku.com +@adsval.api.youku.com +@ads&vali.cp31.ott.cibntv.net +@ads wan.youku.com +@adsykatr.youku.com +@adsykrec.youku.com +@ads cvnad.com +@ads +iyoowi.com +@ads 51y5.net a.adtng.com +aaxads.com +ad-srv.netad.api.moji.comad.wang502.com adbutter.netads.trafficjunky.net adtechus.comcfts1tifqr.comcontentabc.comimg-bss.csdn.net imglnkc.com imglnkd.comja2.gamersky.com jl3.yjaxa.topkepler-37b.com +lqc006.coms4yxaqyq95.comshhs-ydd8x2.yjrmss.cnstatic.javhd.comtrafficfactory.biz toboads.com ad.unimhk.com ysm.yahoo.com adxprtz.com exoclick.com +exosrv.comcdn.advertserve.comcdn.banclip.comcdn.tsyndicate.com +A + PINDUODUO +pddpic.com pinduoduo.com yangkeduo.com + +VIM vim.org + + PACKAGIST packagist.org + +EPORNER eporner.com +~ +HUAWEI hicloud.com hihonor.com honor.cn +huawei.comhuaweicloud.com  vmall.com vmallres.com +% +ZHIHU  zhihu.com  zhimg.com + +CNKI cnki.net +Ë + ALIBABACLOUDalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.com +a + APPLE-ADSiadsdk.apple.com +@ads iad.apple.com +@ads qwapi.com +@ads ! -MIAOPASIxn--i2ru8q2qg.com -+ -TYPEKIT typekit.com typekit.net +FREENETfreenetproject.org +3 +HKEDCITY hkedcity.nethkreadingcity.net +" + HUBBLEPHONEhubblephone.com & - CHINADECODINGchinadecoding.com - -FREEBSD freebsd.org -/ -XVIDEOS xvideos.comxvideos-cdn.com -7 - FONTAWESOMEfontawesome.comfortawesome.com -×– -GEOLOCATION-CN 3304399.net 4399.com 4399dmw.com -4399er.com4399youpai.com 5054399.com img4399.com  51job.com 51jobcdn.comyingjiesheng.comzhiding.com.cn -58.com  58.com.cn 5858.com  58che.com 58xueche.com -anjuke.comanjukestatic.com chinahr.com fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com acfun.cn aixifan.com!apilog-web.acfun.cn -@ads -acplay.netdandanplay.com 25pp.com  56che.com  95095.com 9game.cn -aliapp.org alibaba.comalibaba-inc.comalibabacapital.comalibabacorp.comalibabadns.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com -alicdn.com alidayu.com -alidns.com alifanyi.comalihealth.com.cn alihealth.hk -aliimg.com -alikmd.com alimama.com alimebot.com alios.cn -alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com -aliway.com aliwork.com alixiaomi.com -aliyun.comaliyun-inc.com aliyuncdn.com aliyuncs.comalizhaopin.com -asczwa.comasczxcefsv.com atatech.org -b2byao.com  bazai.com  bcvbw.com  cheng.xin damai.cn -dfkhgj.com doctoryou.ai doctoryou.cn dongting.com -dratio.com emas-poc.com -gongyi.xin hichina.com iconfont.cn -ics.design -jhgtgb.com -kanbox.com -lazada.comliangxinyao.com -maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc mxhichina.com nic.xinphilanthropy.xin saee.org.cn shenjing.com  shuqi.comshuqireader.com wandoujia.comxinlingshou.cn yowhale.com  yunos.com yunos-inc.comyushanfang.com -zuodao.com sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com -hemaos.com shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com pailitao.com -taobao.com -taobao.org taobaocdn.comtaopiaopiao.com tb.cn tbcache.com  tmall.com tmalltv.com tmjl.ai alitrip.com  feizhu.cn -feizhu.com -fliggy.com  fliggy.hk -iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net a.alimama.cn -@adsacjs.aliyun.com -@ads adash.m.taobao.com -@ads"adashbc.m.taobao.com -@ads#adashbc.ut.taobao.com -@ads#adash-c.ut.taobao.com -@ads!adashx.m.taobao.com -@ads%adashx4ae.ut.taobao.com -@ads$adashx4yt.m.taobao.com -@ads$adashxgc.ut.taobao.com -@adsadsh.m.taobao.com -@adsafp.adchina.com -@adsafp.alicdn.com -@ads!agoodm.m.taobao.com -@ads$agoodm.wapa.taobao.com -@ads alipaylog.com -@adsamdc.alipay.com -@adsamdc.m.taobao.com -@ads!api.wapa.taobao.com -@ads$api.waptest.taobao.com -@ads apoll.m.taobao.com -@ads$appdownload.alicdn.com -@adsatanx.alicdn.com -@adsatanx2.alicdn.com -@adscbu01.alicdn.com -@adscdn0.mobmore.com -@adsclick.aliyun.com -@ads'click.mz.simba.taobao.com -@adscm.ipinyou.com -@ads cm.mlt01.com -@ads"dsp.simba.taobao.com -@adserr.taobao.com -@adsex.mobmore.com -@ads ex.puata.info -@ads"fav.simba.taobao.com -@ads%feedback.whalecloud.com -@adsff.win.taobao.com -@ads fm.p0y.cn -@ads g.click.taobao.com -@ads -g.tbcdn.cn -@adsgma.alicdn.com -@adsgtms01.alicdn.com -@adsgtms02.alicdn.com -@adsgtms03.alicdn.com -@adsgtms04.alicdn.com -@adshydra.alibaba.com -@ads(hz.pre.tbusergw.taobao.net -@ads$hz.tbusergw.taobao.net -@ads i.ipinyou.com -@adsinit.phpwind.com -@ads"intl.wapa.taobao.com -@ads%intl.waptest.taobao.com -@ads#jxlog.istreamsche.com -@adslog.umtrack.com -@adsm.intl.taobao.com -@ads m.simba.taobao.com -@ads match.p4p.1688.com -@ads&material.istreamsche.com -@ads mlt01.com -@ads'nbsdk-baichuan.alicdn.com -@ads'nbsdk-baichuan.taobao.com -@ads#osfota.cdn.aliyun.com -@ads!osupdate.aliyun.com -@ads'osupdateservice.yunos.com -@ads&pindao.huoban.taobao.com -@ads push.wandoujia.com -@adsre.m.taobao.com -@ads re.taobao.com -@ads'redirect.simba.taobao.com -@adsrj.m.taobao.co -@adsrj.m.taobao.com -@ads sdkinit.taobao.com -@ads show.re.taobao.com -@adssimaba.taobao.com -@ads simba.m.taobao.com -@ads"srd.simba.taobao.com -@adsstats.ipinyou.com -@ads!strip.taobaocdn.com -@ads%tanxlog.istreamsche.com -@adstejia.taobao.com -@adstemai.taobao.com -@ads"tns.simba.taobao.com -@ads!tongji.linezing.com -@ads!tvupgrade.yunos.com -@adstyh.taobao.com -@adsuserimg.qunar.com -@adsw.m.taobao.com -@adsyiliao.hupan.com -@ads ddurl.to dingding.xin dingtalk.com dingtalk.net dingtalk.cndingtalkapps.com laiwang.com lwurl.to -91.com -aipage.com apollo.auto baidu.cn  baidu.com baidubce.combaiducontent.com baidupcs.combaidustatic.com -baifae.com baifubao.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn -bdydns.net chuanke.com  dlnel.com  dlnel.org -duapps.com -dwz.cn -hao123.com hao123img.com -hao222.com -haokan.com jomocdn.net jomodns.com -mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com a.baidu.com +XNXX xnxx.com xnxx-cdn.com +. + ACFUN-ADS!apilog-web.acfun.cn +@ads +é + HUNANTV-ADSclick.hunantv.com +@adsda.hunantv.com +@ads da.mgtv.com +@adslog.hunantv.com +@ads log.v2.hunantv.com +@adsres.hunantv.com +@ads v2.log.hunantv.com +@ads + +IPFS ipfs.io +, +LINUXFROMSCRATCHlinuxfromscratch.org +æ + SWISSSIGN digital-id.ch digitalid.chmanaged-pki.chmanaged-pki.de pki-post.ch pki-posta.ch pki-poste.chroot-signing.chrootsigning.comssl-certificate.ch +swissid.ch swissign.com swissign.liswisssign-group.chswisssign-group.comswisssign-group.li swisssign.ch swisssign.com swisssign.li swisssign.net swisssign.orgswisssigner.chswisssigner.comswisssigngroup.chswisssigngroup.comswissstick.com swisstsa.ch swisstsa.li trustdoc.ch trustsign.ch zert.ch + +XART  x-art.com +û +CATEGORY-ANTICENSORSHIP ahmia.fi akasha.worldbrowserleaks.combypasscensorship.org citizenlab.cadat.foundationdemocracy.earth eff.orgepicbrowser.com ffprofile.comfreenetproject.org fteproxy.org  gfw.press +gfw.report greatfire.orgguardianproject.infohaveibeenpwned.compwnedpasswords.com +geti2p.net ipfs.io  jitsi.orggetlantern.org +lantern.io  ntc.partyonionshare.org ooni.org openvpn.netprivacytools.io psiphon3.comshadowsocks.org softether.orgsoftether-download.com stunnel.org telex.cctorproject.org tribler.org tunsafe.comtwister.net.co +uproxy.org  v2ray.com +v2ray.cool  v2fly.org vuvuzela.io +whonix.org wikileaks.org wireguard.com +zeronet.io +U + UNITY-ADS"unityads.unity3d.com +@ads$unityads.unitychina.cn +@ads + +XDTY xdty.org +! +MIAOPASIxn--i2ru8q2qg.com + +ERJI erji.net +ý +ZOHO zoho.com zoho.com.au zoho.eu zoho.in zohocdn.comzohomeetups.comzohomerchandise.comzohopublic.comzohoschools.comzohostatic.com zohostatic.inzohouniversity.comzohowebstatic.com +î +EPOCHMEDIAGROUP dajiyuan.com dajiyuan.euepochmediagroup.comepochstories.com epochtime.comepochtimes-romania.comepochtimes.co.ilepochtimes.co.krepochtimes.co.ukepochtimes.comepochtimes.com.auepochtimes.com.brepochtimes.com.sgepochtimes.com.twepochtimes.com.ua epochtimes.cz epochtimes.de epochtimes.eu epochtimes.fr epochtimes.it epochtimes.jp epochtimes.nl epochtimes.pl epochtimes.ru epochtimes.seepochtimestr.com epochweek.comepochweekly.com erabaru.netlagranepoca.com ntd.com ntdtv.ca ntdtv.co.kr  ntdtv.com ntdtv.com.tw ntdtv.jp ntdtv.kr  ntdtv.org ntdtv.ru ntdtvla.com  ntdvn.comtheepochtimes.comtheepochtimessubscribe.comvelkaepocha.cz +› + +GLOBALSIGNglobalsign-media.com globalsign.be globalsign.chglobalsign.co.ukglobalsign.comglobalsign.com.auglobalsign.com.hkglobalsign.com.sg globalsign.es globalsign.eu globalsign.frglobalsign.net globalsign.nl + + +INFRAPEDIAinfrapedia.com + +JAVHD  javhd.com +3 +PPTV  pplive.cn +pplive.com pptv.com +< +SHOWTIMEANYTIMEshowtimeanytime.com showtime.com + + WTEAM-ADS ads.wteam.xyz +õ + CATEGORY-DEValpinelinux.org amp.devampproject.comampproject.netampproject.org anaconda.com anaconda.org conda.io android.comandroidify.com +apache.org archlinux.orgarchlinuxarm.org atom.iobootstrapcdn.comgetbootstrap.com +centos.orgchocolatey.org clojure.org +cygwin.com +cython.org dart.dev dartlang.org dartpad.dev +debian.org +dotdeb.org  deno.landcompose-spec.io +docker.com  docker.ioelixir-lang.org +elrepo.org +erlang.org fastlane.cifastlane.tools getfedora.orgfedoraforum.orgfedoraproject.orgfedoramagazine.org flutter.devflutterapp.comfontawesome.comfortawesome.com freebsd.org +gentoo.orggetcomposer.org gitbook.com +gitbook.iogitbook.zendesk.com +git.io github.blog +github.comgithub.community  github.io githubapp.comgithubassets.comgithubstatus.comgithubusercontent.com atom.io/+github-avatars.oss-cn-hongkong.aliyuncs.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.com +gitlab.com  gitlab.io +gitlab.netgitlab-static.net.*gitlab-assets.oss-cn-hongkong.aliyuncs.com gnu.org go-lang.com go-lang.net go-lang.org +go.dev  godoc.org +golang.com +golang.net +golang.org  consul.io hashicorp.comnomadproject.io  packer.io terraform.io vagrantup.comvaultproject.io haskell.orghaskellstack.org stackage.org brew.sh +ius.iojava java.com java.net +jenkins.io jetbrains.com jetbrains.net datalore.iokotlinlang.org +jquery.comjquerymobile.com jqueryui.com +js.org jupyter.org kali.org +kernel.orgkotlinlang.org kubernetes.io +k8s.io  linux.orglinuxfromscratch.org linuxmint.com lua.org macports.org mariadb.org  mingw.org mongodb.com mongodb.org  mysql.com  nginx.com  nginx.org  nixos.org +nodejs.orgnodesource.comnotepad-plus-plus.org  npmjs.com npm.community openresty.org openssl.org opensuse.org openwrt.orglede-project.org packagist.org pcre.org perl.org cpan.org metacpan.org phantomjs.org php.netpolymer-project.orgpolymerproject.orgpostgresql.org +python.orgpythonhosted.org pypa.io pypi.org qt.ioqt-project.org r-project.orgraspberrypi.org raspbian.orgreadthedocs-hosted.comreadthedocs.comreadthedocs.ioreadthedocs.org redis.io remirepo.net rpmfusion.org ruby-lang.org rubygems.orgscala-lang.org scala-sbt.orgscientificlinux.org +sqlite.org askubuntu.comblogoverflow.commathoverflow.netserverfault.com sstatic.net stackapps.com stackauth.comstackexchange.com stackmod.blogstackoverflow.blogstackoverflow.comstackoverflow.emailstackoverflowbusiness.comstacksnippets.net superuser.com tex-talk.netthesffblog.comsublimetext.com  swift.org +ubuntu.com +ubuntu.netubuntuforums.org  unity.com unity3d.com"unityads.unity3d.com +@ads$unityads.unitychina.cn +@ads  unpkg.com +v8.dev v8project.org vim.org wireshark.org x.orgxda-developers.com xda-cdn.com xposed.info yarnpkg.com + +JAVBUS +javbus.com + +MINGW  mingw.org +\ +PRIVATE local  localhostlocalhost.sec.qq.comlocalhost.ptlogin2.qq.com + + +CHOCOLATEYchocolatey.org +# + DATFOUNDATIONdat.foundation + +MOOV moov.hk +I +PYTHON +python.orgpythonhosted.org pypa.io pypi.org + +4399 3304399.net 4399.com 4399api.com 4399dmw.com +4399er.com4399youpai.com 5054399.com img4399.com +" +LIHKG +lih.kg  lihkg.com +A +MEIZU flyme.cn meizu.cn  meizu.com  mzres.com +† +NICONICOnico +nicodic.jp nicomanga.jp niconico.com nicoseiga.jp nicovideo.jp nimg.jp simg.jp + + WIKILEAKS wikileaks.org + +KNOVEL +knovel.com + + BLINKLOADblinkload.zone +ù +CATEGORY-ADS-ALLadvertserve.com httpool.com mgid.com +unimhk.com taboola.com!apilog-web.acfun.cn +@ads adcolony.com +@ads a.alimama.cn +@adsacjs.aliyun.com +@ads adash.m.taobao.com +@ads"adashbc.m.taobao.com +@ads#adashbc.ut.taobao.com +@ads#adash-c.ut.taobao.com +@ads!adashx.m.taobao.com +@ads%adashx4ae.ut.taobao.com +@ads$adashx4yt.m.taobao.com +@ads$adashxgc.ut.taobao.com +@adsadsh.m.taobao.com +@adsafp.adchina.com +@adsafp.alicdn.com +@ads!agoodm.m.taobao.com +@ads$agoodm.wapa.taobao.com +@ads alipaylog.com +@adsamdc.alipay.com +@adsamdc.m.taobao.com +@ads!api.wapa.taobao.com +@ads$api.waptest.taobao.com +@ads apoll.m.taobao.com +@ads$appdownload.alicdn.com +@adsatanx.alicdn.com +@adsatanx2.alicdn.com +@adscbu01.alicdn.com +@adscdn0.mobmore.com +@adsclick.aliyun.com +@ads'click.mz.simba.taobao.com +@adscm.ipinyou.com +@ads cm.mlt01.com +@ads"dsp.simba.taobao.com +@adserr.taobao.com +@adsex.mobmore.com +@ads ex.puata.info +@ads"fav.simba.taobao.com +@ads%feedback.whalecloud.com +@adsff.win.taobao.com +@ads fm.p0y.cn +@ads g.click.taobao.com +@ads +g.tbcdn.cn +@adsgma.alicdn.com +@adsgtms01.alicdn.com +@adsgtms02.alicdn.com +@adsgtms03.alicdn.com +@adsgtms04.alicdn.com +@adshydra.alibaba.com +@ads(hz.pre.tbusergw.taobao.net +@ads$hz.tbusergw.taobao.net +@ads i.ipinyou.com +@adsinit.phpwind.com +@ads"intl.wapa.taobao.com +@ads%intl.waptest.taobao.com +@ads#jxlog.istreamsche.com +@adslog.umtrack.com +@adsm.intl.taobao.com +@ads m.simba.taobao.com +@ads match.p4p.1688.com +@ads&material.istreamsche.com +@ads mlt01.com +@ads'nbsdk-baichuan.alicdn.com +@ads'nbsdk-baichuan.taobao.com +@ads#osfota.cdn.aliyun.com +@ads!osupdate.aliyun.com +@ads'osupdateservice.yunos.com +@ads&pindao.huoban.taobao.com +@ads push.wandoujia.com +@adsre.m.taobao.com +@ads re.taobao.com +@ads'redirect.simba.taobao.com +@adsrj.m.taobao.co +@adsrj.m.taobao.com +@ads sdkinit.taobao.com +@ads show.re.taobao.com +@adssimaba.taobao.com +@ads simba.m.taobao.com +@ads"srd.simba.taobao.com +@adsstats.ipinyou.com +@ads!strip.taobaocdn.com +@ads%tanxlog.istreamsche.com +@adstejia.taobao.com +@adstemai.taobao.com +@ads"tns.simba.taobao.com +@ads!tongji.linezing.com +@ads!tvupgrade.yunos.com +@adstyh.taobao.com +@adsuserimg.qunar.com +@adsw.m.taobao.com +@adsyiliao.hupan.com +@ads!amazon-adsystem.com +@adsiadsdk.apple.com +@ads iad.apple.com +@ads qwapi.com +@ads applovin.com +@ads +applvn.com +@ads a.baidu.com @ads ad.duapps.com @ads!ad.player.baidu.com @ads adm.baidu.com @@ -3650,110 +3626,73 @@ mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com @adsznsv.baidu.com @adszz.bdstatic.com @adszzy1.quyaoya.com -@ads -acg.tv acgvideo.com -b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com  hdslb.com im9.com -mincdn.com$ upos-hz-mirrorakam.akamaized.net -bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.com -douyin.com huaxiong.comjokecommunity.comneihanshequ.com -pstatp.com -snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com -wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com -ixigua.com ixgvideo.com  365yg.com -csdl.ac.cn  las.ac.cn 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn -cmvideo.cn miguvideo.com andfx.cn  andfx.net -cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com -189.cnchinatelecom.com.cn -chntel.com  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cn  wo.com.cn cnki.net  coding.me -coding.net coolapk.comcoolapkmarket.comcoolapkmarket.net c-t.workcowtransfer.com csdn.net -csdnimg.cn c-ctrip.com ctrip.cn  ctrip.com ctripbiz.com biji.com -ddmogo.com -igetget.cn igetget.com luojilab.com  mogoo.com -sao.cn saolife.com douyu.tv  douyu.com douyucdn.cn douyuscdn.com -ele.me elemecdn.com eleme.cn  ganji.comganjistatic1.com -gcores.com gitv.cn gitv.tv hicloud.com hihonor.com honor.cn -huawei.comhuaweicloud.com  vmall.com vmallres.com hupu.com hupucdn.com huya.com msstatic.com coolbuy.com  ifanr.com ifanr.inifanrusercontent.com -ifanrx.com -minapp.com 71.am  iqiyi.com iqiyipic.com -pps.tv -ppsimg.com qiyi.com qiyipic.com -qy.net -71edge.coma.ckm.iqiyi.com -@adsad.m.iqiyi.com -@ads afp.iqiyi.com -@adsc.uaa.iqiyi.com -@ads!cloudpush.iqiyi.com -@ads#cm.passport.iqiyi.com -@adscupid.iqiyi.com -@ads$emoticon.sns.iqiyi.com -@ads"gamecenter.iqiyi.com -@ads"hotchat-im.iqiyi.com -@ads ifacelog.iqiyi.com -@adsmbdlog.iqiyi.com -@ads msg.71.am -@ads msg.video.qiyi.com -@ads!msg2.video.qiyi.com -@ads$policy.video.iqiyi.com -@adsyuedu.iqiyi.com -@ads3.cn  300hu.com -360buy.com 360buyimg.com -360top.com -7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn -dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com -jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com -jd-app.com  jd-ex.com jd.cn jd.co.th -jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com -jingxi.com -jkcsjd.com -joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn -paipai.comprestodb-china.com qianxun.com toplife.com -vg.com wangyin.com  wdfok.com yhd.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com +@adsx.clearbitjs.com bluekai.com +@adsfout.jp +@ads gmossp-sp.jp +@adsi-mobile.co.jp +@ads im-apps.net +@ads impact-ad.jp +@ads ladsp.com +@ads microad.co.jp +@ads +microad.jp +@ads socdm.com +@adsdata.flurry.com  admob.com adsense.comadservice.google.comadvertisercommunity.comadvertiserscommunity.comadwords-community.com adwords.comadwordsexpress.comapp-measurement.comclickserver.googleads.comdoubleclick.comdoubleclick.netgoogle-analytics.comgoogleadapis.comgoogleadservices.comgoogleanalytics.comgoogleoptimize.comgooglesyndication.comgoogletagmanager.comgoogletagservices.comgoogletraveladservices.com +urchin.comclick.hunantv.com +@adsda.hunantv.com +@ads da.mgtv.com +@adslog.hunantv.com +@ads log.v2.hunantv.com +@adsres.hunantv.com +@ads v2.log.hunantv.com +@adsinner-active.mobi +@adsa.ckm.iqiyi.com +@adsad.m.iqiyi.com +@ads afp.iqiyi.com +@adsc.uaa.iqiyi.com +@ads!cloudpush.iqiyi.com +@ads#cm.passport.iqiyi.com +@adscupid.iqiyi.com +@ads$emoticon.sns.iqiyi.com +@ads"gamecenter.iqiyi.com +@ads"hotchat-im.iqiyi.com +@ads ifacelog.iqiyi.com +@adsmbdlog.iqiyi.com +@ads msg.71.am +@ads msg.video.qiyi.com +@ads!msg2.video.qiyi.com +@ads$policy.video.iqiyi.com +@adsyuedu.iqiyi.com +@adsads.union.jd.com @ads c-nfa.jd.com @adscps.360buy.com @ads jzt.jd.com @ads stat.m.jd.com @ads img-x.jd.com -@ads -42r.cn -5566ua.com aurorapush.cn -e0n.cn japps.cn jchat.io -jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com -jsurvey.cn  jvoice.cn -kc9.cn -n0q.cn pushcfg.com -s0n.cn jiemian.comjiemian.com.cnjinrishici.com jinshuju.netjinshujucdn.com jsdelivr.net jsdelivr.com gifshow.com ksapisrv.com kuaishou.com -yximgs.com!log-sdk.gifshow.com +@ads!log-sdk.gifshow.com @adswlog.kuaishou.com -@ads  lagou.com lgstatic.com -lancdn.comlandiannews.com  wsoso.com -liepin.com -lietou.comlietou-static.com mafengwo.cn mafengwo.com mafengwo.net  meitu.com meitudata.com dianping.com -maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com flyme.cn meizu.cn  meizu.com  mzres.com 126.com 126.link 126.net 127.net 163.com163industry.com 163mail.com 163qiyukf.com -163yun.com 166.net -haowu.linkicourse163.org  kaola.com -lofter.com  nease.netnetease-inc.com netease.com -netease.im -qiyukf.com ydstatic.com yeah.net -youdao.com g.163.com -@ads oneplus.com -oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com coloros.com finzfin.com h2os.com -heytap.com heytapcs.comheytapdownload.comheytapimage.com -myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobi  oppoer.meoppomobile.com oppopay.com opposhop.cn -realme.com realmebbs.comrealmemobile.com -pddpic.com pinduoduo.com yangkeduo.com  pplive.cn -pplive.com pptv.com -360.cn 360.com -360-jr.com 360chou.com360daikuan.com360huzhubao.com -360jie.com360jinrong.net -360kan.com 360kuai.com  360os.com 360safe.com 360shouji.com 360taojin.com 360tpcdn.com360webcache.com  haoso.com -haosou.com haosou.com.cn -haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com qihucdn.com  qihoo.com qikucdn.com -so.com sou.com xjietiao.com 6655.com cooldock.com -ithome.com lapin365.com ruanmei.com -saayaa.com win7china.com win8china.comsf-tech.com.cnsf-express.com  sfacg.com  97973.com sina.com -sinaimg.cn sina.com.cn  sinajs.cn sina.cn sinaapp.com sinaedge.com sinaimg.com -sinajs.com  weibo.com weibo.com.cn weibo.cn weibocdn.com 2016.sina.cn +@ads$api.game.letvstore.com +@ads ark.letv.com +@ads dc.letv.com +@adsdev.dc.letv.com +@ads fz.letv.com +@ads g3.letv.com +@adsletv.allyes.com +@adsminisite.letv.com +@adsmsg.m.letv.com +@adsn.mark.letv.com +@adsplog.dc.letv.com +@adspro.hoye.letv.com +@ads pro.letv.com +@ads stat.letv.com +@ads#static.app.m.letv.com +@adsdecide.mixpanel.com mopub.com +@adsevt.mxplay.com +@ads g.163.com +@ads onesignal.comPB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +@adsads.pubmatic.com +@adscdn.segment.com 2016.sina.cn @adsad.sina.com.cn @adsadbox.sina.com.cn @ads"adimages.sina.com.hk @@ -3836,20 +3775,24 @@ sinajs.com  weibo.com weibo.com.cn weibo.cn weibocdn.com @ads!woocall.sina.com.cn @adszc.biz.weibo.com @ads zymo.mps.weibo.com -@ads -go2map.com sogo.com  sogou.com sogoucdn.com saraba1st.com cnsuning.com -suning.comsuningcloud.comsuningestate.comsuningholdings.com -tapimg.com -taptap.comteambition.comteambition.net -apcdns.net foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn imqq.com  myapp.com myqcloud.com -qcloud.com qcloudimg.com qlogo.cn qpic.cn -qq.com -qqmail.com  qzone.comservicewechat.com smtcdns.com -tencent.cn tencent.comtencent.com.cntencent.com.hktencent.net.cntencent-cloud.comtencentmusic.comtencentyun.com -tenpay.com -wechat.com -wegame.com -weiyun.com ad.qq.com +@adsadnet.sohu.com +@ads ads.sohu.com +@ads aty.sohu.com +@adsdata.vod.itc.cn +@adsepro.sogou.com +@ads go.sohu.com +@adsgolden1.sogou.com +@adsimp.optaim.com +@adsinte.sogou.com +@adsinte.sogoucdn.com +@adslu.sogoucdn.com +@ads theta.sogoucdn.com +@adsuranus.sogou.com +@adsv2.reachmax.cn +@ads*e8aeb8bbdbbd7.cdn.sohucs.com +@ads*643108e7617ef.cdn.sohucs.com +@adsssp.api.tappx.com +@ads ad.qq.com @ads ad.qun.qq.com @ads"adfilter.imtt.qq.com @ads adping.qq.com @@ -3873,272 +3816,29 @@ weiyun.com ad.qq.com @ads mtrace.qq.com @ads push.qq.com @ads pgdt.gtimg.cn -@ads tiancity.comtiancitycdn.com -tipdim.org tmtpost.com chaindd.com -72whys.com checkzeit.com -tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com 40017.cn -17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com -ly.com  umeng.comwhalecloud.com umtrack.com  umsns.com -uyunad.comumengcloud.com mobmore.comalog.umeng.com +@ads uberads.com +@adsalog.umeng.com @ads!alog.umengcloud.com -@ads  95516.com unionpay.comunionpayintl.comunionpaysecure.comwanfangdata.com.cn -mi.com -mi-img.com  mifile.cn miui.com -miwifi.com  xiaomi.cn -xiaomi.com -xiaomi.netxiaomiyoupin.comdanjuanfunds.com -xueqiu.com  00cdn.com  88cdn.com -sandai.netthunderurl.com -xunlei.com ynet.com.cn ynet.com 0880.com ynet.cn -kumiao.com  youku.com  ykimg.com -mmstat.com soku.com -cibntv.net -youzan.com yzcdn.cn youzanyun.com yfcache.com yfcloud.com  yfp2p.net yunfancdn.com  zhihu.com  zhimg.com zhihuishu.com  ksyun.com ksyungslb.com ourdvsss.com abchina.com -boc.cn  whccb.com moji.com mojichina.com -055110.com 100offer.com  11467.com -114chn.com 115.com 123juzi.com 123juzi.net 123u.com 16rd.com  17173.com 178.com 178linux.com  17cdn.com 188.com 1905.com  19yxw.com  1ting.com 21cn.com 2265.com 2288.org 2345.com 258.com 263.net 289.com 2cto.com 3234.com 3322.org -35.com -360doc.com  360jq.com 360zhyx.com -365dmp.com 36kr.com 3733.com -39.net 3conline.com 3dmgame.com -3elife.net 4paradigm.com 500d.me -50bang.org 51.la 51credit.com  51cto.com 51eshop.com51jingying.com 51wendang.com  51yes.com  52hxw.com -52miji.com 52z.com 53kf.com -55.com 5577.com  55bbs.com 5fun.com 5you.com -6rooms.com 71.am 714.com -72byte.com  7down.com 7k7k.com  7moor.com -7x24cc.com  8686c.com  88cdn.com -900.la 91danji.com 91yunxiao.com 962.net 9718.com 998.com 999d.com 9xu.com -aardio.com -adxvip.com agrantsem.com  aicdn.com  aiemy.com  aiops.comairchangan.com airguilin.com aiyunxiao.com -aizhan.com -ali213.netalittle-tea.com -allyes.com -anquan.org -anruan.com -antutu.com -appinn.com babytree.combabytreeimg.com baidufree.combaifendian.com  baihe.com  baike.com baixing.com baixing.netbangongziyuan.com bankcomm.combankofchina.com baomitu.com bcy.net bearychat.com  benmi.com biancheng.net biddingx.com bihu.com bio-equip.com -bio360.net  bio4p.combiodiscover.com bitauto.combitautoimg.com bjcathay.com bobo.com -bokecc.com bootcss.com btcfans.com btgtravel.com bthhotels.com -caixin.com -caiyun.com caiyunapp.com -carnoc.com ccb.com cctv.com cctvpic.com  cdn20.com cebbank.com  cecdc.com cecport.com -ch.com chashebao.com -che168.com  china.comchinacache.comchinacache.net chinafph.com chinanews.com chinapay.comchinapubmed.netchinatranslation.net -chinaz.com -chinaz.net chiphell.comchongdiantou.com -chouti.com chuangxin.com chuansong.mechuansongme.com chuyu.me  city8.com clouddn.com cloudxns.com cmbchina.com cn.bing.com cnanzhi.com -cnbeta.com cnbetacdn.com cnblogs.com -cnepub.com  cnfol.com  cnlaw.net cnstock.com cnzz.com code666.com  cpppf.org  cqvip.com  csbew.com csslcloud.net -ctfile.com ctoutiao.com  ctsbw.com -cubead.com -cyagen.com cyol.com cztv.com cztvcloud.com  dajie.com dajieimg.com dangdang.com -danji6.com daocloud.io daovoice.io  dbank.com -dcdkjx.com dedecms.com develenv.com  dgtle.com diandian.comdiandianqi.comdidichuxing.comdingxiang-inc.com -diopic.net diyiyou.com  docin.com dockerone.com -dockone.io dogedoge.com -donews.com dopa.com -douban.com  douban.fm doubanio.com -downyi.com -dpfile.com -dui.ai duiopen.com duoduocdn.com duokanbox.com -duomai.com duoshuo.com -duowan.com dxpmedia.com -dxycdn.com eastday.com -eayyou.com  ebrun.com -ecitic.com -edu.cn eeyy.com eflycloud.com emarbox.comeoeandroid.com excelhome.net expreview.com famulei.com  fanli.com fastapi.net feiniaomy.com feng.comfengkongcloud.com fengniao.comfengxian110.com  fenxi.com -fhldns.com  fimmu.com freebuf.com fugetech.com gamersky.com geekpark.net geetest.com geilicdn.com  getui.com -gezida.com gfan.com -giocdn.com  gitee.com gmallbio.com  gmz88.com  golue.com gree.com growingio.com  gtags.netguanhaobio.com  guigu.org  guokr.com -gwdang.comgxairlines.com gzwanju.com hackhome.com -hao123.com hao123img.com  haote.com  henha.com henkuai.com  hexun.com -heytea.com  hiido.com hitv.com hktheone.com hn-cbec.com  hnair.com hnyuyuhui.com hollycrm.com homeinns.comhongsanban.com hongxiu.com huanqiu.com hunantv.comhuochepiao.com  huxiu.com iask.com -ibaotu.com ichangtou.com  iciba.com idqqimg.com  ifeng.com ifengimg.com iflytek.com  igao7.com -iheima.com ijiandao.com ijinshan.com -ikafan.com im2maker.com  im-cc.com -imedao.com imgo.tv  imooc.com  infoq.cominfoqstatic.com -ip-cdn.com  ip138.com ipinyou.com ipip.net iranshao.com  irs01.com ishumei.com  it165.net  it168.com  it610.com  iteye.com -itjuzi.com iyunxiao.com -izuche.com -jandan.net jb51.com  jdair.net jia.com jianshu.com -jianshu.io jiasuhui.com jiasule.com jiathis.com jiayuan.comjikexueyuan.comjiqizhixin.com jisuanke.com jiuzhilan.com jmstatic.com jsbc.com -jsrdgg.com jstv.com  jumei.com  jyimg.com kaixin001.com -kanimg.com kankanews.com kanzhun.comkeboyunxiao.com  kejet.net kf5.com  kgimg.com -kimiss.com kingdee.com -kouclo.com -koudai.com koudai8.com  ksord.com ku6.com -ku6cdn.com -ku6img.com  kuaaa.com kuaizhan.com  kugou.com  kuqin.com lady8844.com  lascn.net  lawxp.com -le.com leanote.comleetcode-cn.com leikeji.com leiphone.com leju.com leturich.org letv.com letvcdn.com letvimg.com  liantu.meliaoxuefeng.com liba.com libaclub.com lightonus.com -likuso.com lingkou.com lixinger.com linkvans.com linuxidc.com liuxiaoer.com lkkbrand.com lrts.me -lu.com luckyair.net  lufax.com lufaxcdn.com -lvmama.comlvsexitong.com  lxdns.com  lxway.com -magedu.com -mamecn.com manmankan.com mayi.com -mayihr.com -mcbang.com mechina.org -mediav.com meika360.com meilishuo.com -meiqia.com meishij.net mgtv.com miaopai.com miaozhen.comminhangshi.com -mmbang.com mmbang.info moegirl.org mogu.com mogucdn.com mogujie.commoocollege.com mop.com -mscbsc.com mukewang.com -mydown.com mydrivers.com myshow360.net myyx618.com myzaker.com mzstatic.com naixuecha.com -newasp.netnewbandeng.com -ngabbs.com ngacn.cc nowcoder.com  nruan.com ntalker.com nvsheng.com  nzbdw.com oadz.com  oeeee.com -ol-cdn.com -ol-img.com -oneapm.comonlinedown.netonlinesjtu.com -opdown.com oray.com oschina.net -paipai.com -pcbeta.com -pchome.net pgzs.compharmacodia.com -pingan.compingplusplus.com pingwest.com -pingxx.com pintu360.com  pipaw.com  pipaw.net pptbest.com psbc.com -pubyun.com qbox.me qcc.com qcds.com qdmm.com qianjia.comqiaobutang.com qichacha.com -qidian.com -qie.tv qifeiye.comqijiayoudao.net qingcloud.comqingsongchou.com  qiniu.com qiniucdn.com qiniudn.com qiniudns.com qiumibao.com -qschou.com -qtmojo.com -qudong.com  qunar.com qunarzz.com readnovel.com -renren.comrenren-inc.com rfchost.com rtbasia.comruby-china.org -runoob.com sanguosha.com -sanwen.net  scdng.com scoregg.com -sczsxx.com sec-wiki.comsegmentfault.com -sencdn.com seniverse.comsenlinjimore.com shangzhibo.tv sharejs.com  sheui.com shmetro.com shrbank.comshuidichou.comshuidihuzhu.com -shutcm.com -simei8.com  smzdm.com  sobot.com softwhy.com sohu.com -sohucs.com -sojson.com soso.com  sspai.com ssports.com starbaby.cc starbaby.comstaticfile.org stockstar.com -sunrtb.com supermap.comsupermapcloud.com szfw.org szzfgjj.com t1y5.comtaihuoniao.com tanx.com -tao123.com tenxcloud.com  tgbus.comtianjimedia.comtianjin-air.com tietuku.com -tiexue.net timedoo.com tingyun.com tjjt360.com  tmcdn.net tom.com tongdun.net topthink.com travelsky.com trustutn.org  ttpod.com  tudou.com tudouui.com tuer123.com tuicool.com  tujia.com  tuniu.com tutuapp.com u.tools u17.com upaiyun.com  upyun.com urselect.comurumqi-air.com  useso.com uzzf.com  v5875.com vamaker.com  vancl.com vanclimg.com  vcimg.com veryzhun.com  vic18.com videojj.com  vijos.org vip.comwallstreetcn.comwangyangyang.vip wanwushuo.com  wanyx.com -wdjimg.com  weand.com webterren.com weicaifu.com weidian.comweilaiyunxiao.com weiphone.com weiphone.net weixing.com wishdown.com wonnder.com -wooyun.org worktile.com wrating.com -wscdns.com  wumii.comwuximediaglobal.com -xhscdn.comxiachufang.comxiaobaixitong.comxiaohongshu.com  xiaoka.tv xiaokaxiu.com  xiayx.com xinhuanet.comxinrenxinshi.com xinshipu.com xitu.com xiu8.com  xnpic.com -xsa239.comxuanchuanyi.com xuexicha.com xxsy.net  xycdn.com xywy.com -yaolan.com  yaoyl.com  yaozh.com  yccdn.com -yeepay.com  yesky.com yh31.com yhd.com  yigao.com yigoonet.com yihaodian.comyihaodianimg.com yikexue.com yinxiang.com yinyuetai.com yisu.com  yiwan.com yixi.tv yizhibo.com  yjbys.com  yunaq.com -youboy.com youke.co youshang.com youxihezi.net  youzu.com  ypppt.com  ysten.com -yuewen.com yunba.io yundaex.com yundasys.com -yundun.com yunshipei.com yunxiao.com yunzhijia.com  yupoo.com  yuzua.com -yy.com -yytcdn.com -zampda.net zampdsp.com zastatic.com -zbjimg.com -zdfans.com -zdmimg.com zhanzhang.net  zhanqi.tv zhaopin.com -zhenai.com  zhibo8.cc  zhidx.com -zhipin.com zhiziyun.com zhubajie.com zhugeapi.net zhugeio.com  zimuzu.io zixiaomao.com zixuntop.com  zjstv.com zmengzhu.com -zrblog.net zsxq.com  zuche.com zuchecdn.com zuidaima.com jindidata.comtianyancha.comzhuanxiandai.com -fm3838.comlarsonlimited.com runsheng.com vzuu.com -zoom3g.com -zoomyou.cn chaoxing.com chaoxing.cc - - ZHIHUISHU zhihuishu.com - - -TORPROJECTtorproject.org -: -ZAOBAO -zaobao.com zaobao.com.sg  zaobao.sg -@ -HAVEIBEENPWNEDhaveibeenpwned.compwnedpasswords.com -. -JSDELIVR jsdelivr.net jsdelivr.com -_ -NIKE nike.com nike.com.br nike.com.hk nikecloud.comniketracking.com -" - SEGMENT-ADScdn.segment.com -û - MICROSOFT  microsoft azurebing hotmail -office skype windowsxbox 1drv.com 1drv.ms -aka.ms appcenter.msapplicationinsights.ioapplicationinsights.net asp.net aspnetcdn.com azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-test.net  azure.com  azure.netazurecomcdn.netazurecontainer.ioazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazurewebsites.net bing.com bing.net bingads.combotframework.com breakdown.mecentralvalidation.com -ch9.ms cloudapp.netcloudappsecurity.comcortanaanalytics.comcrmdynint-gcc.com crmdynint.com docs.com dot.net dynamics.com efproject.net -gfx.ms hotmail.com live.com live.netmicrosoft-int.commicrosoft-ppe.commicrosoft-sbs-domains.com microsoft.com microsoft.iomicrosoft365.commicrosoftadvertising.commicrosoftaffiliates.commicrosoftonline-p.commicrosoftonline.commicrosoftstore.commicrosoftstore.com.hkmicrosofttranslator.commicrosoftuwp.commono-project.comms-studiosmedia.com  msads.net -msauth.net msdn.com -msecnd.net -msedge.net  msft.info msft.net msftauth.net msftnet.org msn.com -msocdn.com -msocsp.commymicrosoft.com  nuget.org nugettest.orgo365weve-dev.como365weve-ppe.com o365weve.com -office.com -office.net office365.com onedrive.com onenote.com onenote.net outlook.com passport.netpowerappscdn.net powerbi.compowershellgallery.coms-microsoft.com  s-msn.com sfbassets.com sfbassets.net -sfx.mssharepointonline.com  skype.com  skype.netskypeassets.comskypeassets.net surface.com sway-cdn.com sway.comsysinternals.com tfsallin.netvideobreakdown.comvideoindexer.aivisualstudio-staging.comvisualstudio.com vsallin.net vsassets.iowindows-int.net windows.com windows.netwindowsphone-int.comwindowsphone.comwindowsupdate.com xamarin.com xbox.com -xboxab.com xboxlive.com -yammer.com -" - MOCLOUDPLUSmocloudplus.com -@ -REUTERS reuters.com -reuters.tvreutersmedia.net -' -928PLUS 928.plus -zind.cloud -' -CODING  coding.me -coding.net - -DOI doi.org doi.info -+ -GUARDIANPROJECTguardianproject.info - - -INFRAPEDIAinfrapedia.com -$ - THESTANDNEWSthestandnews.com - -HOMEBREW brew.sh -’ -RUANMEI 6655.com cooldock.com -ithome.com lapin365.com ruanmei.com -saayaa.com win7china.com win8china.com -1 -BBC bbc.com  bbc.co.uk -bbci.co.uk -e - CLARIVATEnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.com - -CUP -cup.com.hk -, -GANJI  ganji.comganjistatic1.com -O -GUO  guo.media  gnews.org gtv.org gtv1.org g-tvapp.com -$ - DIGITALOCEANdigitalocean.com -? -LIEPIN -liepin.com -lietou.comlietou-static.com - - -ONIONSHAREonionshare.org -® -OUPamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com -ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.com -# -QT qt.ioqt-project.org -z -CERNcern ams02.space cern.ch cixp.netdotcernpilot.info  ippog.orglinearcollider.org -o -IFANR coolbuy.com  ifanr.com ifanr.inifanrusercontent.com -ifanrx.com -minapp.com -3 -QUORA  quora.com quoracdn.net qr.ae -? -STRIPE -stripe.comstripe.network stripecdn.com -) -UBER uber.comuber-assets.com -G -CTRIP c-ctrip.com ctrip.cn  ctrip.com ctripbiz.com -h -FASTLY -fastly.com -fastly.netfastlylabs.com fastlylb.netfastly-terrarium.com -¨ - YOUKU-ADSactives.youku.com +@ads"unityads.unity3d.com +@ads$unityads.unitychina.cn +@ads ads.wteam.xyz ad.intl.xiaomi.com +@ads ad.mi.com +@ads ad.xiaomi.com +@adsadmob.xiaomi.com +@adsad1.xiaomi.com +@adsmistat.xiaomi.com +@adstracking.miui.com +@adsadv.sec.miui.com +@ads#adv.sec.intl.miui.com +@ads#misc.in.duokanbox.com +@ads ad.hpplay.cn +@adsadeng.hpplay.cn +@ads atianqi.com +@ads kuyun.com +@ads umeng.com +@ads ads.yahoo.com +@adsgemini.yahoo.com +@adsactives.youku.com @ads!ad.api.3g.youku.com @ads%ad.api.mobile.youku.com @ads!ad.mobile.youku.com @@ -4185,411 +3885,322 @@ fastly.netfastlylabs.com fastlylb.netfastly-terrarium.com @ads wan.youku.com @adsykatr.youku.com @adsykrec.youku.com -@ads - -YOUPORN youporn.com -R - KUAISHOU-ADS!log-sdk.gifshow.com -@adswlog.kuaishou.com -@ads - -LITV litv.tv -0 -OPENWRT openwrt.orglede-project.org - -ADDTOANY addtoany.com -ß -CATEGORY-MEDIA 9cdn.net9nation.com.au 9news.com.au 9now.com.aufreeviewplus.net.au -mi9.com.au -mi9cdn.com nine.com.auninemsn.com.austatic9.net.au yourtv.com.au afp.com afpforum.comamericasvoice.news -ap.org -apnews.comappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk -atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com bbc.com  bbc.co.uk -bbci.co.uk  boxun.combowenpress.comcabletv.com.hk i-cable.comcaijinglengyan.comchinadecoding.comchinadigitaltimes.net cnbc.com -cnbcfm.com -nbcuni.comnbcudigitaladops.com cnn.com -cnn.io cnnarabic.com cnnlabs.com cnnmoney.ch cnnmoney.comcnnmoneystream.comcnnpolitics.com -cup.com.hk d100.net -dw.com fox.com foxnews.comfoxbusiness.com -foxdcg.com -uplynk.comtheplatform.com foxnewsplayer-a.akamaihd.netglobalvoices.orgglobalvoicesonline.org  guo.media  gnews.org gtv.org gtv1.org g-tvapp.com hk01.com hkcnews.com hkopentv.com fantv.hkhongkongfp.com inmediahk.net jfengtime.com landofhope.tvlocalpresshk.com -ltn.com.tw yes123.com.tw matters.news matters.one -medium.com -myradio.hkmyradio.com.hk newyorker.com -nikkei.com  nikkei.jp nikkei.co.jp now.com -now.com.hk nowe.com -now-tv.comnow-ashare.com ntd.com  ntdtv.com nyt.com nyt.net nytcn.me  nytco.com nytimes.com nytstyle.comtimestalks.compassiontimes.hkrealvision.com reuters.com -reuters.tvreutersmedia.net rfa.org -rfi.fr rsf.org etvonline.hk rthk.hk scmp.com -i-scmp.comshuziyimin.orgsinoinsider.comsoundofhope.orgtheinitium.com  init.shopthestandnews.com udn.com -udn.com.twudnfunlife.com  unwire.hkamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.ru insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com -voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.comwashingtonpost.com watchout.tw -waa.tw -wenzhao.ca -zaobao.com zaobao.com.sg  zaobao.sg zerohedge.com -% -DEMOCRACYEARTHdemocracy.earth -F - IDENTRUST identrust.comidentrust.co.uk identrust.net -û - STACKEXCHANGE askubuntu.comblogoverflow.commathoverflow.netserverfault.com sstatic.net stackapps.com stackauth.comstackexchange.com stackmod.blogstackoverflow.blogstackoverflow.comstackoverflow.emailstackoverflowbusiness.comstacksnippets.net superuser.com tex-talk.netthesffblog.com +@ads cvnad.com +@ads +iyoowi.com +@ads 51y5.net a.adtng.com +aaxads.com +ad-srv.netad.api.moji.comad.wang502.com adbutter.netads.trafficjunky.net adtechus.comcfts1tifqr.comcontentabc.comimg-bss.csdn.net imglnkc.com imglnkd.comja2.gamersky.com jl3.yjaxa.topkepler-37b.com +lqc006.coms4yxaqyq95.comshhs-ydd8x2.yjrmss.cnstatic.javhd.comtrafficfactory.biz toboads.com ad.unimhk.com ysm.yahoo.com adxprtz.com exoclick.com +exosrv.comcdn.advertserve.comcdn.banclip.comcdn.tsyndicate.com +. +FLUTTER flutter.devflutterapp.com +$ +SCMP scmp.com +i-scmp.com ( TAPTAP tapimg.com taptap.com +L +APKPURE apkpure.com cdnpure.com pureapk.com +winudf.com +I +ACFUN acfun.cn aixifan.com!apilog-web.acfun.cn +@ads  - TRUSTWAVE trustwave.com -5 -V2RAY  v2ray.com -v2ray.cool  v2fly.org - -STUNNEL stunnel.org -6 -UDN udn.com -udn.com.twudnfunlife.com + PHANTOMJS phantomjs.org +( + UBERADS-ADS uberads.com +@ads ' WATCHOUT watchout.tw waa.tw - -CHANGE -change.org -ô -DROPBOX db.ttdropbox-dns.com dropbox.com dropbox.techdropboxapi.comdropboxbusiness.comdropboxcaptcha.comdropboxforum.comdropboxforums.comdropboxinsiders.comdropboxmail.comdropboxpartners.comdropboxstatic.comdropboxusercontent.comgetdropbox.com&"paper-attachments.s3.amazonaws.com -. +@ + DIGITALOCEANdigitalocean.comdigitaloceanspaces.com +¨U +GOOGLE amp.devampproject.comampproject.netampproject.org android.comandroidify.com blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn dart.dev dartlang.org dartpad.dev fastlane.cifastlane.tools flutter.devflutterapp.com go-lang.com go-lang.net go-lang.org +go.dev  godoc.org +golang.com +golang.net +golang.org  admob.com adsense.comadservice.google.comadvertisercommunity.comadvertiserscommunity.comadwords-community.com adwords.comadwordsexpress.comapp-measurement.comclickserver.googleads.comdoubleclick.comdoubleclick.netgoogle-analytics.comgoogleadapis.comgoogleadservices.comgoogleanalytics.comgoogleoptimize.comgooglesyndication.comgoogletagmanager.comgoogletagservices.comgoogletraveladservices.com +urchin.compolymer-project.orgpolymerproject.org +v8.dev v8project.org ggpht.cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com youtube.comyoutubeeducation.comyoutubegaming.comyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.com +googlegoog  google.ad  google.ae  google.al  google.am  google.as  google.at  google.az  google.ba  google.be  google.bf  google.bg  google.bi  google.bj  google.bs  google.bt  google.by  google.ca +google.cat  google.cd  google.cf  google.cg  google.ch  google.ci  google.cl  google.cm  google.cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.id google.co.il google.co.in google.co.jp google.co.ke google.co.kr google.co.ls google.co.ma google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw +google.com google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn  google.cv  google.cz  google.de  google.dj  google.dk  google.dm  google.dz  google.ee  google.es  google.fi  google.fm  google.fr  google.ga  google.ge  google.gg  google.gl  google.gm  google.gr  google.gy  google.hn  google.hr  google.ht  google.hu  google.ie  google.im  google.iq  google.is  google.it  google.je  google.jo  google.kg  google.ki  google.kz  google.la  google.li  google.lk  google.lt  google.lu  google.lv  google.md  google.me  google.mg  google.mk  google.ml  google.mn  google.ms  google.mu  google.mv  google.mw  google.ne  google.nl  google.no  google.nr  google.nu  google.pl  google.pn  google.ps  google.pt  google.ro  google.rs  google.ru  google.rw  google.sc  google.se  google.sh  google.si  google.sk  google.sm  google.sn  google.so  google.sr  google.st  google.td  google.tg  google.tl  google.tm  google.tn  google.to  google.tt  google.vg  google.vu  google.ws 0emm.com  1e100.net  1ucrs.com +466453.com abc.xyz adgoogle.net +admeld.comangulardart.org +api.ai +apigee.com appbridge.ca appbridge.io appbridge.it appspot.com +apture.com area120.com +asp-cc.com autodraw.com bandpage.combaselinestudy.combaselinestudy.org bazel.build bdn.devbeatthatquote.com  blink.org blogblog.com blogger.combrocaproject.com +brotli.org bumpshare.com +bumptop.ca bumptop.com bumptop.net bumptop.org bumptunes.comcampuslondon.com certificate-transparency.org chat.gle +chrome.comchromebook.comchromecast.com chromium.orgcloudburstresearch.comcloudfunctions.netcloudrobotics.comcobrasearch.com codespot.com conscrypt.com conscrypt.orgcookiechoices.org  coova.com  coova.net  coova.orgcrossmediapanel.com crr.com  cs4hs.comdartsearch.netdataliberation.org  debug.comdebugproject.com deepmind.comdevsitetest.howdialogflow.comdigitalassetlinks.org episodic.comfeedburner.com +fflick.comfinanceleadsonline.comfirebaseapp.com +foofle.com froogle.com fuchsia.dev  g-tun.comg.co g.dev +g.pagegerritcodereview.comgetbumptop.com ggoogle.com gipscorp.com gkecnapps.cn globaledu.org  gmail.com gmodules.com  gogle.com +gogole.comgonglchuangl.net +goo.gl +googel.com +googil.com  googl.comgoogle-syndication.com google.berlin +google.dev +google.net +google.orggoogle.ventures"googleacquisitionmigration.com googleapis.cngoogleapis.comgoogleapps.comgooglearth.comgoogleblog.com googlebot.comgooglecapital.comgooglecert.netgooglecnapps.cngooglecode.comgooglecommerce.comgooglecompare.co.ukgoogledanmark.comgoogledomains.comgoogledrive.com googlee.comgoogleearth.comgooglefiber.netgooglefinland.comgooglemail.comgooglemaps.comgooglepagecreator.comgooglephotos.comgoogleplay.comgoogleplus.comgooglescholar.comgooglesource.comgooglestore.comgooglesverige.comgoogleusercontent.comgoogleventures.com +googlr.com +goolge.com gooogle.com gridaware.app gsrc.io +gstatic.cn gstatic.comgstaticcnapps.cn +gsuite.com +gv.com gvt0.com gvt1.com gvt2.com gvt3.com gvt5.com gvt6.com gvt7.com gvt9.comhdrplusdata.org hey.gle hindiweb.comhowtogetmo.co.ukhtml5rocks.com hwgo.comiamremarkable.org igoogle.com impermium.com +j2objc.orgjibemobile.com keyhole.comkeytransparency.comkeytransparency.fookeytransparency.org lanternal.com like.commadewithcode.com material.io mdialog.com meet.newmfg-inspector.commobileview.pagemoodstocks.com near.by nest.com nomulus.foo +oauthz.com +ok.gle on.here on2.comonefifteen.netonefifteen.orgoneworldmanystories.com openthread.io openweave.io orbitera.com  page.linkpagespeedmobilizer.com pageview.mobi panoramio.compartylikeits1986.orgpaxlicense.org +picasa.com picasaweb.com picasaweb.net picasaweb.org +picnik.com pittpatt.com postini.comprojectara.comprojectbaseline.compublishproxy.comquestvisual.comquickoffice.com quiksee.com recaptcha.net +revolv.comridepenguin.com run.appsavethedate.foo +saynow.com schemer.comscreenwisetrends.comscreenwisetrendspanel.com snapseed.com solveforx.com +stadia.devstcroixmosquito.comstcroixmosquitoproject.comstudywatchbyverily.comstudywatchbyverily.orgstxmosquito.comstxmosquitoproject.comstxmosquitoproject.netstxmosquitoproject.org synergyse.comtensorflow.org  tfhub.devthecleversense.comthegooglestore.comthinkquarterly.co.ukthinkquarterly.comthinkwithgoogle.com tiltbrush.com txcloud.net  txvia.comunfiltered.news useplannr.comusvimosquito.comusvimosquitoproject.comvelostrata.com +verily.comverilylifesciences.comverilystudyhub.comverilystudywatch.comverilystudywatch.org +wallet.com  waymo.com waze.com web.appwebappfieldguide.comwebmproject.orgwebpkgcache.com +webrtc.orgweltweitwachsen.dewhatbrowser.org widevine.comwithgoogle.com womenwill.comwomenwill.com.br womenwill.id womenwill.in womenwill.mx  x.company +x.team xn--9kr7l.comxn--9trs65b.comxn--flw351e.com xplr.cozukunftswerkstatt.de +, +HITUN hitun.ioxn--90wwvt03e.com +< +QUIP quip-cdn.com quip.comquipelements.com + +SOHU-ADSadnet.sohu.com +@ads ads.sohu.com +@ads aty.sohu.com +@adsdata.vod.itc.cn +@adsepro.sogou.com +@ads go.sohu.com +@adsgolden1.sogou.com +@adsimp.optaim.com +@adsinte.sogou.com +@adsinte.sogoucdn.com +@adslu.sogoucdn.com +@ads theta.sogoucdn.com +@adsuranus.sogou.com +@adsv2.reachmax.cn +@ads*e8aeb8bbdbbd7.cdn.sohucs.com +@ads*643108e7617ef.cdn.sohucs.com +@ads + +YARNPKG yarnpkg.com +, +GANJI  ganji.comganjistatic1.com +½ +IQIYI 71.am  iqiyi.com iqiyipic.com +pps.tv +ppsimg.com qiyi.com qiyipic.com +qy.net +71edge.coma.ckm.iqiyi.com +@adsad.m.iqiyi.com +@ads afp.iqiyi.com +@adsc.uaa.iqiyi.com +@ads!cloudpush.iqiyi.com +@ads#cm.passport.iqiyi.com +@adscupid.iqiyi.com +@ads$emoticon.sns.iqiyi.com +@ads"gamecenter.iqiyi.com +@ads"hotchat-im.iqiyi.com +@ads ifacelog.iqiyi.com +@adsmbdlog.iqiyi.com +@ads msg.71.am +@ads msg.video.qiyi.com +@ads!msg2.video.qiyi.com +@ads$policy.video.iqiyi.com +@adsyuedu.iqiyi.com +@ads +4 +PERL perl.org cpan.org metacpan.org +y +YANDEX +yandex.com +yandex.net  yandex.ru  yandex.styandexcloud.net yastatic.net +yandex +0 +BITLY +bit.ly  bitly.com bitly.is +( +IMGUR  imgur.com imgurinc.com +ö +FOXfox fox.comfoxbusiness.comfoxcorporation.com +foxdcg.com foxdoua.com +foxfdm.com +foxinc.com +foxneo.comfoxneodigital.com foxnews.com fxnetwork.com foxnewsplayer-a.akamaihd.net + +NTC  ntc.party + +SHORTURL shorturl.at + -DUCKDUCKGOduckduckgo.com duck.com -" - EPICBROWSERepicbrowser.com - -RFI -rfi.fr -  - CATEGORY-ADS!apilog-web.acfun.cn -@ads adcolony.com -@ads a.alimama.cn -@adsacjs.aliyun.com -@ads adash.m.taobao.com -@ads"adashbc.m.taobao.com -@ads#adashbc.ut.taobao.com -@ads#adash-c.ut.taobao.com -@ads!adashx.m.taobao.com -@ads%adashx4ae.ut.taobao.com -@ads$adashx4yt.m.taobao.com -@ads$adashxgc.ut.taobao.com -@adsadsh.m.taobao.com -@adsafp.adchina.com -@adsafp.alicdn.com -@ads!agoodm.m.taobao.com -@ads$agoodm.wapa.taobao.com -@ads alipaylog.com -@adsamdc.alipay.com -@adsamdc.m.taobao.com -@ads!api.wapa.taobao.com -@ads$api.waptest.taobao.com -@ads apoll.m.taobao.com -@ads$appdownload.alicdn.com -@adsatanx.alicdn.com -@adsatanx2.alicdn.com -@adscbu01.alicdn.com -@adscdn0.mobmore.com -@adsclick.aliyun.com -@ads'click.mz.simba.taobao.com -@adscm.ipinyou.com -@ads cm.mlt01.com -@ads"dsp.simba.taobao.com -@adserr.taobao.com -@adsex.mobmore.com -@ads ex.puata.info -@ads"fav.simba.taobao.com -@ads%feedback.whalecloud.com -@adsff.win.taobao.com -@ads fm.p0y.cn -@ads g.click.taobao.com -@ads -g.tbcdn.cn -@adsgma.alicdn.com -@adsgtms01.alicdn.com -@adsgtms02.alicdn.com -@adsgtms03.alicdn.com -@adsgtms04.alicdn.com -@adshydra.alibaba.com -@ads(hz.pre.tbusergw.taobao.net -@ads$hz.tbusergw.taobao.net -@ads i.ipinyou.com -@adsinit.phpwind.com -@ads"intl.wapa.taobao.com -@ads%intl.waptest.taobao.com -@ads#jxlog.istreamsche.com -@adslog.umtrack.com -@adsm.intl.taobao.com -@ads m.simba.taobao.com -@ads match.p4p.1688.com -@ads&material.istreamsche.com -@ads mlt01.com -@ads'nbsdk-baichuan.alicdn.com -@ads'nbsdk-baichuan.taobao.com -@ads#osfota.cdn.aliyun.com -@ads!osupdate.aliyun.com -@ads'osupdateservice.yunos.com -@ads&pindao.huoban.taobao.com -@ads push.wandoujia.com -@adsre.m.taobao.com -@ads re.taobao.com -@ads'redirect.simba.taobao.com -@adsrj.m.taobao.co -@adsrj.m.taobao.com -@ads sdkinit.taobao.com -@ads show.re.taobao.com -@adssimaba.taobao.com -@ads simba.m.taobao.com -@ads"srd.simba.taobao.com -@adsstats.ipinyou.com -@ads!strip.taobaocdn.com -@ads%tanxlog.istreamsche.com -@adstejia.taobao.com -@adstemai.taobao.com -@ads"tns.simba.taobao.com -@ads!tongji.linezing.com -@ads!tvupgrade.yunos.com -@adstyh.taobao.com -@adsuserimg.qunar.com -@adsw.m.taobao.com -@adsyiliao.hupan.com -@ads!amazon-adsystem.com -@adsiadsdk.apple.com -@ads iad.apple.com -@ads qwapi.com -@ads applovin.com +SHUZIYIMINshuziyimin.org +Î + +CLOUDFLAREcloudflare-dns.comcloudflare-ipfs.comcloudflare.comcloudflareapps.comcloudflareinsights.comcloudflareok.comcloudflaressl.comcloudflarestatus.comcloudflarestream.comcloudflaretest.com one.one.onetrycloudflare.comvideodelivery.net workers.dev + +DENO  deno.land +| +MEITUAN dianping.com +maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com +, +PAOFUYUN paofu.cloud paofuyun.me +Ø + XIAOMITV-ADS ad.intl.xiaomi.com +@ads ad.mi.com +@ads ad.xiaomi.com +@adsadmob.xiaomi.com +@adsad1.xiaomi.com +@adsmistat.xiaomi.com +@adstracking.miui.com +@adsadv.sec.miui.com +@ads#adv.sec.intl.miui.com +@ads#misc.in.duokanbox.com +@ads ad.hpplay.cn +@adsadeng.hpplay.cn +@ads atianqi.com +@ads kuyun.com +@ads umeng.com +@ads +§ +APPLE apple  apple.com  apple.net1to1computing.com.au1to1conference.com.au apple-hk.com apple.ae apple.at apple.be apple.bg apple.bs apple.ca apple.ch apple.cl apple.cm apple.cn apple.co.cr apple.co.jp apple.co.kr apple.co.mz apple.co.nz apple.co.th apple.co.uk apple.com.af apple.com.au apple.com.bo apple.com.br apple.com.cn apple.com.co apple.com.do apple.com.jm apple.com.lk apple.com.mx apple.com.my apple.com.pa apple.com.pe apple.com.pr apple.com.py apple.com.sg apple.com.sv apple.com.tr apple.com.tw apple.com.uy apple.cz apple.de apple.dk apple.ee apple.es apple.fi apple.fr apple.hn apple.hr apple.hu apple.ie apple.in apple.is apple.it apple.jo apple.kr apple.lk apple.lt apple.lv apple.me apple.my apple.nl apple.no apple.pl apple.pt apple.ro apple.rs apple.ru apple.se apple.sg apple.si apple.sk apple.so apple.ttappleaustralia.comappleaustralia.com.auappleaustralia.net.auapplecentre.com.auappleclub.com.hkapplecomputer.cnapplecomputer.co.inapplecomputer.co.nzapplecomputer.com.cnapplecomputer.com.hkapplecomputer.com.twapplecomputer.krapplecomputers.co.nzapplehongkong.com.hkapplemalaysia.com.myapplemusic.com.auapplepremiumreseller.com.au applepremiumresellers.com.au applestore.cnapplestore.co.jpapplestore.com.auapplestore.com.cnapplestore.com.hkapplestore.com.myapplestore.com.phapplestore.com.tw applestore.hk applestore.kr applestore.ph applestore.sgappletaiwan.com  appsto.reappstore.co.id appstore.hk appstore.my appstore.ph emac.in +emac.co.in ibook.co.nz ichat.co.inilecture.co.nz +imac.co.nz indiaipad.com +ipad.co.kr +ipadair.hk +ipadair.jp +ipadair.twipadaustralia.comipadmini.com.lk ipadmini.lk iphone.com.au +ipod.co.nz ipod.com.au ipod.com.cn ipod.com.sg ipod.hk ipod.twipodrocks.com.auipodshop.com.au ipodtouch.co itun.es itunes.co.th +mac.com.au macappsto.re +macbook.hk +macbook.twmacbookair.co.krmacbookair.com.aumacbookair.com.cn macbookair.hk macbookair.kr macbookair.jp macbookpro.comacbookpro.com.au macos.com.auquicktime.com.au applecom.com iphone4s.comapple-cloudkit.com +icloud.com icloud.com.cnicloud-content.com cdn-apple.com mzstatic.comapple.com.akadns.netitunes-apple.com.akadns.net%!courier-push-apple.com.akadns.netpush-apple.com.akadns.net apple-dns.cn apple-dns.net cups.org  swift.org + +CUP +cup.com.hk + +RENZHE renzhe.cloud +¾ +VOANEWSamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.ru insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com +voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.com +H +COOLAPK coolapk.comcoolapkmarket.comcoolapkmarket.net +å +MOZILLAmozilla.community mozilla.net mozilla.org bugzilla.org getpocket.comseamonkey-project.orgthunderbird.net firefox.comdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud rust-lang.org  rustup.rs  crates.io docs.rs + +OPENSSL openssl.org +D +RUST rust-lang.org  rustup.rs  crates.io docs.rs +. +XDAxda-developers.com xda-cdn.com +‘ +YAHOO yahoo +myguide.hkyahoo-news.com.hk yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cm yahoo.cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws yahooapis.com yahoodns.net yimg.com  ymail.com +flickr +flickr.com +flickr.netstaticflickr.com ads.yahoo.com +@adsgemini.yahoo.com +@ads +D + APPLOVIN-ADS applovin.com @ads applvn.com -@ads a.baidu.com -@ads ad.duapps.com -@ads!ad.player.baidu.com -@ads adm.baidu.com -@adsadscdn.baidu.com -@adsadx.xiaodutv.com -@adsae.bdstatic.com -@ads afd.baidu.com -@ads als.baidu.com -@adsanquan.baidu.com -@ads!antivirus.baidu.com -@adsapi.cpu.baidu.com -@ads'api.mobula.sdk.duapps.com -@ads#api.tuisong.baidu.com -@adsappc.baidu.com -@adsb.bdstatic.com -@ads baichuan.baidu.com -@adsbaidustatic.com -@adsbaidutv.baidu.com -@adsbanlv.baidu.com -@ads bar.baidu.com -@ads bce.baidu.com -@ads#bdimg.share.baidu.com -@adsbdplus.baidu.com -@ads bj.bcebos.com -@ads btlaunch.baidu.com -@ads c.baidu.com -@ads cb.baidu.com -@adscbjs.baidu.com -@adscjhq.baidu.com -@adscleaner.baidu.com -@ads!click.bes.baidu.com -@ads click.hm.baidu.com -@ads click.qianqian.com -@ads#cm.baichuan.baidu.com -@ads cm.baidu.com -@adscm.pos.baidu.com -@ads cpro.baidu.cn -@adscpro.baidu.com -@ads"cpro.baidustatic.com -@ads"cpro.tieba.baidu.com -@ads#cpro.zhidao.baidu.com -@adscpro2.baidu.com -@ads#cpro2.baidustatic.com -@ads cpu.baidu.com -@ads!cpu-admin.baidu.com -@ads crs.baidu.com -@adsdatax.baidu.com -@ads!dd713.bj.bcebos.com -@ads!dl.client.baidu.com -@adsdl.ops.baidu.com -@adsdl1sw.baidu.com -@adsdl2.bav.baidu.com -@adsdlsw.baidu.com -@adsdlsw.br.baidu.com -@ads"dl-vip.bav.baidu.com -@ads)dl-vip.pcfaster.baidu.co.th -@ads$download.bav.baidu.com -@ads#download.sd.baidu.com -@adsdrmcmm.baidu.com -@ads!dup.baidustatic.com -@ads dxp.baidu.com -@ads dzl.baidu.com -@ads e.baidu.com -@adseclick.baidu.com -@adsecma.bdimg.com -@adsecmb.bdimg.com -@adsecmc.bdimg.com -@ads eiv.baidu.com -@ads em.baidu.com -@adsentry.baidu.com -@ads ers.baidu.com -@ads f10.baidu.com -@ads$fc-feed.cdn.bcebos.com -@adsfclick.baidu.com -@adsfeed.baidu.com -@ads fexclick.baidu.com -@ads g.baidu.com -@adsgimg.baidu.com -@adsguanjia.baidu.com -@ads hc.baidu.com -@ads hm.baidu.com -@adshmma.baidu.com -@ads hpd.baidu.com -@adsidm.bce.baidu.com -@adsidm-su.baidu.com -@adsiebar.baidu.com -@adsikcode.baidu.com -@adsimg.taotaosou.cn -@ads img01.taotaosou.cn -@adsj.br.baidu.com -@adskstj.baidu.com -@ads!log.music.baidu.com -@ads m1.baidu.com -@ads ma.baidu.com -@ads#mipcache.bdstatic.com -@adsmobads.baidu.com -@ads#mobads-logs.baidu.com -@adsmpro.baidu.com -@adsmsite.baidu.com -@adsneirong.baidu.com -@adsnsclick.baidu.com -@ads$nsclickvideo.baidu.com -@adsopenrcv.baidu.com -@ads%pc.videoclick.baidu.com -@ads pos.baidu.com -@adspups.bdimg.com -@ads&push.zhanzhang.baidu.com -@ads!qianclick.baidu.com -@adsrelease.baidu.com -@adsres.mi.baidu.com -@ads#rigel.baidustatic.com -@ads$river.zhidao.baidu.com -@ads rj.baidu.com -@adsrplog.baidu.com -@ads s.baidu.com -@adss.cpro.baidu.com -@ads"sa.tuisong.baidu.com -@adssclick.baidu.com -@adssestat.baidu.com -@adsshadu.baidu.com -@adsshare.baidu.com -@ads#snippet.pos.baidu.com -@adssobar.baidu.com -@ads sobartop.baidu.com -@adsspcode.baidu.com -@adsstat.v.baidu.com -@ads su.bdimg.com -@adssu.bdstatic.com -@ads t10.baidu.com -@ads t11.baidu.com -@ads t12.baidu.com -@ads tk.baidu.com -@adstkweb.baidu.com -@ads#tob-cms.bj.bcebos.com -@adstongji.baidu.com -@adstoolbar.baidu.com -@adstracker.baidu.com -@adstuijian.baidu.com -@ads+uat1.bfsspadserver.8le8le.com -@ads$ubmcmm.baidustatic.com -@adsucstat.baidu.com -@adsulic.baidu.com -@ads!ulog.imap.baidu.com -@adsunion.baidu.com -@ads"unionimage.baidu.com -@adsutility.baidu.com -@ads utk.baidu.com -@ads!videopush.baidu.com -@ads vv84.bj.bcebos.com -@adsw.gdown.baidu.com -@ads w.x.baidu.com -@ads wangmeng.baidu.com -@adsweishi.baidu.com -@ads%wenku-cms.bj.bcebos.com -@ads&wisepush.video.baidu.com -@ads wm.baidu.com -@adswn.pos.baidu.com -@adsznsv.baidu.com -@adszz.bdstatic.com -@adszzy1.quyaoya.com -@adsx.clearbitjs.com bluekai.com -@adsfout.jp -@ads gmossp-sp.jp -@adsi-mobile.co.jp -@ads im-apps.net -@ads impact-ad.jp -@ads ladsp.com -@ads microad.co.jp -@ads -microad.jp -@ads socdm.com -@adsdata.flurry.com  admob.com adsense.comadservice.google.comadvertisercommunity.comadvertiserscommunity.comadwords-community.com adwords.comadwordsexpress.comapp-measurement.comclickserver.googleads.comdoubleclick.comdoubleclick.netgoogle-analytics.comgoogleadapis.comgoogleadservices.comgoogleanalytics.comgoogleoptimize.comgooglesyndication.comgoogletagmanager.comgoogletagservices.comgoogletraveladservices.com -urchin.comclick.hunantv.com -@adsda.hunantv.com -@ads da.mgtv.com -@adslog.hunantv.com -@ads log.v2.hunantv.com -@adsres.hunantv.com -@ads v2.log.hunantv.com -@adsinner-active.mobi -@adsa.ckm.iqiyi.com -@adsad.m.iqiyi.com -@ads afp.iqiyi.com -@adsc.uaa.iqiyi.com -@ads!cloudpush.iqiyi.com -@ads#cm.passport.iqiyi.com -@adscupid.iqiyi.com -@ads$emoticon.sns.iqiyi.com -@ads"gamecenter.iqiyi.com -@ads"hotchat-im.iqiyi.com -@ads ifacelog.iqiyi.com -@adsmbdlog.iqiyi.com -@ads msg.71.am -@ads msg.video.qiyi.com -@ads!msg2.video.qiyi.com -@ads$policy.video.iqiyi.com -@adsyuedu.iqiyi.com -@adsads.union.jd.com -@ads c-nfa.jd.com -@adscps.360buy.com -@ads -jzt.jd.com -@ads stat.m.jd.com -@ads img-x.jd.com -@ads!log-sdk.gifshow.com -@adswlog.kuaishou.com -@ads$api.game.letvstore.com -@ads ark.letv.com -@ads dc.letv.com -@adsdev.dc.letv.com -@ads fz.letv.com -@ads g3.letv.com -@adsletv.allyes.com -@adsminisite.letv.com -@adsmsg.m.letv.com -@adsn.mark.letv.com -@adsplog.dc.letv.com -@adspro.hoye.letv.com -@ads pro.letv.com -@ads stat.letv.com -@ads#static.app.m.letv.com -@adsdecide.mixpanel.com mopub.com -@adsevt.mxplay.com -@ads g.163.com -@ads onesignal.comPB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ -@adsads.pubmatic.com -@adscdn.segment.com 2016.sina.cn +@ads + +NODEJS +nodejs.org +& +SLING  sling.com +movetv.com + +LITV litv.tv + + JFENGTIME jfengtime.com + +RASPBIAN raspbian.org +´ + CHINAUNICOM  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn +% +FONTS  fonts.com  fonts.net + +HINET  hinet.net +% +NGINX  nginx.com  nginx.org +! +NTD ntd.com  ntdtv.com +# +QT qt.ioqt-project.org +* +SCIENTIFICLINUXscientificlinux.org +ø +SONYplaystation.complaystation.net sonyentertainmentnetwork.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com +wwtbam.comyourfantasybeginsnow.comsonyginzasonypark.jpsony-africa.com sony-asia.comsony-europe.comsony-hes.co.jpsony-latin.com sony-mea.comsony-olympus-medical.comsony-promotion.eusony-semicon.co.jp sony.at sony.ba sony.be sony.bg sony.ca sony.ch sony.cl +sony.co.cr +sony.co.id +sony.co.in +sony.co.jp +sony.co.kr +sony.co.nz +sony.co.th +sony.co.uk sony.com sony.com.ar sony.com.au sony.com.bo sony.com.br sony.com.co sony.com.do sony.com.ec sony.com.gt sony.com.hk sony.com.hn sony.com.mk sony.com.mx sony.com.my sony.com.ni sony.com.pa sony.com.pe sony.com.ph sony.com.sg sony.com.sv sony.com.tr sony.com.tw sony.com.vn sony.cz sony.de sony.dk sony.ee sony.es sony.eu sony.fi sony.fr sony.gr sony.hr sony.hu sony.ie sony.it sony.kz sony.lt sony.lu sony.lv sony.net sony.nl sony.no sony.pl sony.pt sony.ro sony.rs sony.ru sony.se sony.si sony.sk sony.ua sonybo.co.jp sonybsc.comsonybuilding.jpsonydesign.com sonydna.comsonyglobalsolutions.jp sonykigyo.jpsonylatvija.com +sonypcl.jpsonyprotechnosupport.co.jpsonystoragemedia.co.jp sonytc.co.jp  sovec.net +, +BYPASSCENSORSHIPbypasscensorship.org + +XPOSED xposed.info + +TABOOLA taboola.com +6 + RULEOFLAWrolfoundation.orgrolsociety.org +# +V8 +v8.dev v8project.org + +WENZHAO +wenzhao.ca +² +QIHOO360 +360.cn 360.com +360-jr.com 360chou.com360daikuan.com360huzhubao.com +360jie.com360jinrong.net +360kan.com 360kuai.com  360os.com 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com +haosou.com haosou.com.cn +haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com qihucdn.com  qihoo.com qikucdn.com +so.com sou.comxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com +youhua.com + +STEEMIT steemit.com +? +STRIPE +stripe.comstripe.network stripecdn.com +' +ZEPLIN +zeplin.dev  zeplin.io + +OONI ooni.org +" + SHADOWSOCKSshadowsocks.org +û + STACKEXCHANGE askubuntu.comblogoverflow.commathoverflow.netserverfault.com sstatic.net stackapps.com stackauth.comstackexchange.com stackmod.blogstackoverflow.blogstackoverflow.comstackoverflow.emailstackoverflowbusiness.comstacksnippets.net superuser.com tex-talk.netthesffblog.com +4 + ARCHLINUX archlinux.orgarchlinuxarm.org +i +ARCHIVEOFOUROWN ao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net +C +GITBOOK gitbook.com +gitbook.iogitbook.zendesk.com + +OPENSUSE opensuse.org +g + READTHEDOCSreadthedocs-hosted.comreadthedocs.comreadthedocs.ioreadthedocs.org +÷ +SINA  97973.com sina.com +sinaimg.cn sina.com.cn  sinajs.cn sina.cn sinaapp.com sinaedge.com sinaimg.com +sinajs.com  weibo.com weibo.com.cn weibo.cn weibocdn.com xhaiwai.com 2016.sina.cn @adsad.sina.com.cn @adsadbox.sina.com.cn @ads"adimages.sina.com.hk @@ -4672,217 +4283,899 @@ jzt.jd.com @ads!woocall.sina.com.cn @adszc.biz.weibo.com @ads zymo.mps.weibo.com -@adsadnet.sohu.com -@ads ads.sohu.com -@ads aty.sohu.com -@adsdata.vod.itc.cn -@adsepro.sogou.com -@ads go.sohu.com -@adsgolden1.sogou.com -@adsimp.optaim.com -@adsinte.sogou.com -@adsinte.sogoucdn.com -@adslu.sogoucdn.com -@ads theta.sogoucdn.com -@adsuranus.sogou.com -@adsv2.reachmax.cn -@ads*e8aeb8bbdbbd7.cdn.sohucs.com -@ads*643108e7617ef.cdn.sohucs.com -@adsssp.api.tappx.com -@ads ad.qq.com -@ads ad.qun.qq.com -@ads"adfilter.imtt.qq.com -@ads adping.qq.com -@adsadpm.app.qq.com -@adsadsclick.qq.com -@adsadsfile.qq.com -@adsadshmmsg.qq.com -@adsadslvfile.qq.com -@adsadslvseed.qq.com -@ads&adsmind.apdcdn.tc.qq.com -@adsadsqqclick.qq.com -@ads adstestview.qq.com -@adsadsview.qq.com -@adsadsview2.qq.com -@adsadv.app.qq.com -@ads adver.qq.com -@ads btrace.qq.com -@adse.qq.com -@adslog.tbs.qq.com -@ads mpush.qq.com -@ads mtrace.qq.com -@ads push.qq.com -@ads pgdt.gtimg.cn -@ads uberads.com -@adsalog.umeng.com -@ads!alog.umengcloud.com -@ads"unityads.unity3d.com -@ads$unityads.unitychina.cn -@ads ads.wteam.xyz ad.intl.xiaomi.com -@ads ad.mi.com -@ads ad.xiaomi.com -@adsadmob.xiaomi.com -@adsad1.xiaomi.com -@adsmistat.xiaomi.com -@adstracking.miui.com -@adsadv.sec.miui.com -@ads#adv.sec.intl.miui.com -@ads#misc.in.duokanbox.com -@ads ad.hpplay.cn -@adsadeng.hpplay.cn -@ads atianqi.com -@ads kuyun.com -@ads umeng.com -@ads ads.yahoo.com -@adsgemini.yahoo.com -@adsactives.youku.com -@ads!ad.api.3g.youku.com -@ads%ad.api.mobile.youku.com -@ads!ad.mobile.youku.com -@ads)a-dxk.play.api.3g.youku.com -@ads atm.youku.com -@ads$b.smartvideo.youku.com -@adsc.yes.youku.com -@adsdas.api.youku.com -@ads"das.mobile.youku.com -@ads"dev-push.m.youku.com -@adsdl.g.youku.com -@adsdmapp.youku.com -@adse.stat.ykimg.com -@ads$gamex.mobile.youku.com -@ads"guanggaoad.youku.com -@ads!hudong.pl.youku.com -@ads"huodong.pl.youku.com -@ads#huodong.vip.youku.com -@ads hz.youku.com -@adsiyes.youku.com -@ads l.ykimg.com -@adslstat.youku.com -@ads!mobilemsg.youku.com -@ads msg.youku.com -@adsmyes.youku.com -@ads p.l.youku.com -@ads pl.youku.com -@ads$passport-log.youku.com -@adsp-log.ykimg.com -@adspush.m.youku.com -@ads r.l.youku.com -@ads s.p.youku.com -@adssdk.m.youku.com -@adsstat.youku.com -@ads%statis.api.3g.youku.com -@ads'store.tv.api.3g.youku.com -@ads'store.xl.api.3g.youku.com -@adstdrec.youku.com -@ads test.ott.youku.com -@ads"test.sdk.m.youku.com -@ads v.l.youku.com -@adsval.api.youku.com -@ads&vali.cp31.ott.cibntv.net -@ads wan.youku.com -@adsykatr.youku.com -@adsykrec.youku.com -@ads cvnad.com +@ads +* + ADCOLONY-ADS adcolony.com +@ads +Þ +HEROKU  heroku.co +heroku.com  heroku.me herokuapp.com herokucdn.comherokucharge.com herokussl.comheroku-app.comheroku-charge.com codei.sh +codeish.co +codeish.io +9 +NIKKEI +nikkei.com  nikkei.jp nikkei.co.jp + +NIXOS  nixos.org + +RSF rsf.org +" + SUBLIMETEXTsublimetext.com +] +BUYPASSbuypass-ssl.com buypass.com +buypass.no +buypass.se minid.no + +MRAY  mray.club +w +NYTIMES nyt.com nyt.net nytcn.me  nytco.com nytimes.com nytstyle.comtimestalks.com + +BIGHEAD bighead.group +Ø +LETV-ADS$api.game.letvstore.com +@ads ark.letv.com +@ads dc.letv.com +@adsdev.dc.letv.com +@ads fz.letv.com +@ads g3.letv.com +@adsletv.allyes.com +@adsminisite.letv.com +@adsmsg.m.letv.com +@adsn.mark.letv.com +@adsplog.dc.letv.com +@adspro.hoye.letv.com +@ads pro.letv.com +@ads stat.letv.com +@ads#static.app.m.letv.com +@ads + +GCORES +gcores.com ++ +TRELLO +trello.com trellocdn.com + + ZOOMINGIN zoomingin.tv + +SSPLIVE +ssplive.pw +„ +DEDAO biji.com +ddmogo.com +igetget.cn igetget.com luojilab.com  mogoo.com +sao.cn saolife.com +‹ +EBAY ebay.at ebay.be ebay.ca ebay.ch ebay.cn +ebay.co.uk ebay.com ebay.com.au ebay.com.hk ebay.com.sg ebay.de ebay.es ebay.fr ebay.ie ebay.in ebay.it ebay.nl ebay.pl ebaycdn.net ebayimg.com ebayinc.comebaymainstreet.comebayprivacycenter.com ebayrtm.comebaystatic.com + +ELREPO +elrepo.org + +KALI kali.org + + +REALVISIONrealvision.com + +TELEX telex.cc +. +XUEQIUdanjuanfunds.com +xueqiu.com ++ +BOSLIFE boslife.biz boslife.net + +D100 d100.net +¤ +IBMibmweatherchannel weather bluemix.com bluemix.net ibm.com +ibm.eu ibm.net +ibm.us s-bluemix.net s81c.com +# +MEGA +mega.co.nz mega.nz + + +ONIONSHAREonionshare.org + +PHP php.net +œ +TMTPOST tmtpost.com chaindd.com +72whys.com checkzeit.com +tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com + +AP +ap.org +apnews.com + +APACHE +apache.org + +AMYTELE amytele.com +' +APA apa.orgpsyccareers.com +ï +DISNEYadventuresbydisney.com +babble.com +dilcdn.comdisney-plus.net  disney.ca +disney.com disney.com.br  disney.iodisneyaulani.comdisneybaby.comdisneyjunior.comdisneylatino.comdisneymovieinsiders.comdisneyplus.comdisneyredirects.comdisneystore.com +dssott.com +go.commoviesanywhere.complaymation.comshopdisney.com starwars.comthestationbymaker.comthisispolaris.com + +LUA lua.org +B +MITmit mit.edu mit.netmitpressjournals.org +1 +N3RO n3ro.fun  n3ro.live n3ro.net + + NEWYORKER newyorker.com + +PRESS  press.vin + +AAEX aaex.uk +’ +RUANMEI 6655.com cooldock.com +ithome.com lapin365.com ruanmei.com +saayaa.com win7china.com win8china.com + +X-ORG x.org + +RFI +rfi.fr + +HK01 hk01.com +¿ +NINTENDOnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hk nintendo.de nintendo.es nintendo.eu nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.pt nintendo.ru +* +PAGECDN pagecdn.com +pagecdn.io +3 +QUORA  quora.com quoracdn.net qr.ae +# +EDX edx.org edx-cdn.org + +SQLITE +sqlite.org +œ +STEAM fanatical.comhumblebundle.complayartifact.comsteam-chat.comsteamcommunity.comsteamgames.comsteampowered.comsteamstatic.comunderlords.comvalvesoftware.comsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.net + +SWIFT  swift.org + +UPROXY +uproxy.org +Þ +VERCEL +now.shvercel-dns.comvercel-status.com +vercel.app +vercel.comzeit-world.co.ukzeit-world.comzeit-world.netzeit-world.org zeit.co zeit.sh zeitworld.com +” +DINGTALK ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.to +@ + GLOBALVOICESglobalvoices.orgglobalvoicesonline.org +? +MAFENGWO mafengwo.cn mafengwo.com mafengwo.net +& + NETEASE-ADS g.163.com +@ads +: +POLYMERpolymer-project.orgpolymerproject.org +ê +ALIYUNalibabadns.com +alicdn.com alidayu.com +alidns.comaliyun-inc.comaliyun-iot-share.com +aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org mxhichina.com +7 + BOOTSTRAPbootstrapcdn.comgetbootstrap.com +Ì + CHINATELECOM +ctexcel.ca ctexcel.comctexcel.com.hk +ctexcel.fr +ctexcel.us +189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com +chntel.com +Š +TELEGRAMt.me tdesktop.com +telegra.ph +telesco.pe telegram.me telegram.org telegram.dog  graph.org +À +UMENG mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com +uyunad.comwhalecloud.comalog.umeng.com +@ads!alog.umengcloud.com +@ads +/ + +AMAZON-ADS!amazon-adsystem.com +@ads + +KOTLINkotlinlang.org +„ + TONGCHENG 40017.cn +17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com +ly.com + + +FREEBEACONfreebeacon.com +% +RTHK etvonline.hk rthk.hk + + +CHATURBATEchaturbate.com +3 +ELEME +ele.me elemecdn.com eleme.cn +h +FASTLY +fastly.com +fastly.netfastlylabs.com fastlylb.netfastly-terrarium.com +! + +FLURRY-ADSdata.flurry.com +- +MYRADIO +myradio.hkmyradio.com.hk + +PINCONG pincong.rocks +ê + SONYPICTURESimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com +wwtbam.comyourfantasybeginsnow.com + +AVN avn.com +4 +CSIS csis.orgcsis-prod.s3.amazonaws.com +# +DCARD dcard.io dcard.tw + +GENTOO +gentoo.org +, + TAPPX-ADSssp.api.tappx.com +@ads +ª + 58TONGCHENG +58.com  58.com.cn 5858.com  58che.com 58xueche.com +anjuke.comanjukestatic.com chinahr.com +daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com +~ +GITLAB +gitlab.com  gitlab.io +gitlab.netgitlab-static.net.*gitlab-assets.oss-cn-hongkong.aliyuncs.com +$ + MOPUB-ADS mopub.com +@ads +… +NIKE nike.com nike.com.br nike.com.hk nikecdn.com nikecloud.comniketracking.comstatic-nike.com + +QUANTIL quantil.com +­ + +BLOGSPOT blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn + +HQPORNER hqporner.com + +WHONIX +whonix.org + +FIGMA  figma.com +Ü +YYETS +got001.com +got002.com jstucdn.com playcvn.com rrys.tv rrys2019.com rrysapp.com  yyets.com zmz2019.com +zmzapi.com cvnad.com +@ads +iyoowi.com +@ads + +CLOJURE clojure.org +Z +PICSEE pics.ee  picsee.co +picsee.pro pise.pw pros.ee +pse.is +" + SEGMENT-ADScdn.segment.com + +WEVERSE +weverse.io +, +ACPLAY +acplay.netdandanplay.com +) + REBRANDLY rb.gy rebrandly.com +" + SOUNDOFHOPEsoundofhope.org +k + TAYLORFRANCIS tandf.co.uktaylorandfrancis.comtaylorfrancis.comtaylorandfrancis.com +e +METART +metart.commetartnetwork.com metcams.comnaiadsystems.com  nsimg.net + +HKCNEWS hkcnews.com +@ +JQUERY +jquery.comjquerymobile.com jqueryui.com + + ZHIHUISHU zhihuishu.com +h +51JOB  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn +5 +V2RAY  v2ray.com +v2ray.cool  v2fly.org +* +BOXUN  boxun.combowenpress.com +º +CATEGORY-VPNSERVICES 928.plus +zind.cloud aaex.uk amytele.com +ark.tobaicaonetwork.com bighead.groupblinkload.zone boslife.biz boslife.net  cloudn.me  conair.me cordcloud.org ctyun.online +cylink.procylink0122.icu dlercloud.com dlercloud.org dlercloud.me dleris.best duyaoss.com duyaossr.com hitun.ioxn--90wwvt03e.comjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net  maying.coxn--i2ru8q2qg.commocloudplus.com  mray.club muncloud.dog n3ro.fun  n3ro.live n3ro.net nexitally.comnexitallysafe.com nexitcore.com paofu.cloud paofuyun.me renzhe.cloud rixcloud.comshadowsocks.comshadowsocks.nlsquirrelvpn.comsquirrelgroup.net +ssplive.pwchina-internet-exchange.com cxkcloud.com ssrcloud.com ssrcloud.org +ssrpass.pwstc-server.com surflite.co surflite.net vilavpn.com vilavpn.xyz vilavpn1.xyz vilavpn2.xyz vilavpn3.xyz vilavpn4.xyz vilavpn5.xyz vilavpn6.xyz vilavpn7.xyz + + LINUXMINT linuxmint.com + +ARCHIVE archive.org + +EFF eff.org + + KINDGIRLS kindgirls.com +Ð +OPPO coloros.com finzfin.com h2os.com +heytap.com heytapcs.comheytapdownload.comheytapimage.com +myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobi  oppoer.meoppomobile.com oppopay.com opposhop.cn +realme.com realmebbs.comrealmemobile.com +# + PRIVACYTOOLSprivacytools.io +m +SUNING cnsuning.com +suning.comsuningcloud.comsuningestate.comsuningholdings.com +/ + +THEINITIUMtheinitium.com  init.shop +. +CABLETVcabletv.com.hk i-cable.com +& + CHINADECODINGchinadecoding.com +, +CYLINK +cylink.procylink0122.icu += + JAVFINDER javfinder.sh findercdn.me o0-2.com + +JS-ORG +js.org + + STCSERVERstc-server.com + +WEBFLOW webflow.com +; +WJX +sojump.com +wjx.cn wjx.com wjx.top +? + BONGACAMS bongacams.com +bcicdn.com bcrncdn.com +³ +FACEBOOKcdninstagram.com facebook.br facebook.comfacebook.design facebook.net facebook.hu facebook.in facebook.nl facebook.se +fb.com fb.me  fbcdn.net  fbsbx.com instagram.cominstagram-press.comm.me messenger.com +oculus.com oculuscdn.com rocksdb.orgthefacebook.com whatsapp.com whatsapp.netfbcdn-a.akamaihd.net + +SIGNAL +signal.org + + WIRESHARK wireshark.org +z +CERNcern ams02.space cern.ch cixp.netdotcernpilot.info  ippog.orglinearcollider.org + +IUS +ius.io + +OPENVPN openvpn.net ++ +RUBY ruby-lang.org rubygems.org +) +UBER uber.comuber-assets.com +6 +UDN udn.com +udn.com.twudnfunlife.com +, +BANDCAMP bandcamp.com +bcbits.com +N +AMP amp.devampproject.comampproject.netampproject.org +N +CNBC cnbc.com +cnbcfm.com +nbcuni.comnbcudigitaladops.com +“ +KUAISHOU gifshow.com ksapisrv.com kuaishou.com +yximgs.com!log-sdk.gifshow.com +@adswlog.kuaishou.com +@ads + +AKASHA akasha.world +C +ADDTHIS addthis.comaddthiscdn.comaddthisedge.com +& + BAICAONETWORKbaicaonetwork.com + +FIRESIDE fireside.fm + +OSDN osdn.net +s +SINOPECsinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com + +TINYURL tinyurl.com + +91PORN +91porn.com + +ATOM atom.io + +GNU gnu.org +" + RASPBERRYPIraspberrypi.org +& + VAGINACONTESTvaginacontest.com +– +XIAOMI +mi.com +mi-img.com  mifile.cn miui.com +miwifi.com  xiaomi.cn +xiaomi.com +xiaomi.netxiaomiyoupin.com + +ZERONET +zeronet.io +¶ + ALIBABA-ADS a.alimama.cn +@adsacjs.aliyun.com +@ads adash.m.taobao.com +@ads"adashbc.m.taobao.com +@ads#adashbc.ut.taobao.com +@ads#adash-c.ut.taobao.com +@ads!adashx.m.taobao.com +@ads%adashx4ae.ut.taobao.com +@ads$adashx4yt.m.taobao.com +@ads$adashxgc.ut.taobao.com +@adsadsh.m.taobao.com +@adsafp.adchina.com +@adsafp.alicdn.com +@ads!agoodm.m.taobao.com +@ads$agoodm.wapa.taobao.com +@ads alipaylog.com +@adsamdc.alipay.com +@adsamdc.m.taobao.com +@ads!api.wapa.taobao.com +@ads$api.waptest.taobao.com +@ads apoll.m.taobao.com +@ads$appdownload.alicdn.com +@adsatanx.alicdn.com +@adsatanx2.alicdn.com +@adscbu01.alicdn.com +@adscdn0.mobmore.com +@adsclick.aliyun.com +@ads'click.mz.simba.taobao.com +@adscm.ipinyou.com +@ads cm.mlt01.com +@ads"dsp.simba.taobao.com +@adserr.taobao.com +@adsex.mobmore.com +@ads ex.puata.info +@ads"fav.simba.taobao.com +@ads%feedback.whalecloud.com +@adsff.win.taobao.com +@ads fm.p0y.cn +@ads g.click.taobao.com +@ads +g.tbcdn.cn +@adsgma.alicdn.com +@adsgtms01.alicdn.com +@adsgtms02.alicdn.com +@adsgtms03.alicdn.com +@adsgtms04.alicdn.com +@adshydra.alibaba.com +@ads(hz.pre.tbusergw.taobao.net +@ads$hz.tbusergw.taobao.net +@ads i.ipinyou.com +@adsinit.phpwind.com +@ads"intl.wapa.taobao.com +@ads%intl.waptest.taobao.com +@ads#jxlog.istreamsche.com +@adslog.umtrack.com +@adsm.intl.taobao.com +@ads m.simba.taobao.com +@ads match.p4p.1688.com +@ads&material.istreamsche.com +@ads mlt01.com +@ads'nbsdk-baichuan.alicdn.com +@ads'nbsdk-baichuan.taobao.com +@ads#osfota.cdn.aliyun.com +@ads!osupdate.aliyun.com +@ads'osupdateservice.yunos.com +@ads&pindao.huoban.taobao.com +@ads push.wandoujia.com +@adsre.m.taobao.com +@ads re.taobao.com +@ads'redirect.simba.taobao.com +@adsrj.m.taobao.co +@adsrj.m.taobao.com +@ads sdkinit.taobao.com +@ads show.re.taobao.com +@adssimaba.taobao.com +@ads simba.m.taobao.com +@ads"srd.simba.taobao.com +@adsstats.ipinyou.com +@ads!strip.taobaocdn.com +@ads%tanxlog.istreamsche.com +@adstejia.taobao.com +@adstemai.taobao.com +@ads"tns.simba.taobao.com +@ads!tongji.linezing.com +@ads!tvupgrade.yunos.com +@adstyh.taobao.com +@adsuserimg.qunar.com +@adsw.m.taobao.com +@adsyiliao.hupan.com +@ads +$ +CAS +csdl.ac.cn  las.ac.cn +. +NOTION  notion.sonotion-static.com +® + +SF-EXPRESS  feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.com sf-saas.comsf-tech.com.cn sffix.cn sfgy.org +2 +UBI ubi.com ubisoft.com  uplay.com +ý. +ALIBABA a.alimama.cn +@adsacjs.aliyun.com +@ads adash.m.taobao.com +@ads"adashbc.m.taobao.com +@ads#adashbc.ut.taobao.com +@ads#adash-c.ut.taobao.com +@ads!adashx.m.taobao.com +@ads%adashx4ae.ut.taobao.com +@ads$adashx4yt.m.taobao.com +@ads$adashxgc.ut.taobao.com +@adsadsh.m.taobao.com +@adsafp.adchina.com +@adsafp.alicdn.com +@ads!agoodm.m.taobao.com +@ads$agoodm.wapa.taobao.com +@ads alipaylog.com +@adsamdc.alipay.com +@adsamdc.m.taobao.com +@ads!api.wapa.taobao.com +@ads$api.waptest.taobao.com +@ads apoll.m.taobao.com +@ads$appdownload.alicdn.com +@adsatanx.alicdn.com +@adsatanx2.alicdn.com +@adscbu01.alicdn.com +@adscdn0.mobmore.com +@adsclick.aliyun.com +@ads'click.mz.simba.taobao.com +@adscm.ipinyou.com +@ads cm.mlt01.com +@ads"dsp.simba.taobao.com +@adserr.taobao.com +@adsex.mobmore.com +@ads ex.puata.info +@ads"fav.simba.taobao.com +@ads%feedback.whalecloud.com +@adsff.win.taobao.com +@ads fm.p0y.cn +@ads g.click.taobao.com @ads -iyoowi.com -@ads 51y5.net a.adtng.com -aaxads.com -ad-srv.netad.api.moji.comad.wang502.com adbutter.netads.trafficjunky.net adtechus.comcfts1tifqr.comcontentabc.comimg-bss.csdn.net imglnkc.com imglnkd.comja2.gamersky.com jl3.yjaxa.topkepler-37b.com -lqc006.coms4yxaqyq95.comshhs-ydd8x2.yjrmss.cnstatic.javhd.comtrafficfactory.biz toboads.com ad.unimhk.com ysm.yahoo.com adxprtz.com exoclick.com -exosrv.comcdn.advertserve.comcdn.banclip.comcdn.tsyndicate.com +g.tbcdn.cn +@adsgma.alicdn.com +@adsgtms01.alicdn.com +@adsgtms02.alicdn.com +@adsgtms03.alicdn.com +@adsgtms04.alicdn.com +@adshydra.alibaba.com +@ads(hz.pre.tbusergw.taobao.net +@ads$hz.tbusergw.taobao.net +@ads i.ipinyou.com +@adsinit.phpwind.com +@ads"intl.wapa.taobao.com +@ads%intl.waptest.taobao.com +@ads#jxlog.istreamsche.com +@adslog.umtrack.com +@adsm.intl.taobao.com +@ads m.simba.taobao.com +@ads match.p4p.1688.com +@ads&material.istreamsche.com +@ads mlt01.com +@ads'nbsdk-baichuan.alicdn.com +@ads'nbsdk-baichuan.taobao.com +@ads#osfota.cdn.aliyun.com +@ads!osupdate.aliyun.com +@ads'osupdateservice.yunos.com +@ads&pindao.huoban.taobao.com +@ads push.wandoujia.com +@adsre.m.taobao.com +@ads re.taobao.com +@ads'redirect.simba.taobao.com +@adsrj.m.taobao.co +@adsrj.m.taobao.com +@ads sdkinit.taobao.com +@ads show.re.taobao.com +@adssimaba.taobao.com +@ads simba.m.taobao.com +@ads"srd.simba.taobao.com +@adsstats.ipinyou.com +@ads!strip.taobaocdn.com +@ads%tanxlog.istreamsche.com +@adstejia.taobao.com +@adstemai.taobao.com +@ads"tns.simba.taobao.com +@ads!tongji.linezing.com +@ads!tvupgrade.yunos.com +@adstyh.taobao.com +@adsuserimg.qunar.com +@adsw.m.taobao.com +@adsyiliao.hupan.com +@adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com +alicdn.com alidayu.com +alidns.comaliyun-inc.comaliyun-iot-share.com +aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.toteambition.comteambition.netteambitionapis.com mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com +uyunad.comwhalecloud.comalog.umeng.com +@ads!alog.umengcloud.com +@ads 25pp.com  56che.com  95095.com 9game.cn +aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.comaliexpress.com alifanyi.comalihealth.com.cn alihealth.hk +aliimg.com +alikmd.com alimama.com alimebot.com +alimei.com alios.cn +alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com +aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn +asczwa.comasczxcefsv.com +asmlink.cn atatech.org +b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com +dfkhgj.com doctoryou.ai doctoryou.cn dongting.com +dratio.com emas-poc.com +gongyi.xin ialicdn.com iconfont.cn +ics.design +jhgtgb.com +kanbox.com +lazada.comliangxinyao.com m-now.cn +maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com +zuodao.com sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com +hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com +mashort.cn pailitao.com +taobao.com +taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmalltv.com tmjl.ai alitrip.com  feizhu.cn +feizhu.com +fliggy.com  fliggy.hk +iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net +& +CLEARBITJS-ADSx.clearbitjs.com  CTYUN ctyun.online - -D100 d100.net -: - ENTERMEDIADBentermediadb.netentermediadb.org -› +. -GLOBALSIGNglobalsign-media.com globalsign.be globalsign.chglobalsign.co.ukglobalsign.comglobalsign.com.auglobalsign.com.hkglobalsign.com.sg globalsign.es globalsign.eu globalsign.frglobalsign.net globalsign.nl - - SPANKBANG spankbang.com -1 - STACKPATH stackpath.com stackpath.dev +DUCKDUCKGOduckduckgo.com duck.com +o +IFANR coolbuy.com  ifanr.com ifanr.inifanrusercontent.com +ifanrx.com +minapp.com ++ +MONGODB mongodb.com mongodb.org + +OVERCAST overcast.fm +/ +XVIDEOS xvideos.comxvideos-cdn.com  -HINET  hinet.net -½ - -JD3.cn  300hu.com -360buy.com 360buyimg.com -360top.com -7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn -dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com -jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com -jd-app.com  jd-ex.com jd.cn jd.co.th -jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com -jingxi.com -jkcsjd.com -joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn -paipai.comprestodb-china.com qianxun.com toplife.com -vg.com wangyin.com  wdfok.com yhd.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com -@ads c-nfa.jd.com -@adscps.360buy.com -@ads -jzt.jd.com -@ads stat.m.jd.com -@ads img-x.jd.com +AVGLE  avgle.com + + MEGAPHONE megaphone.fm + +QMAP qmap.pub + +UN +un.org +q +UNITY  unity.com unity3d.com"unityads.unity3d.com +@ads$unityads.unitychina.cn @ads - -JITSI  jitsi.org - -PIGAV  pigav.com -% -RTHK etvonline.hk rthk.hk - - ZEROHEDGE zerohedge.com - - BLINKLOADblinkload.zone -Õ - EPICGAMESbattlebreakers.com epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealtournament.com*&^epicgames-download\d\.akamaized\.net$.*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$3/^epicgames-download\d-\d+\.file\.myqcloud\.com$ -" - LETSENCRYPTletsencrypt.org - - PHANTOMJS phantomjs.org -0 - SOURCEFORGEsourceforge.net fsdn.com +B +DISQUS +disqus.com disquscdn.comdisqusservice.com += +LANDIAN +lancdn.comlandiannews.com  wsoso.com $ - LOCALPRESSHKlocalpresshk.com -‘ -SAMSUNG samsung -xn--cg4bkigalaxyappstore.comgalaxymobile.jpgame-platform.net knoxemm.com samsung.comsamsungapps.comsamsungcloud.com samsungdm.comsamsunggalaxyfriends.comsamsungknox.comsamsungqbe.com - -TUMBLR -tumblr.com -Œ -APPLE apple  apple.com  apple.net apple.ae apple.com.af apple.at apple.com.au apple.be apple.bg apple.com.bo apple.com.br apple.bs apple.ca apple.ch apple.cl apple.cm apple.cn apple.com.cn apple.com.co apple.co.cr apple.cz apple.de apple.dk apple.com.do apple.ee apple.es apple.fi apple.fr apple.hn apple.hr apple.hu apple.ie apple.is apple.it apple.com.jm apple.jo apple.co.jp apple.co.kr apple.lk apple.lt apple.lv apple.me apple.com.mx apple.com.my apple.co.mz apple.nl apple.no apple.co.nz apple.com.pa apple.com.pe apple.pl apple.com.pr apple.pt apple.com.py apple.ro apple.ru apple.se apple.com.sg apple.si apple.sk apple.so apple.com.sv apple.co.th apple.com.tr apple.tt apple.com.tw apple.co.uk apple.com.uy apple.rs applecom.com iphone4s.com -icloud.com icloud.com.cnicloud-content.comapple-cloudkit.com cdn-apple.com mzstatic.comapple.com.akadns.netitunes-apple.com.akadns.net%!courier-push-apple.com.akadns.netpush-apple.com.akadns.net apple-dns.net apple-dns.cn cups.org  swift.org - -GNU gnu.org - -KNOVEL -knovel.com + THESTANDNEWSthestandnews.com +8 + KINGKONGLIVEkingkong.com.twkingkongapp.com +^ +CTEXCEL +ctexcel.ca ctexcel.comctexcel.com.hk +ctexcel.fr +ctexcel.us + -MONGODB mongodb.com mongodb.org +GUARDIANPROJECTguardianproject.info % -NGINX  nginx.com  nginx.org -À -UMENG  umeng.comwhalecloud.com umtrack.com  umsns.com -uyunad.comumengcloud.com mobmore.comalog.umeng.com +MIHOYO +mihoyo.com bh3.com + + SHARETHIS sharethis.com +L + UMENG-ADSalog.umeng.com @ads!alog.umengcloud.com @ads -Z -XUNLEI  00cdn.com  88cdn.com -sandai.netthunderurl.com -xunlei.com -? - BONGACAMS bongacams.com -bcicdn.com bcrncdn.com -” -DINGTALK ddurl.to dingding.xin dingtalk.com dingtalk.net dingtalk.cndingtalkapps.com laiwang.com lwurl.to - - -FANHAODIANfanhaodian.com -ùß +Ú( + BAIDU-ADS a.baidu.com +@ads ad.duapps.com +@ads!ad.player.baidu.com +@ads adm.baidu.com +@adsadscdn.baidu.com +@adsadx.xiaodutv.com +@adsae.bdstatic.com +@ads afd.baidu.com +@ads als.baidu.com +@adsanquan.baidu.com +@ads!antivirus.baidu.com +@adsapi.cpu.baidu.com +@ads'api.mobula.sdk.duapps.com +@ads#api.tuisong.baidu.com +@adsappc.baidu.com +@adsb.bdstatic.com +@ads baichuan.baidu.com +@adsbaidustatic.com +@adsbaidutv.baidu.com +@adsbanlv.baidu.com +@ads bar.baidu.com +@ads bce.baidu.com +@ads#bdimg.share.baidu.com +@adsbdplus.baidu.com +@ads bj.bcebos.com +@ads btlaunch.baidu.com +@ads c.baidu.com +@ads cb.baidu.com +@adscbjs.baidu.com +@adscjhq.baidu.com +@adscleaner.baidu.com +@ads!click.bes.baidu.com +@ads click.hm.baidu.com +@ads click.qianqian.com +@ads#cm.baichuan.baidu.com +@ads cm.baidu.com +@adscm.pos.baidu.com +@ads cpro.baidu.cn +@adscpro.baidu.com +@ads"cpro.baidustatic.com +@ads"cpro.tieba.baidu.com +@ads#cpro.zhidao.baidu.com +@adscpro2.baidu.com +@ads#cpro2.baidustatic.com +@ads cpu.baidu.com +@ads!cpu-admin.baidu.com +@ads crs.baidu.com +@adsdatax.baidu.com +@ads!dd713.bj.bcebos.com +@ads!dl.client.baidu.com +@adsdl.ops.baidu.com +@adsdl1sw.baidu.com +@adsdl2.bav.baidu.com +@adsdlsw.baidu.com +@adsdlsw.br.baidu.com +@ads"dl-vip.bav.baidu.com +@ads)dl-vip.pcfaster.baidu.co.th +@ads$download.bav.baidu.com +@ads#download.sd.baidu.com +@adsdrmcmm.baidu.com +@ads!dup.baidustatic.com +@ads dxp.baidu.com +@ads dzl.baidu.com +@ads e.baidu.com +@adseclick.baidu.com +@adsecma.bdimg.com +@adsecmb.bdimg.com +@adsecmc.bdimg.com +@ads eiv.baidu.com +@ads em.baidu.com +@adsentry.baidu.com +@ads ers.baidu.com +@ads f10.baidu.com +@ads$fc-feed.cdn.bcebos.com +@adsfclick.baidu.com +@adsfeed.baidu.com +@ads fexclick.baidu.com +@ads g.baidu.com +@adsgimg.baidu.com +@adsguanjia.baidu.com +@ads hc.baidu.com +@ads hm.baidu.com +@adshmma.baidu.com +@ads hpd.baidu.com +@adsidm.bce.baidu.com +@adsidm-su.baidu.com +@adsiebar.baidu.com +@adsikcode.baidu.com +@adsimg.taotaosou.cn +@ads img01.taotaosou.cn +@adsj.br.baidu.com +@adskstj.baidu.com +@ads!log.music.baidu.com +@ads m1.baidu.com +@ads ma.baidu.com +@ads#mipcache.bdstatic.com +@adsmobads.baidu.com +@ads#mobads-logs.baidu.com +@adsmpro.baidu.com +@adsmsite.baidu.com +@adsneirong.baidu.com +@adsnsclick.baidu.com +@ads$nsclickvideo.baidu.com +@adsopenrcv.baidu.com +@ads%pc.videoclick.baidu.com +@ads pos.baidu.com +@adspups.bdimg.com +@ads&push.zhanzhang.baidu.com +@ads!qianclick.baidu.com +@adsrelease.baidu.com +@adsres.mi.baidu.com +@ads#rigel.baidustatic.com +@ads$river.zhidao.baidu.com +@ads rj.baidu.com +@adsrplog.baidu.com +@ads s.baidu.com +@adss.cpro.baidu.com +@ads"sa.tuisong.baidu.com +@adssclick.baidu.com +@adssestat.baidu.com +@adsshadu.baidu.com +@adsshare.baidu.com +@ads#snippet.pos.baidu.com +@adssobar.baidu.com +@ads sobartop.baidu.com +@adsspcode.baidu.com +@adsstat.v.baidu.com +@ads su.bdimg.com +@adssu.bdstatic.com +@ads t10.baidu.com +@ads t11.baidu.com +@ads t12.baidu.com +@ads tk.baidu.com +@adstkweb.baidu.com +@ads#tob-cms.bj.bcebos.com +@adstongji.baidu.com +@adstoolbar.baidu.com +@adstracker.baidu.com +@adstuijian.baidu.com +@ads+uat1.bfsspadserver.8le8le.com +@ads$ubmcmm.baidustatic.com +@adsucstat.baidu.com +@adsulic.baidu.com +@ads!ulog.imap.baidu.com +@adsunion.baidu.com +@ads"unionimage.baidu.com +@adsutility.baidu.com +@ads utk.baidu.com +@ads!videopush.baidu.com +@ads vv84.bj.bcebos.com +@adsw.gdown.baidu.com +@ads w.x.baidu.com +@ads wangmeng.baidu.com +@adsweishi.baidu.com +@ads%wenku-cms.bj.bcebos.com +@ads&wisepush.video.baidu.com +@ads wm.baidu.com +@adswn.pos.baidu.com +@adsznsv.baidu.com +@adszz.bdstatic.com +@adszzy1.quyaoya.com +@ads +þ +JIGUANG +42r.cn +5566ua.com aurorapush.cn +e0n.cn japps.cn jchat.io +jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com +jsurvey.cn  jvoice.cn +kc9.cn +n0q.cn pushcfg.com +s0n.cn +© +VILAVPN vilavpn.com vilavpn.xyz vilavpn1.xyz vilavpn2.xyz vilavpn3.xyz vilavpn4.xyz vilavpn5.xyz vilavpn6.xyz vilavpn7.xyz +¬ GEOLOCATION-!CN 928.plus zind.cloud aaex.uk amytele.com ark.tobaicaonetwork.com bighead.groupblinkload.zone boslife.biz boslife.net  cloudn.me  conair.me cordcloud.org ctyun.online @@ -4913,44 +5206,50 @@ mi9cdn.com nine.com.auninemsn.com.austatic9.net.au yourtv. ap.org apnews.comappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com bbc.com  bbc.co.uk -bbci.co.uk  boxun.combowenpress.comcabletv.com.hk i-cable.comcaijinglengyan.comchinadecoding.comchinadigitaltimes.net cnbc.com +bbci.co.uk  boxun.combowenpress.com breitbart.comcabletv.com.hk i-cable.comcaijinglengyan.comchinadecoding.comchinadigitaltimes.net cnbc.com cnbcfm.com nbcuni.comnbcudigitaladops.com cnn.com cnn.io cnnarabic.com cnnlabs.com cnnmoney.ch cnnmoney.comcnnmoneystream.comcnnpolitics.com cup.com.hk d100.net -dw.com fox.com foxnews.comfoxbusiness.com -foxdcg.com -uplynk.comtheplatform.com foxnewsplayer-a.akamaihd.netglobalvoices.orgglobalvoicesonline.org  guo.media  gnews.org gtv.org gtv1.org g-tvapp.com hk01.com hkcnews.com hkopentv.com fantv.hkhongkongfp.com inmediahk.net jfengtime.com landofhope.tvlocalpresshk.com +dw.com dajiyuan.com dajiyuan.euepochmediagroup.comepochstories.com epochtime.comepochtimes-romania.comepochtimes.co.ilepochtimes.co.krepochtimes.co.ukepochtimes.comepochtimes.com.auepochtimes.com.brepochtimes.com.sgepochtimes.com.twepochtimes.com.ua epochtimes.cz epochtimes.de epochtimes.eu epochtimes.fr epochtimes.it epochtimes.jp epochtimes.nl epochtimes.pl epochtimes.ru epochtimes.seepochtimestr.com epochweek.comepochweekly.com erabaru.netlagranepoca.com ntd.com ntdtv.ca ntdtv.co.kr  ntdtv.com ntdtv.com.tw ntdtv.jp ntdtv.kr  ntdtv.org ntdtv.ru ntdtvla.com  ntdvn.comtheepochtimes.comtheepochtimessubscribe.comvelkaepocha.czfox fox.comfoxbusiness.comfoxcorporation.com +foxdcg.com foxdoua.com +foxfdm.com +foxinc.com +foxneo.comfoxneodigital.com foxnews.com fxnetwork.com foxnewsplayer-a.akamaihd.netfreebeacon.comglobalvoices.orgglobalvoicesonline.org  guo.media  gnews.org gtv.org gtv1.org g-tvapp.com hk01.com hkcnews.com hkopentv.com fantv.hkhongkongfp.com inmediahk.net jfengtime.com landofhope.tvlocalpresshk.com ltn.com.tw yes123.com.tw matters.news matters.one medium.com myradio.hkmyradio.com.hk newyorker.com nikkei.com  nikkei.jp nikkei.co.jp now.com now.com.hk nowe.com -now-tv.comnow-ashare.com ntd.com  ntdtv.com nyt.com nyt.net nytcn.me  nytco.com nytimes.com nytstyle.comtimestalks.compassiontimes.hkrealvision.com reuters.com +now-tv.comnow-ashare.com ntd.com  ntdtv.com nyt.com nyt.net nytcn.me  nytco.com nytimes.com nytstyle.comtimestalks.compassiontimes.hk qmap.pubrealvision.com reuters.com reuters.tvreutersmedia.net rfa.org rfi.fr rsf.org etvonline.hk rthk.hk scmp.com i-scmp.comshuziyimin.orgsinoinsider.comsoundofhope.orgtheinitium.com  init.shopthestandnews.com udn.com udn.com.twudnfunlife.com  unwire.hkamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.ru insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com -voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.comwashingtonpost.com watchout.tw +voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.com cstatic.net +curbed.com  eater.comfunnyordie.com meridian.net polygon.com +racked.com +recode.net sbnation.com theverge.com vox-cdn.com vox.comvoxcreative.comvoxfieldguide.com voxmedia.com +voxops.netwashingtonpost.com watchout.tw waa.tw wenzhao.ca -zaobao.com zaobao.com.sg  zaobao.sg zerohedge.com apa.orgpsyccareers.com cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.orgnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.com doi.org doi.infoengineeringvillage.com +zaobao.com zaobao.com.sg  zaobao.sg zerohedge.com zoomingin.tv apa.orgpsyccareers.com cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.orgnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.com doi.org doi.infoengineeringvillage.com scopus.comscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.skmit mit.edu mit.netmitpressjournals.orgamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.comsciencedirect.comsciencedirectassets.com apress.com springer.comspringerlink.comspringernature.com tandf.co.uktaylorandfrancis.comtaylorfrancis.comtaylorandfrancis.com aclweb.org acm.organalytictech.comannualreviews.org  arxiv.org asha.org berkeley.edu biorxiv.org  brill.com cell.comcomputingreviews.com degruyter.comdentalhypotheses.comelifesciences.orgfrontiersin.org hindawi.com ieee.orgisca-speech.org jmlr.org jneurosci.org  jstor.org mdpi.com nature.com nejm.org neurology.org ovid.com  peerj.comphysiology.org plos.org pnas.org princeton.eduresearchgate.netroutledgehandbooks.comroyalsocietypublishing.org sagepub.comscholarpedia.orgsciencemag.orgscientificamerican.com scitation.orgspiedigitallibrary.orgstatsmakemecry.com thelancet.com uchicago.edu ucla.edu  umass.edu  wiley.com yale.educern ams02.space cern.ch cixp.netdotcernpilot.info  ippog.orglinearcollider.orgchinapower.csis.org edx.org edx-cdn.org knovel.com ted.com -tedcdn.comalpinelinux.org anaconda.com anaconda.org conda.io +tedcdn.comalpinelinux.org amp.devampproject.comampproject.netampproject.org anaconda.com anaconda.org conda.io android.comandroidify.com apache.org archlinux.orgarchlinuxarm.org atom.iobootstrapcdn.comgetbootstrap.com centos.orgchocolatey.org clojure.org cygwin.com -cython.org +cython.org dart.dev dartlang.org dartpad.dev debian.org -dotdeb.org  deno.land -docker.comcompose-spec.ioelixir-lang.org +dotdeb.org  deno.landcompose-spec.io +docker.com  docker.ioelixir-lang.org elrepo.org -erlang.org getfedora.orgfedoraforum.orgfedoraproject.orgfedoramagazine.orgfontawesome.comfortawesome.com freebsd.org +erlang.org fastlane.cifastlane.tools getfedora.orgfedoraforum.orgfedoraproject.orgfedoramagazine.org flutter.devflutterapp.comfontawesome.comfortawesome.com freebsd.org gentoo.orggetcomposer.org gitbook.com gitbook.iogitbook.zendesk.com git.io github.blog @@ -4960,44 +5259,57 @@ gitlab.netgitlab-static.net.*gitlab-assets.oss-cn-hongkong.aliyuncs.co go.dev  godoc.org golang.com golang.net -golang.org haskell.orghaskellstack.org stackage.org brew.sh +golang.org  consul.io hashicorp.comnomadproject.io  packer.io terraform.io vagrantup.comvaultproject.io haskell.orghaskellstack.org stackage.org brew.sh ius.iojava java.com java.net jenkins.io jetbrains.com jetbrains.net datalore.iokotlinlang.org jquery.comjquerymobile.com jqueryui.com -js.org kali.org +js.org jupyter.org kali.org kernel.orgkotlinlang.org kubernetes.io k8s.io  linux.orglinuxfromscratch.org linuxmint.com lua.org macports.org mariadb.org  mingw.org mongodb.com mongodb.org  mysql.com  nginx.com  nginx.org  nixos.org -nodejs.orgnodesource.comnotepad-plus-plus.org  npmjs.com npm.community openresty.org openssl.org opensuse.org openwrt.orglede-project.org packagist.org pcre.org perl.org cpan.org metacpan.org phantomjs.org php.netpostgresql.org -python.orgpythonhosted.org pypa.io pypi.org qt.ioqt-project.org r-project.orgraspberrypi.org raspbian.org redis.io remirepo.net rpmfusion.org ruby-lang.org rubygems.orgscala-lang.org scala-sbt.orgscientificlinux.org +nodejs.orgnodesource.comnotepad-plus-plus.org  npmjs.com npm.community openresty.org openssl.org opensuse.org openwrt.orglede-project.org packagist.org pcre.org perl.org cpan.org metacpan.org phantomjs.org php.netpolymer-project.orgpolymerproject.orgpostgresql.org +python.orgpythonhosted.org pypa.io pypi.org qt.ioqt-project.org r-project.orgraspberrypi.org raspbian.orgreadthedocs-hosted.comreadthedocs.comreadthedocs.ioreadthedocs.org redis.io remirepo.net rpmfusion.org ruby-lang.org rubygems.orgscala-lang.org scala-sbt.orgscientificlinux.org sqlite.org askubuntu.comblogoverflow.commathoverflow.netserverfault.com sstatic.net stackapps.com stackauth.comstackexchange.com stackmod.blogstackoverflow.blogstackoverflow.comstackoverflow.emailstackoverflowbusiness.comstacksnippets.net superuser.com tex-talk.netthesffblog.comsublimetext.com  swift.org ubuntu.com ubuntu.netubuntuforums.org  unity.com unity3d.com"unityads.unity3d.com @ads$unityads.unitychina.cn -@ads  unpkg.com vagrantup.com vim.org wireshark.org x.orgxda-developers.com xda-cdn.com xposed.info yarnpkg.com  adobe.com adobe.ioadobeaemcloud.comadobeaemcloud.netadobeccstatic.com adobedc.net adobedtm.comadobelogin.com adobeoobe.comassetsadobe.com behance.net edgefonts.net -omtrdc.net typekit.com typekit.net +@ads  unpkg.com +v8.dev v8project.org vim.org wireshark.org x.orgxda-developers.com xda-cdn.com xposed.info yarnpkg.com  adobe.com adobe.ioadobeaemcloud.comadobeaemcloud.netadobeccstatic.com adobedc.net adobedtm.comadobelogin.com adobeoobe.comassetsadobe.com behance.net edgefonts.net +omtrdc.net typekit.com typekit.netalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.com amazon.com amazon.com.au amazon.co.uk amazon.co.jp  amazon.de  amazon.jp amazon.jobsamazontrust.com amzn.commedia-amazon.comssl-images-amazon.com amazonaws.comamplifyapp.com awsstatic.com awstrust.comcloudfront.netelasticbeanstalk.comamazonvideo.comprimevideo.comaws!amazon-adsystem.com -@ads apple  apple.com  apple.net apple.ae apple.com.af apple.at apple.com.au apple.be apple.bg apple.com.bo apple.com.br apple.bs apple.ca apple.ch apple.cl apple.cm apple.cn apple.com.cn apple.com.co apple.co.cr apple.cz apple.de apple.dk apple.com.do apple.ee apple.es apple.fi apple.fr apple.hn apple.hr apple.hu apple.ie apple.is apple.it apple.com.jm apple.jo apple.co.jp apple.co.kr apple.lk apple.lt apple.lv apple.me apple.com.mx apple.com.my apple.co.mz apple.nl apple.no apple.co.nz apple.com.pa apple.com.pe apple.pl apple.com.pr apple.pt apple.com.py apple.ro apple.ru apple.se apple.com.sg apple.si apple.sk apple.so apple.com.sv apple.co.th apple.com.tr apple.tt apple.com.tw apple.co.uk apple.com.uy apple.rs applecom.com iphone4s.com -icloud.com icloud.com.cnicloud-content.comapple-cloudkit.com cdn-apple.com mzstatic.comapple.com.akadns.netitunes-apple.com.akadns.net%!courier-push-apple.com.akadns.netpush-apple.com.akadns.net apple-dns.net apple-dns.cn cups.org  swift.orgcdninstagram.com facebook.br facebook.comfacebook.design facebook.net facebook.hu facebook.in facebook.nl facebook.se +@ads apple  apple.com  apple.net1to1computing.com.au1to1conference.com.au apple-hk.com apple.ae apple.at apple.be apple.bg apple.bs apple.ca apple.ch apple.cl apple.cm apple.cn apple.co.cr apple.co.jp apple.co.kr apple.co.mz apple.co.nz apple.co.th apple.co.uk apple.com.af apple.com.au apple.com.bo apple.com.br apple.com.cn apple.com.co apple.com.do apple.com.jm apple.com.lk apple.com.mx apple.com.my apple.com.pa apple.com.pe apple.com.pr apple.com.py apple.com.sg apple.com.sv apple.com.tr apple.com.tw apple.com.uy apple.cz apple.de apple.dk apple.ee apple.es apple.fi apple.fr apple.hn apple.hr apple.hu apple.ie apple.in apple.is apple.it apple.jo apple.kr apple.lk apple.lt apple.lv apple.me apple.my apple.nl apple.no apple.pl apple.pt apple.ro apple.rs apple.ru apple.se apple.sg apple.si apple.sk apple.so apple.ttappleaustralia.comappleaustralia.com.auappleaustralia.net.auapplecentre.com.auappleclub.com.hkapplecomputer.cnapplecomputer.co.inapplecomputer.co.nzapplecomputer.com.cnapplecomputer.com.hkapplecomputer.com.twapplecomputer.krapplecomputers.co.nzapplehongkong.com.hkapplemalaysia.com.myapplemusic.com.auapplepremiumreseller.com.au applepremiumresellers.com.au applestore.cnapplestore.co.jpapplestore.com.auapplestore.com.cnapplestore.com.hkapplestore.com.myapplestore.com.phapplestore.com.tw applestore.hk applestore.kr applestore.ph applestore.sgappletaiwan.com  appsto.reappstore.co.id appstore.hk appstore.my appstore.ph emac.in +emac.co.in ibook.co.nz ichat.co.inilecture.co.nz +imac.co.nz indiaipad.com +ipad.co.kr +ipadair.hk +ipadair.jp +ipadair.twipadaustralia.comipadmini.com.lk ipadmini.lk iphone.com.au +ipod.co.nz ipod.com.au ipod.com.cn ipod.com.sg ipod.hk ipod.twipodrocks.com.auipodshop.com.au ipodtouch.co itun.es itunes.co.th +mac.com.au macappsto.re +macbook.hk +macbook.twmacbookair.co.krmacbookair.com.aumacbookair.com.cn macbookair.hk macbookair.kr macbookair.jp macbookpro.comacbookpro.com.au macos.com.auquicktime.com.au applecom.com iphone4s.comapple-cloudkit.com +icloud.com icloud.com.cnicloud-content.com cdn-apple.com mzstatic.comapple.com.akadns.netitunes-apple.com.akadns.net%!courier-push-apple.com.akadns.netpush-apple.com.akadns.net apple-dns.cn apple-dns.net cups.org  swift.org atlassian.com bitbucket.org statuspage.io +trello.com trellocdn.comcdninstagram.com facebook.br facebook.comfacebook.design facebook.net facebook.hu facebook.in facebook.nl facebook.se fb.com fb.me  fbcdn.net  fbsbx.com instagram.cominstagram-press.comm.me messenger.com -oculus.com oculuscdn.com rocksdb.orgthefacebook.com whatsapp.com whatsapp.netfbcdn-a.akamaihd.net godaddy.comx.co godaddy blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn go-lang.com go-lang.net go-lang.org +oculus.com oculuscdn.com rocksdb.orgthefacebook.com whatsapp.com whatsapp.netfbcdn-a.akamaihd.net godaddy.comx.co godaddy amp.devampproject.comampproject.netampproject.org android.comandroidify.com blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn dart.dev dartlang.org dartpad.dev fastlane.cifastlane.tools flutter.devflutterapp.com go-lang.com go-lang.net go-lang.org go.dev  godoc.org golang.com golang.net -golang.org ggpht.cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com youtube.comyoutubeeducation.comyoutubegaming.comyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.com  admob.com adsense.comadservice.google.comadvertisercommunity.comadvertiserscommunity.comadwords-community.com adwords.comadwordsexpress.comapp-measurement.comclickserver.googleads.comdoubleclick.comdoubleclick.netgoogle-analytics.comgoogleadapis.comgoogleadservices.comgoogleanalytics.comgoogleoptimize.comgooglesyndication.comgoogletagmanager.comgoogletagservices.comgoogletraveladservices.com -urchin.com +golang.org  admob.com adsense.comadservice.google.comadvertisercommunity.comadvertiserscommunity.comadwords-community.com adwords.comadwordsexpress.comapp-measurement.comclickserver.googleads.comdoubleclick.comdoubleclick.netgoogle-analytics.comgoogleadapis.comgoogleadservices.comgoogleanalytics.comgoogleoptimize.comgooglesyndication.comgoogletagmanager.comgoogletagservices.comgoogletraveladservices.com +urchin.compolymer-project.orgpolymerproject.org +v8.dev v8project.org ggpht.cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com youtube.comyoutubeeducation.comyoutubegaming.comyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.com googlegoog  google.ad  google.ae  google.al  google.am  google.as  google.at  google.az  google.ba  google.be  google.bf  google.bg  google.bi  google.bj  google.bs  google.bt  google.by  google.ca google.cat  google.cd  google.cf  google.cg  google.ch  google.ci  google.cl  google.cm  google.cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.id google.co.il google.co.in google.co.jp google.co.ke google.co.kr google.co.ls google.co.ma google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw google.com google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn  google.cv  google.cz  google.de  google.dj  google.dk  google.dm  google.dz  google.ee  google.es  google.fi  google.fm  google.fr  google.ga  google.ge  google.gg  google.gl  google.gm  google.gr  google.gy  google.hn  google.hr  google.ht  google.hu  google.ie  google.im  google.iq  google.is  google.it  google.je  google.jo  google.kg  google.ki  google.kz  google.la  google.li  google.lk  google.lt  google.lu  google.lv  google.md  google.me  google.mg  google.mk  google.ml  google.mn  google.ms  google.mu  google.mv  google.mw  google.ne  google.nl  google.no  google.nr  google.nu  google.pl  google.pn  google.ps  google.pt  google.ro  google.rs  google.ru  google.rw  google.sc  google.se  google.sh  google.si  google.sk  google.sm  google.sn  google.so  google.sr  google.st  google.td  google.tg  google.tl  google.tm  google.tn  google.to  google.tt  google.vg  google.vu  google.ws 0emm.com  1e100.net  1ucrs.com 466453.com abc.xyz adgoogle.net -admeld.com amp.devampproject.comampproject.netampproject.org android.comandroidify.comangulardart.org +admeld.comangulardart.org api.ai apigee.com appbridge.ca appbridge.io appbridge.it appspot.com apture.com area120.com -asp-cc.com autodraw.com bandpage.combaselinestudy.combaselinestudy.org bazel.buildbeatthatquote.com  blink.org blogblog.com blogger.combrocaproject.com +asp-cc.com autodraw.com bandpage.combaselinestudy.combaselinestudy.org bazel.build bdn.devbeatthatquote.com  blink.org blogblog.com blogger.combrocaproject.com brotli.org bumpshare.com bumptop.ca bumptop.com bumptop.net bumptop.org bumptunes.comcampuslondon.com certificate-transparency.org chat.gle -chrome.comchromebook.comchromecast.com chromium.orgcloudburstresearch.comcloudfunctions.netcloudrobotics.comcobrasearch.com codespot.com conscrypt.com conscrypt.orgcookiechoices.org  coova.com  coova.net  coova.orgcrossmediapanel.com crr.com  cs4hs.com dart.dev dartlang.orgdartsearch.netdataliberation.org  debug.comdebugproject.com deepmind.comdevsitetest.howdialogflow.comdigitalassetlinks.org episodic.com fastlane.cifastlane.toolsfeedburner.com -fflick.comfinanceleadsonline.comfirebaseapp.comflutterapp.com +chrome.comchromebook.comchromecast.com chromium.orgcloudburstresearch.comcloudfunctions.netcloudrobotics.comcobrasearch.com codespot.com conscrypt.com conscrypt.orgcookiechoices.org  coova.com  coova.net  coova.orgcrossmediapanel.com crr.com  cs4hs.comdartsearch.netdataliberation.org  debug.comdebugproject.com deepmind.comdevsitetest.howdialogflow.comdigitalassetlinks.org episodic.comfeedburner.com +fflick.comfinanceleadsonline.comfirebaseapp.com foofle.com froogle.com fuchsia.dev  g-tun.comg.co g.dev g.pagegerritcodereview.comgetbumptop.com ggoogle.com gipscorp.com gkecnapps.cn globaledu.org  gmail.com gmodules.com  gogle.com gogole.comgonglchuangl.net @@ -5012,16 +5324,14 @@ goolge.com gooogle.com gridaware.app gsrc.io gstatic.cn gstatic.comgstaticcnapps.cn gsuite.com gv.com gvt0.com gvt1.com gvt2.com gvt3.com gvt5.com gvt6.com gvt7.com gvt9.comhdrplusdata.org hey.gle hindiweb.comhowtogetmo.co.ukhtml5rocks.com hwgo.comiamremarkable.org igoogle.com impermium.com -j2objc.orgjibemobile.com keyhole.comkeytransparency.comkeytransparency.fookeytransparency.org lanternal.com like.commadewithcode.com material.io mdialog.commfg-inspector.commobileview.pagemoodstocks.com near.by nest.com nomulus.foo +j2objc.orgjibemobile.com keyhole.comkeytransparency.comkeytransparency.fookeytransparency.org lanternal.com like.commadewithcode.com material.io mdialog.com meet.newmfg-inspector.commobileview.pagemoodstocks.com near.by nest.com nomulus.foo oauthz.com ok.gle on.here on2.comonefifteen.netonefifteen.orgoneworldmanystories.com openthread.io openweave.io orbitera.com  page.linkpagespeedmobilizer.com pageview.mobi panoramio.compartylikeits1986.orgpaxlicense.org picasa.com picasaweb.com picasaweb.net picasaweb.org -picnik.com pittpatt.compolymer-project.orgpolymerproject.org postini.comprojectara.comprojectbaseline.compublishproxy.comquestvisual.comquickoffice.com quiksee.com recaptcha.net +picnik.com pittpatt.com postini.comprojectara.comprojectbaseline.compublishproxy.comquestvisual.comquickoffice.com quiksee.com recaptcha.net revolv.comridepenguin.com run.appsavethedate.foo saynow.com schemer.comscreenwisetrends.comscreenwisetrendspanel.com snapseed.com solveforx.com -stadia.devstcroixmosquito.comstcroixmosquitoproject.comstudywatchbyverily.comstudywatchbyverily.orgstxmosquito.comstxmosquitoproject.comstxmosquitoproject.netstxmosquitoproject.org synergyse.comtensorflow.org  tfhub.devthecleversense.comthegooglestore.comthinkquarterly.co.ukthinkquarterly.comthinkwithgoogle.com tiltbrush.com txcloud.net  txvia.comunfiltered.news -urchin.com useplannr.comusvimosquito.comusvimosquitoproject.com -v8.dev v8project.orgvelostrata.com +stadia.devstcroixmosquito.comstcroixmosquitoproject.comstudywatchbyverily.comstudywatchbyverily.orgstxmosquito.comstxmosquitoproject.comstxmosquitoproject.netstxmosquitoproject.org synergyse.comtensorflow.org  tfhub.devthecleversense.comthegooglestore.comthinkquarterly.co.ukthinkquarterly.comthinkwithgoogle.com tiltbrush.com txcloud.net  txvia.comunfiltered.news useplannr.comusvimosquito.comusvimosquitoproject.comvelostrata.com verily.comverilylifesciences.comverilystudyhub.comverilystudywatch.comverilystudywatch.org wallet.com  waymo.com waze.com web.appwebappfieldguide.comwebmproject.orgwebpkgcache.com webrtc.orgweltweitwachsen.dewhatbrowser.org widevine.comwithgoogle.com womenwill.comwomenwill.com.br womenwill.id womenwill.in womenwill.mx  x.company @@ -5046,11 +5356,21 @@ yammer.commozilla.community mozilla.net mozilla.org bugzill nvidia.com nvidia.co.jp geforce.co.kr nvidia.co.krgeforce.com.tw nvidia.com.tw oracle oracle.comoraclecloud.comoraclefoundation.org oracleimg.comateam-oracle.com -bronto.com sun.comjava java.com java.net appcloud.comappexchange.com attic.iobeyondcore.combuddymedia.com chatter.comcloudcraze.com cotweet.com data.comdemandware.com desk.comdocumentforce.comdreamforce.com einstein.comexacttarget.com  force.com govforce.comgravitytank.com heywire.com krux.commarketingcloud.com metamind.io +bronto.comcovid19-rx.org covid19rx.org sun.com addthis.comaddthiscdn.comaddthisedge.comjava java.com java.net appcloud.comappexchange.com attic.iobeyondcore.combuddymedia.com chatter.comcloudcraze.com cotweet.com data.comdemandware.com desk.comdocumentforce.comdreamforce.com einstein.comexacttarget.com  force.com govforce.comgravitytank.com heywire.com krux.commarketingcloud.com metamind.io pardot.com quotable.com radian6.com relateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.com sequence.comsfdcstatic.com sforce.com site.com social.comsteelbrick.com twinprime.comweinvoiceit.com samsung -xn--cg4bkigalaxyappstore.comgalaxymobile.jpgame-platform.net knoxemm.com samsung.comsamsungapps.comsamsungcloud.com samsungdm.comsamsunggalaxyfriends.comsamsungknox.comsamsungqbe.comads-twitter.com periscope.tv pscp.tvt.co tellapart.com tweetdeck.com  twimg.com twitpic.com twitter.comtwitteroauth.comtwitterstat.us +xn--cg4bkigalaxyappstore.comgalaxymobile.jpgame-platform.net knoxemm.com samsung.comsamsungapps.comsamsungcloud.com samsungdm.comsamsunggalaxyfriends.comsamsungknox.comsamsungqbe.complaystation.complaystation.net sonyentertainmentnetwork.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com +wwtbam.comyourfantasybeginsnow.comsonyginzasonypark.jpsony-africa.com sony-asia.comsony-europe.comsony-hes.co.jpsony-latin.com sony-mea.comsony-olympus-medical.comsony-promotion.eusony-semicon.co.jp sony.at sony.ba sony.be sony.bg sony.ca sony.ch sony.cl +sony.co.cr +sony.co.id +sony.co.in +sony.co.jp +sony.co.kr +sony.co.nz +sony.co.th +sony.co.uk sony.com sony.com.ar sony.com.au sony.com.bo sony.com.br sony.com.co sony.com.do sony.com.ec sony.com.gt sony.com.hk sony.com.hn sony.com.mk sony.com.mx sony.com.my sony.com.ni sony.com.pa sony.com.pe sony.com.ph sony.com.sg sony.com.sv sony.com.tr sony.com.tw sony.com.vn sony.cz sony.de sony.dk sony.ee sony.es sony.eu sony.fi sony.fr sony.gr sony.hr sony.hu sony.ie sony.it sony.kz sony.lt sony.lu sony.lv sony.net sony.nl sony.no sony.pl sony.pt sony.ro sony.rs sony.ru sony.se sony.si sony.sk sony.ua sonybo.co.jp sonybsc.comsonybuilding.jpsonydesign.com sonydna.comsonyglobalsolutions.jp sonykigyo.jpsonylatvija.com +sonypcl.jpsonyprotechnosupport.co.jpsonystoragemedia.co.jp sonytc.co.jp  sovec.netads-twitter.com periscope.tv pscp.tvt.co tellapart.com tweetdeck.com  twimg.com twitpic.com twitter.comtwitteroauth.comtwitterstat.us twitter.jp vine.co twtrdns.net uber.comuber-assets.com yahoo myguide.hkyahoo-news.com.hk yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cm yahoo.cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws yahooapis.com yahoodns.net yimg.com  ymail.com flickr @@ -5060,7 +5380,7 @@ flickr.netstaticflickr.com ads.yahoo.com @ads yandex.com yandex.net  yandex.ru  yandex.styandexcloud.net yastatic.net -yandexcloudflare.comcloudflare-dns.comcloudflare-ipfs.comcloudflareapps.comcloudflareinsights.comcloudflaressl.comcloudflarestatus.comcloudflarestream.comtrycloudflare.com workers.dev one.one.onevideodelivery.net +yandexcloudflare-dns.comcloudflare-ipfs.comcloudflare.comcloudflareapps.comcloudflareinsights.comcloudflareok.comcloudflaressl.comcloudflarestatus.comcloudflarestream.comcloudflaretest.com one.one.onetrycloudflare.comvideodelivery.net workers.dev fastly.com fastly.netfastlylabs.com fastlylb.netfastly-terrarium.com pagecdn.com pagecdn.io quantil.com stackpath.com stackpath.devbuypass-ssl.com buypass.com @@ -5069,45 +5389,62 @@ buypass.se minid.no comodo.com comodoca.com comodoca2.com comodoca3.com comodoca4.com digicert.com freessl.com geotrust.com rapidssl.com thawte.com  thawte.de  thawte.fr entrust.netentrustdatacard.comglobalsign-media.com globalsign.be globalsign.chglobalsign.co.ukglobalsign.comglobalsign.com.auglobalsign.com.hkglobalsign.com.sg globalsign.es globalsign.eu globalsign.frglobalsign.net globalsign.nl identrust.comidentrust.co.uk identrust.netletsencrypt.org secom.co.jpsecomtrust.net sectigo.comenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.com digital-id.ch digitalid.chmanaged-pki.chmanaged-pki.de pki-post.ch pki-posta.ch pki-poste.chroot-signing.chrootsigning.comssl-certificate.ch swissid.ch swissign.com swissign.liswisssign-group.chswisssign-group.comswisssign-group.li swisssign.ch swisssign.com swisssign.li swisssign.net swisssign.orgswisssigner.chswisssigner.comswisssigngroup.chswisssigngroup.comswissstick.com swisstsa.ch swisstsa.li trustdoc.ch trustsign.ch zert.ch telekom.com -telekom.de trustwave.com verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.com addthis.comaddthisedge.com addtoany.com apkpure.com cdnpure.com pureapk.com -winudf.com bitwarden.comdigitalocean.com -disqus.com disquscdn.comdisqusservice.com db.ttdropbox-dns.com dropbox.com dropbox.techdropboxapi.comdropboxbusiness.comdropboxcaptcha.comdropboxforum.comdropboxforums.comdropboxinsiders.comdropboxmail.comdropboxpartners.comdropboxstatic.comdropboxusercontent.comgetdropbox.com&"paper-attachments.s3.amazonaws.comduckduckgo.com duck.comentermediadb.netentermediadb.org faststone.org -feedly.com gofundme.com gravatar.com  heroku.co +telekom.de trustwave.com verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.com addthis.comaddthiscdn.comaddthisedge.com addtoany.com apkpure.com cdnpure.com pureapk.com +winudf.com +bit.ly  bitly.com bitly.is bitwarden.com cutt.lydigitalocean.comdigitaloceanspaces.com +disqus.com disquscdn.comdisqusservice.com db.ttdropbox-dns.com dropbox.com dropbox.techdropboxapi.comdropboxbusiness.comdropboxcaptcha.comdropboxforum.comdropboxforums.comdropboxinsiders.comdropboxmail.comdropboxpartners.comdropboxstatic.comdropboxusercontent.comgetdropbox.com&"paper-attachments.s3.amazonaws.comduckduckgo.com duck.comentermediadb.netentermediadb.org evernote.com faststone.org +feedly.com  figma.com gofundme.com gravatar.com  heroku.co heroku.com  heroku.me herokuapp.com herokucdn.comherokucharge.com herokussl.comheroku-app.comheroku-charge.com codei.sh codeish.co -codeish.io  imgur.com imgurinc.cominfrapedia.com +codeish.io  imgur.com imgurinc.cominfrapedia.com inoreader.com is.gdv.gd jwpcdn.comjwplatform.com jwplayer.com jwpltx.com -jwpsrv.comlongtailvideo.com linguee.com  deepl.com netlify.combitballoon.com  notion.sonotion-static.com osdn.net patreon.com +jwpsrv.comlongtailvideo.com linguee.com  deepl.com +mega.co.nz mega.nz netlify.combitballoon.com  notion.sonotion-static.com osdn.net patreon.com pics.ee  picsee.co +picsee.pro pise.pw pros.ee +pse.is pin.it -pinimg.com pinterest.at pinterest.be pinterest.ca pinterest.ch pinterest.cl pinterest.copinterest.co.atpinterest.co.inpinterest.co.krpinterest.co.nzpinterest.co.uk pinterest.compinterest.com.aupinterest.com.bopinterest.com.ecpinterest.com.mxpinterest.com.pepinterest.com.pypinterest.com.uypinterest.com.vn pinterest.de pinterest.dk pinterest.ecpinterest.engineering pinterest.es pinterest.fr pinterest.hu pinterest.id pinterest.ie pinterest.inpinterest.info pinterest.it pinterest.jp pinterest.kr pinterest.mx pinterest.nl pinterest.nz pinterest.pe pinterest.ph pinterest.pt pinterest.ru pinterest.se pinterest.th pinterest.tw pinterest.uk pinterest.vnpinterestmail.com protonmail.chprotonmail.comprotonstatus.com pm.me sharethis.com shopify.com shopify.devshopifysvc.comsourceforge.net fsdn.com startpage.com ixquick.com steemit.com -stripe.comstripe.network stripecdn.com +pinimg.com pinterest.at pinterest.be pinterest.ca pinterest.ch pinterest.cl pinterest.copinterest.co.atpinterest.co.inpinterest.co.krpinterest.co.nzpinterest.co.uk pinterest.compinterest.com.aupinterest.com.bopinterest.com.ecpinterest.com.mxpinterest.com.pepinterest.com.pypinterest.com.uypinterest.com.vn pinterest.de pinterest.dk pinterest.ecpinterest.engineering pinterest.es pinterest.fr pinterest.hu pinterest.id pinterest.ie pinterest.inpinterest.info pinterest.it pinterest.jp pinterest.kr pinterest.mx pinterest.nl pinterest.nz pinterest.pe pinterest.ph pinterest.pt pinterest.ru pinterest.se pinterest.th pinterest.tw pinterest.uk pinterest.vnpinterestmail.com protonmail.chprotonmail.comprotonstatus.com pm.me quip-cdn.com quip.comquipelements.com rb.gy rebrandly.com reurl.cc sharethis.com shopify.com shopify.devshopifysvc.com shorturl.atsourceforge.net fsdn.com startpage.com ixquick.com steemit.com +stripe.comstripe.network stripecdn.com tinyurl.com +trello.com trellocdn.com tumblr.com now.shvercel-dns.comvercel-status.com vercel.app vercel.comzeit-world.co.ukzeit-world.comzeit-world.netzeit-world.org zeit.co zeit.sh zeitworld.com webflow.com wix.com  wixmp.com wixsite.com wixstatic.comvideopress.com w.org wordpress.com wordpress.org wordpress.tv wp-themes.com -wp.comdiscordapp.com -discord.gg discord.mediadiscordapp.net +wp.com +zeplin.dev  zeplin.io zoho.com zoho.com.au zoho.eu zoho.in zohocdn.comzohomeetups.comzohomerchandise.comzohopublic.comzohoschools.comzohostatic.com zohostatic.inzohouniversity.comzohowebstatic.com mastercard.ae mastercard.at mastercard.az mastercard.ba mastercard.be mastercard.bg mastercard.by mastercard.ca mastercard.ch mastercard.clmastercard.co.idmastercard.co.ilmastercard.co.inmastercard.co.jpmastercard.co.kemastercard.co.krmastercard.co.nzmastercard.co.thmastercard.co.ukmastercard.co.vemastercard.co.zamastercard.commastercard.com.armastercard.com.aumastercard.com.bhmastercard.com.brmastercard.com.bzmastercard.com.cnmastercard.com.comastercard.com.cymastercard.com.egmastercard.com.gemastercard.com.gtmastercard.com.hkmastercard.com.kwmastercard.com.lbmastercard.com.mxmastercard.com.mymastercard.com.ngmastercard.com.pemastercard.com.phmastercard.com.samastercard.com.sgmastercard.com.trmastercard.com.twmastercard.com.vemastercard.com.vn mastercard.cz mastercard.de mastercard.dk mastercard.es mastercard.eu mastercard.fi mastercard.fr mastercard.gr mastercard.hr mastercard.hu mastercard.ie mastercard.it mastercard.jo mastercard.ke mastercard.kz mastercard.lu mastercard.md mastercard.my mastercard.nl mastercard.no mastercard.om mastercard.pl mastercard.pt mastercard.qa mastercard.ro mastercard.rs mastercard.ru mastercard.se mastercard.si mastercard.sk mastercard.ua mastercard.us discord.com +discord.gg discord.mediadiscordapp.comdiscordapp.net lin.ee line.me line.naver.jp line-apps.com line-cdn.net line-scdn.net nhncorp.jp -signal.orgt.me tdesktop.com +signal.orgslack-edge.comslack-imgs.com  slack.com +slackb.comslackcertified.com slackdemo.com slackhq.comt.me tdesktop.com telegra.ph telesco.pe telegram.me telegram.org telegram.dog  graph.org bestbuy.combestbuy.com.mx bestbuy.cabestbuy-jobs.com bbystatic.com dmm.com  dmm.co.jpdmm-extension.com ebay.at ebay.be ebay.ca ebay.ch ebay.cn -ebay.co.uk ebay.com ebay.com.au ebay.com.hk ebay.com.sg ebay.de ebay.es ebay.fr ebay.ie ebay.in ebay.it ebay.nl ebay.pl ebayimg.com ebayinc.comebaymainstreet.comebayprivacycenter.com ebayrtm.comebaystatic.com nike.com nike.com.br nike.com.hk nikecloud.comniketracking.com ao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net bandcamp.com -bcbits.comdeviantart.comdeviantart.net da-files.comadventuresbydisney.com +ebay.co.uk ebay.com ebay.com.au ebay.com.hk ebay.com.sg ebay.de ebay.es ebay.fr ebay.ie ebay.in ebay.it ebay.nl ebay.pl ebaycdn.net ebayimg.com ebayinc.comebaymainstreet.comebayprivacycenter.com ebayrtm.comebaystatic.com nike.com nike.com.br nike.com.hk nikecdn.com nikecloud.comniketracking.comstatic-nike.com shopee.co.id shopee.co.th +shopee.com shopee.com.br shopee.com.my  shopee.ph  shopee.sg  shopee.tw  shopee.vnshopeemobile.com +shp.ee ao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net +att.tv atttvnow.comattwatchtv.com directv.com  dtvce.comnettyinternet.com bandcamp.com +bcbits.com  castro.fmdeviantart.comdeviantart.net da-files.comadventuresbydisney.com babble.com dilcdn.comdisney-plus.net  disney.ca disney.com disney.com.br  disney.iodisneyaulani.comdisneybaby.comdisneyjunior.comdisneylatino.comdisneymovieinsiders.comdisneyplus.comdisneyredirects.comdisneystore.com dssott.com -go.commoviesanywhere.complaymation.comshopdisney.com starwars.comthestationbymaker.comthisispolaris.combattlebreakers.com epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealtournament.com*&^epicgames-download\d\.akamaized\.net$.*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$3/^epicgames-download\d-\d+\.file\.myqcloud\.com$ cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk +go.commoviesanywhere.complaymation.comshopdisney.com starwars.comthestationbymaker.comthisispolaris.combattlebreakers.com epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com*&^epicgames-download\d\.akamaized\.net$.*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$3/^epicgames-download\d-\d+\.file\.myqcloud\.com$ fireside.fm cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk hbomax.com hbonow.com  maxgo.com hulu.com huluim.comhulustream.com -huluad.comkingkong.com.twkingkongapp.com litv.tv moov.hk btstatic.com -netflix.ca netflix.com netflix.net nflxext.com nflximg.com nflximg.netnflxsearch.net -nflxso.net nflxvideo.netnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hk nintendo.de nintendo.es nintendo.eu nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.pt nintendo.ru  pixiv.net  pixiv.org pixiv.co.jp  pximg.netplaystation.complaystation.net sonyentertainmentnetwork.comsoundcloud.com -sndcdn.com pscdn.co scdn.co spotify.com spoti.fi fanatical.comhumblebundle.complayartifact.comsteam-chat.comsteamcommunity.comsteamgames.comsteampowered.comsteamstatic.comunderlords.comvalvesoftware.comsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamunlocked.net ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net ubi.com ubisoft.com  uplay.com  vimeo.com vimeocdn.comlivestream.com viu.com +huluad.com imdb.com imdb.tomedia-imdb.comkingkong.com.twkingkongapp.com litv.tv megaphone.fm moov.hk fast.com +netflix.ca netflix.com netflix.netnetflixinvestor.com nflxext.com nflximg.com nflximg.netnflxsearch.net +nflxso.net nflxvideo.netnico +nicodic.jp nicomanga.jp niconico.com nicoseiga.jp nicovideo.jp nimg.jp simg.jpnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hk nintendo.de nintendo.es nintendo.eu nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.pt nintendo.ru overcast.fm  pixiv.net  pixiv.org pixiv.co.jp  pximg.netplaystation.complaystation.net sonyentertainmentnetwork.com +pca.stpocketcasts.com  sling.com +movetv.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com +wwtbam.comyourfantasybeginsnow.comsoundcloud.com +sndcdn.com pscdn.co scdn.co spoti.fi spotify.comspotifycdn.com fanatical.comhumblebundle.complayartifact.comsteam-chat.comsteamcommunity.comsteamgames.comsteampowered.comsteamstatic.comunderlords.comvalvesoftware.comsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamunlocked.net +muscdn.com +musical.ly +tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net ubi.com ubisoft.com  uplay.com  vimeo.com vimeocdn.comlivestream.com viu.com viu.tv weverse.io yande.re got001.com @@ -5121,35 +5458,75 @@ reddit.comredditstatic.comredditmedia.com redd.it archive. change.org csis.orgcsis-prod.s3.amazonaws.comglobalsecurity.orgrolfoundation.orgrolsociety.org un.org who.int mediawiki.org wikibooks.org wikidata.orgwikimediafoundation.org wikimedia.org wikinews.org wikipedia.org wikiquote.orgwikisource.orgwikiversity.orgwikivoyage.orgwiktionary.orgwmfusercontent.org w.wiki wto.org pubmatic.compubmatic.co.jpads.pubmatic.com -@ads taboola.com  fonts.com  fonts.net hkedcity.nethkreadingcity.nethuanghuagang.org rarbg.me rarbg.to rarbg.israrbgaccess.org rarbggo.orgrarbgmirror.comrarbgmirror.orgrarbgproxy.org rarbgprx.orgrarbgunblock.com +@ads taboola.com  fonts.com  fonts.net hkedcity.nethkreadingcity.nethuanghuagang.org rarbg.me rarbg.to rarbg.israrbgaccess.org rarbggo.orgrarbgmirror.comrarbgmirror.orgrarbgproxy.org rarbgprx.orgrarbgunblock.com starbucks.castarbucks.co.uk starbucks.comstarbucks.com.cn starbucks.de starbucks.fr starbucks.ie tsquare.tv  windy.com xdty.org  xingrz.me -| -MEITUAN dianping.com -maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com +6 +ELSEVIERengineeringvillage.com +scopus.com +( +LTN +ltn.com.tw yes123.com.tw +< +DOCKERcompose-spec.io +docker.com  docker.io + +FEEDLY +feedly.com $ -AFP afp.com afpforum.com -& - VAGINACONTESTvaginacontest.com -y -YANDEX -yandex.com -yandex.net  yandex.ru  yandex.styandexcloud.net yastatic.net -yandex -c -YOUKU -kumiao.com  youku.com  ykimg.com -mmstat.com soku.com -cibntv.net + LOCALPRESSHKlocalpresshk.com + +MAYING  maying.co +) +NPMJS  npmjs.com npm.community +P +PUBMATIC pubmatic.compubmatic.co.jpads.pubmatic.com +@ads + +YANDE yande.re +ë +CTRIP c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn +skysea.com  suanya.cn +suanya.com +tieyou.com +toptown.cn toursbms.com trip.com tripcdn.com +vipdlt.com +, +JAVAjava java.com java.net +H + NEXITALLY nexitally.comnexitallysafe.com nexitcore.com +? +SHOPIFY shopify.com shopify.devshopifysvc.com + +SSRPASS +ssrpass.pw + +TUMBLR +tumblr.com  - CORDCLOUD cordcloud.org -1 -JINSHUJU jinshuju.netjinshujucdn.com - - STCSERVERstc-server.com -- -SURFLITE surflite.co surflite.net -Þ -VERCEL -now.shvercel-dns.comvercel-status.com -vercel.app -vercel.comzeit-world.co.ukzeit-world.comzeit-world.netzeit-world.org zeit.co zeit.sh zeitworld.com \ No newline at end of file + FFPROFILE ffprofile.com + +GOFUNDME gofundme.com +& +HUYA huya.com msstatic.com +w +JWPLAYER +jwpcdn.comjwplatform.com jwplayer.com +jwpltx.com +jwpsrv.comlongtailvideo.com + +XINGRZ  xingrz.me +F + +DEVIANTARTdeviantart.comdeviantart.net da-files.com + +JENKINS +jenkins.io +$ +NOTEPADnotepad-plus-plus.org +0 + +SOUNDCLOUDsoundcloud.com +sndcdn.com + +DIGICERT digicert.com freessl.com geotrust.com rapidssl.com +thawte.com  thawte.de  thawte.fr \ No newline at end of file From 9928eca26f9d1990c6a31bf36af4a749e8ca67e4 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Fri, 3 Jul 2020 14:55:31 +0800 Subject: [PATCH 25/34] Fix bug with tag name extract --- release/tagrelease.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/tagrelease.sh b/release/tagrelease.sh index b1c11e77..e2ca802b 100755 --- a/release/tagrelease.sh +++ b/release/tagrelease.sh @@ -21,7 +21,7 @@ then fi -GITHUB_RELEASE_TAG=${TRIGGER_REASON:${#CONST_refsB}:10} +GITHUB_RELEASE_TAG=${TRIGGER_REASON:${#CONST_refsB}:25} echo ${GITHUB_RELEASE_TAG} From ad1927e6f9c7d3ce67314dc8415e86dc88bdad5e Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Fri, 3 Jul 2020 16:07:15 +0800 Subject: [PATCH 26/34] Actually Request the SIGN --- release/requestsign_github.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/release/requestsign_github.sh b/release/requestsign_github.sh index 931dce37..3a3dd6b4 100755 --- a/release/requestsign_github.sh +++ b/release/requestsign_github.sh @@ -2,4 +2,6 @@ export SIGN_VERSION=$(cat $GITHUB_EVENT_PATH| jq -r ".release.tag_name") -echo $SIGN_VERSION \ No newline at end of file +echo $SIGN_VERSION + +$GITHUB_WORKSPACE/release/requestsign.sh \ No newline at end of file From e0a528565870c0718dd19f6adfdf4c26351e3e41 Mon Sep 17 00:00:00 2001 From: rprx <63339210+rprx@users.noreply.github.com> Date: Fri, 3 Jul 2020 12:29:10 +0000 Subject: [PATCH 27/34] Update bleedingrelease.sh --- release/bleedingrelease.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/release/bleedingrelease.sh b/release/bleedingrelease.sh index 6176c7b9..a2293992 100755 --- a/release/bleedingrelease.sh +++ b/release/bleedingrelease.sh @@ -38,6 +38,9 @@ pushd ${ART_ROOT} go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-64.zip go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-32.zip go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-arm.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-64.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-32.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-arm.zip go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-arm64.zip go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mips64.zip go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mips64le.zip From 11efebfd31f4946213589e52d105de1dd7ab419e Mon Sep 17 00:00:00 2001 From: rprx <63339210+rprx@users.noreply.github.com> Date: Fri, 3 Jul 2020 12:31:17 +0000 Subject: [PATCH 28/34] Update tagrelease.sh --- release/tagrelease.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/release/tagrelease.sh b/release/tagrelease.sh index e2ca802b..b43df5c6 100755 --- a/release/tagrelease.sh +++ b/release/tagrelease.sh @@ -63,6 +63,9 @@ pushd ${ART_ROOT} go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-64.zip go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-32.zip go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-arm.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-64.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-32.zip + go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-arm.zip go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-arm64.zip go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mips64.zip go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mips64le.zip From 437a66b7de7bc53ed765e2144cbf451102f29d54 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sat, 4 Jul 2020 13:48:47 +0800 Subject: [PATCH 29/34] Added Unit Test for VMessAEAD --- go.mod | 1 + go.sum | 13 +++- proxy/vmess/aead/authid_test.go | 129 +++++++++++++++++++++++++++++++ proxy/vmess/aead/encrypt_test.go | 105 +++++++++++++++++++++++++ 4 files changed, 246 insertions(+), 2 deletions(-) create mode 100644 proxy/vmess/aead/authid_test.go create mode 100644 proxy/vmess/aead/encrypt_test.go diff --git a/go.mod b/go.mod index f36de503..71d974a1 100644 --- a/go.mod +++ b/go.mod @@ -9,6 +9,7 @@ require ( github.com/miekg/dns v1.1.29 github.com/refraction-networking/utls v0.0.0-20190909200633-43c36d3c1f57 github.com/seiflotfy/cuckoofilter v0.0.0-20200511222245-56093a4d3841 + github.com/stretchr/testify v1.6.1 go.starlark.net v0.0.0-20190919145610-979af19b165c golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9 golang.org/x/net v0.0.0-20200602114024-627f9648deb9 diff --git a/go.sum b/go.sum index 54f7e0b3..0db98844 100644 --- a/go.sum +++ b/go.sum @@ -3,6 +3,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc h1:8WFBn63wegobsYAX0YjD+8suexZDga5CctH4CCTx2+8= github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -42,11 +44,16 @@ github.com/miekg/dns v1.1.29 h1:xHBEhR+t5RzcFJjBLJlax2daXOrTYtr9z4WdKEfWFzg= github.com/miekg/dns v1.1.29/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/refraction-networking/utls v0.0.0-20190909200633-43c36d3c1f57 h1:SL1K0QAuC1b54KoY1pjPWe6kSlsFHwK9/oC960fKrTY= github.com/refraction-networking/utls v0.0.0-20190909200633-43c36d3c1f57/go.mod h1:tz9gX959MEFfFN5whTIocCLUG57WiILqtdVxI8c6Wj0= github.com/seiflotfy/cuckoofilter v0.0.0-20200511222245-56093a4d3841 h1:pnfutQFsV7ySmHUeX6ANGfPsBo29RctUvDn8G3rmJVw= github.com/seiflotfy/cuckoofilter v0.0.0-20200511222245-56093a4d3841/go.mod h1:ET5mVvNjwaGXRgZxO9UZr7X+8eAf87AfIYNwRSp9s4Y= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= go.starlark.net v0.0.0-20190919145610-979af19b165c h1:WR7X1xgXJlXhQBdorVc9Db3RhwG+J/kp6bLuMyJjfVw= go.starlark.net v0.0.0-20190919145610-979af19b165c/go.mod h1:c1/X6cHgvdXj6pUlmWKMkuqRnW4K8x2vwt6JAaaircg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= @@ -120,10 +127,12 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= h12.io/socks v1.0.1 h1:bXESSI/+hbdrp+22vcc7/JiXjmLH4UWktKdYgGr3ShA= h12.io/socks v1.0.1/go.mod h1:AIhxy1jOId/XCz9BO+EIgNL2rQiPTBNnOfnVnQ+3Eck= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/proxy/vmess/aead/authid_test.go b/proxy/vmess/aead/authid_test.go new file mode 100644 index 00000000..c1f923c5 --- /dev/null +++ b/proxy/vmess/aead/authid_test.go @@ -0,0 +1,129 @@ +package aead + +import ( + "fmt" + "github.com/stretchr/testify/assert" + "strconv" + "testing" + "time" +) + +func TestCreateAuthID(t *testing.T) { + key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test") + authid := CreateAuthID(key, time.Now().Unix()) + + fmt.Println(key) + fmt.Println(authid) +} + +func TestCreateAuthIDAndDecode(t *testing.T) { + key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test") + authid := CreateAuthID(key, time.Now().Unix()) + + fmt.Println(key) + fmt.Println(authid) + + AuthDecoder := NewAuthIDDecoderHolder() + var keyw [16]byte + copy(keyw[:], key) + AuthDecoder.AddUser(keyw, "Demo User") + res, err := AuthDecoder.Match(authid) + fmt.Println(res) + fmt.Println(err) + assert.Equal(t, "Demo User", res) + assert.Nil(t, err) +} + +func TestCreateAuthIDAndDecode2(t *testing.T) { + key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test") + authid := CreateAuthID(key, time.Now().Unix()) + + fmt.Println(key) + fmt.Println(authid) + + AuthDecoder := NewAuthIDDecoderHolder() + var keyw [16]byte + copy(keyw[:], key) + AuthDecoder.AddUser(keyw, "Demo User") + res, err := AuthDecoder.Match(authid) + fmt.Println(res) + fmt.Println(err) + assert.Equal(t, "Demo User", res) + assert.Nil(t, err) + + key2 := KDF16([]byte("Demo Key for Auth ID Test2"), "Demo Path for Auth ID Test") + authid2 := CreateAuthID(key2, time.Now().Unix()) + + res2, err2 := AuthDecoder.Match(authid2) + assert.EqualError(t, err2, "user do not exist") + assert.Nil(t, res2) + +} + +func TestCreateAuthIDAndDecodeMassive(t *testing.T) { + key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test") + authid := CreateAuthID(key, time.Now().Unix()) + + fmt.Println(key) + fmt.Println(authid) + + AuthDecoder := NewAuthIDDecoderHolder() + var keyw [16]byte + copy(keyw[:], key) + AuthDecoder.AddUser(keyw, "Demo User") + res, err := AuthDecoder.Match(authid) + fmt.Println(res) + fmt.Println(err) + assert.Equal(t, "Demo User", res) + assert.Nil(t, err) + + for i := 0; i <= 10000; i++ { + key2 := KDF16([]byte("Demo Key for Auth ID Test2"), "Demo Path for Auth ID Test", strconv.Itoa(i)) + var keyw2 [16]byte + copy(keyw2[:], key2) + AuthDecoder.AddUser(keyw2, "Demo User"+strconv.Itoa(i)) + } + + authid3 := CreateAuthID(key, time.Now().Unix()) + + res2, err2 := AuthDecoder.Match(authid3) + assert.Equal(t, "Demo User", res2) + assert.Nil(t, err2) + +} + +func TestCreateAuthIDAndDecodeSuperMassive(t *testing.T) { + key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test") + authid := CreateAuthID(key, time.Now().Unix()) + + fmt.Println(key) + fmt.Println(authid) + + AuthDecoder := NewAuthIDDecoderHolder() + var keyw [16]byte + copy(keyw[:], key) + AuthDecoder.AddUser(keyw, "Demo User") + res, err := AuthDecoder.Match(authid) + fmt.Println(res) + fmt.Println(err) + assert.Equal(t, "Demo User", res) + assert.Nil(t, err) + + for i := 0; i <= 1000000; i++ { + key2 := KDF16([]byte("Demo Key for Auth ID Test2"), "Demo Path for Auth ID Test", strconv.Itoa(i)) + var keyw2 [16]byte + copy(keyw2[:], key2) + AuthDecoder.AddUser(keyw2, "Demo User"+strconv.Itoa(i)) + } + + authid3 := CreateAuthID(key, time.Now().Unix()) + + before := time.Now() + res2, err2 := AuthDecoder.Match(authid3) + after := time.Now() + assert.Equal(t, "Demo User", res2) + assert.Nil(t, err2) + + fmt.Println(after.Sub(before).Seconds()) + +} diff --git a/proxy/vmess/aead/encrypt_test.go b/proxy/vmess/aead/encrypt_test.go new file mode 100644 index 00000000..70e9a540 --- /dev/null +++ b/proxy/vmess/aead/encrypt_test.go @@ -0,0 +1,105 @@ +package aead + +import ( + "bytes" + "fmt" + "github.com/stretchr/testify/assert" + "io" + "testing" +) + +func TestOpenVMessAEADHeader(t *testing.T) { + TestHeader := []byte("Test Header") + key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test") + var keyw [16]byte + copy(keyw[:], key) + sealed := SealVMessAEADHeader(keyw, TestHeader) + + var AEADR = bytes.NewReader(sealed) + + var authid [16]byte + + io.ReadFull(AEADR, authid[:]) + + out, _, err, _ := OpenVMessAEADHeader(keyw, authid, AEADR) + + fmt.Println(string(out)) + fmt.Println(err) +} + +func TestOpenVMessAEADHeader2(t *testing.T) { + TestHeader := []byte("Test Header") + key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test") + var keyw [16]byte + copy(keyw[:], key) + sealed := SealVMessAEADHeader(keyw, TestHeader) + + var AEADR = bytes.NewReader(sealed) + + var authid [16]byte + + io.ReadFull(AEADR, authid[:]) + + out, _, err, readen := OpenVMessAEADHeader(keyw, authid, AEADR) + assert.Equal(t, len(sealed)-16-AEADR.Len(), readen) + assert.Equal(t, string(TestHeader), string(out)) + assert.Nil(t, err) +} + +func TestOpenVMessAEADHeader4(t *testing.T) { + for i := 0; i <= 60; i++ { + TestHeader := []byte("Test Header") + key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test") + var keyw [16]byte + copy(keyw[:], key) + sealed := SealVMessAEADHeader(keyw, TestHeader) + var sealedm [16]byte + copy(sealedm[:], sealed) + sealed[i] ^= 0xff + var AEADR = bytes.NewReader(sealed) + + var authid [16]byte + + io.ReadFull(AEADR, authid[:]) + + out, drain, err, readen := OpenVMessAEADHeader(keyw, authid, AEADR) + assert.Equal(t, len(sealed)-16-AEADR.Len(), readen) + assert.Equal(t, true, drain) + assert.NotNil(t, err) + if err == nil { + fmt.Println(">") + } + assert.Nil(t, out) + } + +} + +func TestOpenVMessAEADHeader4Massive(t *testing.T) { + for j := 0; j < 1000; j++ { + + for i := 0; i <= 60; i++ { + TestHeader := []byte("Test Header") + key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test") + var keyw [16]byte + copy(keyw[:], key) + sealed := SealVMessAEADHeader(keyw, TestHeader) + var sealedm [16]byte + copy(sealedm[:], sealed) + sealed[i] ^= 0xff + var AEADR = bytes.NewReader(sealed) + + var authid [16]byte + + io.ReadFull(AEADR, authid[:]) + + out, drain, err, readen := OpenVMessAEADHeader(keyw, authid, AEADR) + assert.Equal(t, len(sealed)-16-AEADR.Len(), readen) + assert.Equal(t, true, drain) + assert.NotNil(t, err) + if err == nil { + fmt.Println(">") + } + assert.Nil(t, out) + } + } +} From 432bc627bbcfc66207a9521abb897811cc42d0b7 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sat, 4 Jul 2020 20:28:15 +0800 Subject: [PATCH 30/34] Adopt to new signature key and format --- go.mod | 3 +- go.sum | 6 ++ infra/control/verify.go | 122 +++------------------------------------- 3 files changed, 15 insertions(+), 116 deletions(-) diff --git a/go.mod b/go.mod index 71d974a1..32d14066 100644 --- a/go.mod +++ b/go.mod @@ -10,8 +10,9 @@ require ( github.com/refraction-networking/utls v0.0.0-20190909200633-43c36d3c1f57 github.com/seiflotfy/cuckoofilter v0.0.0-20200511222245-56093a4d3841 github.com/stretchr/testify v1.6.1 + github.com/xiaokangwang/VSign v0.0.0-20200704121915-cb2e1f64f24c // indirect go.starlark.net v0.0.0-20190919145610-979af19b165c - golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9 + golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 golang.org/x/net v0.0.0-20200602114024-627f9648deb9 golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd diff --git a/go.sum b/go.sum index 0db98844..8b77d112 100644 --- a/go.sum +++ b/go.sum @@ -7,6 +7,8 @@ github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc h1:8WFBn63wegobsYAX0YjD+8suexZDga5CctH4CCTx2+8= github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= +github.com/ebfe/bcrypt_pbkdf v0.0.0-20140212075826-3c8d2dcb253a h1:YtdtTUN1iH97s+6PUjLnaiKSQj4oG1/EZ3N9bx6g4kU= +github.com/ebfe/bcrypt_pbkdf v0.0.0-20140212075826-3c8d2dcb253a/go.mod h1:/CZpbhAusDOobpcb9yubw46kdYjq0zRC0Wpg9a9zFQM= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -54,6 +56,8 @@ github.com/seiflotfy/cuckoofilter v0.0.0-20200511222245-56093a4d3841/go.mod h1:E github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/xiaokangwang/VSign v0.0.0-20200704121915-cb2e1f64f24c h1:ZhNj6V5QpDFbJZQR1FYywUTwRgr1HmlsvuExY/U0vJI= +github.com/xiaokangwang/VSign v0.0.0-20200704121915-cb2e1f64f24c/go.mod h1:jTwBnzBuqZP3VX/Z65ErYb9zd4anQprSC7N38TmAp1E= go.starlark.net v0.0.0-20190919145610-979af19b165c h1:WR7X1xgXJlXhQBdorVc9Db3RhwG+J/kp6bLuMyJjfVw= go.starlark.net v0.0.0-20190919145610-979af19b165c/go.mod h1:c1/X6cHgvdXj6pUlmWKMkuqRnW4K8x2vwt6JAaaircg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= @@ -61,6 +65,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9 h1:vEg9joUBmeBcK9iSJftGNf3coIG4HqZElCPehJsfAYM= golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= diff --git a/infra/control/verify.go b/infra/control/verify.go index 3aeab578..1a4ee281 100644 --- a/infra/control/verify.go +++ b/infra/control/verify.go @@ -2,106 +2,11 @@ package control import ( "flag" - "fmt" + "github.com/xiaokangwang/VSign/signerVerify" "os" - "strings" - - "golang.org/x/crypto/openpgp" - "v2ray.com/core/common" ) -var pubkey = []string{`-----BEGIN PGP PUBLIC KEY BLOCK----- - -mQENBFx4NlQBCADJyVwRUO/LzcnoHLWKppFQY4aTS+fH8k4Pf5nB3VR41v/3QZm1 -jBkuO1522KmBkPPuuYDAdOrE8Y8UVLfir5RxnZXF9Ke8SPq0zB+ruOHfv0xJUz8q -bcArsdXpDRxtrEbi7J81YOB/yITuY5kSYUA9v1TZWf7eSS6GIw/YF0Eo/gsbbpwQ -yon/Ue3xxxbZnWvfsluhPADomNwbJ5iTFeRClJqdACb/YqIEo2M2ttLE3QF2qrrL -SbzdTUtr3qjADIEWHoABcQ+Amx0sGnyiTJUGiL+4QwdIOLsh4RLq1MWgN+niw9Cl -cUQBPojZmHPPqIjNXr823TpZvkZOxuE9RSDjABEBAAG0I1YyUmF5IE9mZmljaWFs -IDxvZmZpY2lhbEB2MnJheS5jb20+iQFUBBMBCAA+FiEErWNIgUDlPuCCHb89lRmC -s2m2F+UFAlx4NlQCGwMFCQPCZwAFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQ -lRmCs2m2F+Xvlgf8CenlUIj+abvtISSkHLi1qKPTIt8tzPxcYX1yUC3nkqaXW7eh -+VTjZXU7y5rfelUBQchnEqqIfH4liH5t+yFoMeTntyo3bTgcj7BhjBwwB4lQspnb -AjiuLV95L6QbJoPVyJ1KlAC3X88QRlUDYy5ft0wTro1A4oLdgtbzWhiXKIAcedBt -zMjvX/qETtQvs15sF+HgF3/MHPjGH0I3gumIRMiIEE7vtaQvOZHknXlg552W+gmN -BVFr9uuLMPCD/+LB2uhGhjuEA8Jj3mqKtkyWSEkOd9losBbBrEo0wupEz1/Ahxga -h2X1Zd1etdDRsjl7JRt4Hf+vXV+kg/GfM6Gw5LkBDQRceDZUAQgArB8vjN/lwKte -vLjWEw7DaVbMC9R7RMYLSrdPTaQpBnFuQON3GOiIikRuwowl+K0HiZzojJwVq4yF -cGB8cBx9fT+zmAhPxLIDvY/mRb2BzsnpGgMlwydJZYLTTrPzbCXep9uzNXtBbcwd -aXLXWfTEoWmEVO1ZGuqI7X96cJvdhjzQAvkCpk+lgdJ9vo67aTBRu2d1YL6nd9lK -Oh4x43Cd2GNNpPOSdLxhISozImIGMFlrXn6riHXRVVcj+yVR/b9afsAm1MicDPtL -dWxCF7kZ/4u3rcLHAjCz5T/zoBn2S4MtISWzkPXkswz6fa9fHWCgblbl4uzUq7fl -3I8JvdGRfwARAQABiQE8BBgBCAAmFiEErWNIgUDlPuCCHb89lRmCs2m2F+UFAlx4 -NlQCGwwFCQPCZwAACgkQlRmCs2m2F+Vh1wf/TMCke/T18e//8KFmgKAeiLECpMxE -h6jZvfIMh5lN0YxmgKkw7T2UgYyqYJ4Wxm24iiNw2KUV/saltzsc5PoWMlcdpI8c -t7VNWbzHTgr2+UvigLgFpGG6G5GSlKVinXSZcgADN4F+7VMD+urycFPEmLYSTmlE -DKz+NrHmeKh08palwJEZnuK4vBg6WREHLcrborGgyZUxLu/ehbGc3QqMBbvupr3m -QiRC90xqxDa1u+q6cbFdiOdaKMzvibT9OnC7RanZ3uk+D0Jgs7yKuwHSNwNX6C3C -NTaV4BNont/v+X9ycP3NhqlMN8yONnSl66O19RBbdbP6M+UCr96mRiu0YA== -=T8XU ------END PGP PUBLIC KEY BLOCK----- -`, `-----BEGIN PGP PUBLIC KEY BLOCK----- -Comment: GPGTools - https://gpgtools.org - -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 -=xv/V ------END PGP PUBLIC KEY BLOCK----- -`} - -func firstIdentity(m map[string]*openpgp.Identity) string { - for k := range m { - return k - } - return "" -} - type VerifyCommand struct{} func (c *VerifyCommand) Name() string { @@ -112,7 +17,7 @@ func (c *VerifyCommand) Description() Description { return Description{ Short: "Verify if a binary is officially signed.", Usage: []string{ - "v2ctl verify [--sig=] file", + "v2ctl verify --sig= file...", "Verify the file officially signed by V2Ray.", }, } @@ -133,12 +38,7 @@ func (c *VerifyCommand) Execute(args []string) error { } if *sigFile == "" { - *sigFile = target + ".sig" - } - - targetReader, err := os.Open(os.ExpandEnv(target)) - if err != nil { - return newError("failed to open file: ", target).Base(err) + return newError("empty signature path.") } sigReader, err := os.Open(os.ExpandEnv(*sigFile)) @@ -146,23 +46,15 @@ func (c *VerifyCommand) Execute(args []string) error { return newError("failed to open file ", *sigFile).Base(err) } - for _, key := range pubkey { - keyring, err := openpgp.ReadArmoredKeyRing(strings.NewReader(key)) - if err != nil { - return newError("failed to create keyring").Base(err) - } + files := fs.Args() - entity, err := openpgp.CheckDetachedSignature(keyring, targetReader, sigReader) - if err != nil { - fmt.Println("failed to verify, try another key: ", err) - continue - } + err = signerVerify.OutputAndJudge(signerVerify.CheckSignaturesV2Fly(sigReader, files)) - fmt.Println("Signed by:", firstIdentity(entity.Identities)) + if err == nil { return nil } - return newError("file is not officially signed by V2Ray") + return newError("file is not officially signed by V2Ray").Base(err) } func init() { From b23c4fce05268592890990162f4069a4a0ccad1c Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sat, 4 Jul 2020 21:04:38 +0800 Subject: [PATCH 31/34] Adopt to new signature key and format (Fix) --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 32d14066..5ce4ac05 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/refraction-networking/utls v0.0.0-20190909200633-43c36d3c1f57 github.com/seiflotfy/cuckoofilter v0.0.0-20200511222245-56093a4d3841 github.com/stretchr/testify v1.6.1 - github.com/xiaokangwang/VSign v0.0.0-20200704121915-cb2e1f64f24c // indirect + github.com/xiaokangwang/VSign v0.0.0-20200704130305-63f4b4d7a751 go.starlark.net v0.0.0-20190919145610-979af19b165c golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 golang.org/x/net v0.0.0-20200602114024-627f9648deb9 diff --git a/go.sum b/go.sum index 8b77d112..f34cc196 100644 --- a/go.sum +++ b/go.sum @@ -58,6 +58,8 @@ github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/xiaokangwang/VSign v0.0.0-20200704121915-cb2e1f64f24c h1:ZhNj6V5QpDFbJZQR1FYywUTwRgr1HmlsvuExY/U0vJI= github.com/xiaokangwang/VSign v0.0.0-20200704121915-cb2e1f64f24c/go.mod h1:jTwBnzBuqZP3VX/Z65ErYb9zd4anQprSC7N38TmAp1E= +github.com/xiaokangwang/VSign v0.0.0-20200704130305-63f4b4d7a751 h1:vpFL+XrF7TFUuoV3PX/CJebjK77XA0yc9NnCs5AaxUY= +github.com/xiaokangwang/VSign v0.0.0-20200704130305-63f4b4d7a751/go.mod h1:jTwBnzBuqZP3VX/Z65ErYb9zd4anQprSC7N38TmAp1E= go.starlark.net v0.0.0-20190919145610-979af19b165c h1:WR7X1xgXJlXhQBdorVc9Db3RhwG+J/kp6bLuMyJjfVw= go.starlark.net v0.0.0-20190919145610-979af19b165c/go.mod h1:c1/X6cHgvdXj6pUlmWKMkuqRnW4K8x2vwt6JAaaircg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= From 3952f81b49576e299a6543f791b08ed5d7c40ee2 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sun, 5 Jul 2020 08:52:29 +0800 Subject: [PATCH 32/34] Update Signing key --- release/verify/official_release.asc | 30 ----------------------------- release/verify/official_release.pub | 2 ++ 2 files changed, 2 insertions(+), 30 deletions(-) delete mode 100644 release/verify/official_release.asc create mode 100644 release/verify/official_release.pub diff --git a/release/verify/official_release.asc b/release/verify/official_release.asc deleted file mode 100644 index fe5600d8..00000000 --- a/release/verify/official_release.asc +++ /dev/null @@ -1,30 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mQENBFx4NlQBCADJyVwRUO/LzcnoHLWKppFQY4aTS+fH8k4Pf5nB3VR41v/3QZm1 -jBkuO1522KmBkPPuuYDAdOrE8Y8UVLfir5RxnZXF9Ke8SPq0zB+ruOHfv0xJUz8q -bcArsdXpDRxtrEbi7J81YOB/yITuY5kSYUA9v1TZWf7eSS6GIw/YF0Eo/gsbbpwQ -yon/Ue3xxxbZnWvfsluhPADomNwbJ5iTFeRClJqdACb/YqIEo2M2ttLE3QF2qrrL -SbzdTUtr3qjADIEWHoABcQ+Amx0sGnyiTJUGiL+4QwdIOLsh4RLq1MWgN+niw9Cl -cUQBPojZmHPPqIjNXr823TpZvkZOxuE9RSDjABEBAAG0I1YyUmF5IE9mZmljaWFs -IDxvZmZpY2lhbEB2MnJheS5jb20+iQFUBBMBCAA+FiEErWNIgUDlPuCCHb89lRmC -s2m2F+UFAlx4NlQCGwMFCQPCZwAFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQ -lRmCs2m2F+Xvlgf8CenlUIj+abvtISSkHLi1qKPTIt8tzPxcYX1yUC3nkqaXW7eh -+VTjZXU7y5rfelUBQchnEqqIfH4liH5t+yFoMeTntyo3bTgcj7BhjBwwB4lQspnb -AjiuLV95L6QbJoPVyJ1KlAC3X88QRlUDYy5ft0wTro1A4oLdgtbzWhiXKIAcedBt -zMjvX/qETtQvs15sF+HgF3/MHPjGH0I3gumIRMiIEE7vtaQvOZHknXlg552W+gmN -BVFr9uuLMPCD/+LB2uhGhjuEA8Jj3mqKtkyWSEkOd9losBbBrEo0wupEz1/Ahxga -h2X1Zd1etdDRsjl7JRt4Hf+vXV+kg/GfM6Gw5LkBDQRceDZUAQgArB8vjN/lwKte -vLjWEw7DaVbMC9R7RMYLSrdPTaQpBnFuQON3GOiIikRuwowl+K0HiZzojJwVq4yF -cGB8cBx9fT+zmAhPxLIDvY/mRb2BzsnpGgMlwydJZYLTTrPzbCXep9uzNXtBbcwd -aXLXWfTEoWmEVO1ZGuqI7X96cJvdhjzQAvkCpk+lgdJ9vo67aTBRu2d1YL6nd9lK -Oh4x43Cd2GNNpPOSdLxhISozImIGMFlrXn6riHXRVVcj+yVR/b9afsAm1MicDPtL -dWxCF7kZ/4u3rcLHAjCz5T/zoBn2S4MtISWzkPXkswz6fa9fHWCgblbl4uzUq7fl -3I8JvdGRfwARAQABiQE8BBgBCAAmFiEErWNIgUDlPuCCHb89lRmCs2m2F+UFAlx4 -NlQCGwwFCQPCZwAACgkQlRmCs2m2F+Vh1wf/TMCke/T18e//8KFmgKAeiLECpMxE -h6jZvfIMh5lN0YxmgKkw7T2UgYyqYJ4Wxm24iiNw2KUV/saltzsc5PoWMlcdpI8c -t7VNWbzHTgr2+UvigLgFpGG6G5GSlKVinXSZcgADN4F+7VMD+urycFPEmLYSTmlE -DKz+NrHmeKh08palwJEZnuK4vBg6WREHLcrborGgyZUxLu/ehbGc3QqMBbvupr3m -QiRC90xqxDa1u+q6cbFdiOdaKMzvibT9OnC7RanZ3uk+D0Jgs7yKuwHSNwNX6C3C -NTaV4BNont/v+X9ycP3NhqlMN8yONnSl66O19RBbdbP6M+UCr96mRiu0YA== -=T8XU ------END PGP PUBLIC KEY BLOCK----- diff --git a/release/verify/official_release.pub b/release/verify/official_release.pub new file mode 100644 index 00000000..f2df7219 --- /dev/null +++ b/release/verify/official_release.pub @@ -0,0 +1,2 @@ +untrusted comment: V2Fly Signing Key +RWTe6SReSmJUeqoA8cq1MxX7ycL06DAMAJcAgQ8dCN3kFtnWBHYDpTnx From 1be3d52787999234b7eb478f38ea2403f536a70f Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sun, 5 Jul 2020 08:55:10 +0800 Subject: [PATCH 33/34] Allow VSign function to be disabled if V2Ray is included in a package and should be verified by the package manager. --- release/mutilate/removeVSign.sh | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 release/mutilate/removeVSign.sh diff --git a/release/mutilate/removeVSign.sh b/release/mutilate/removeVSign.sh new file mode 100644 index 00000000..525b48e8 --- /dev/null +++ b/release/mutilate/removeVSign.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +export VROOT=$( dirname "${BASH_SOURCE[0]}" )/../../ + +rm $VROOT/infra/control/verify.go + +sed -i '/VSign/d' $VROOT/go.mod \ No newline at end of file From b02a781ab9dca2abdecab93f00a653e3f269b221 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sun, 5 Jul 2020 16:40:59 +0800 Subject: [PATCH 34/34] Update Version --- core.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core.go b/core.go index cf092cae..2844a270 100644 --- a/core.go +++ b/core.go @@ -19,7 +19,7 @@ import ( ) var ( - version = "4.25.1" + version = "4.26.0" build = "Custom" codename = "V2Fly, a community-driven edition of V2Ray." intro = "A unified platform for anti-censorship."