├── exception.json ├── proxylist.json ├── recourse ├── local.png ├── server.png └── 2020-04-19 132834.png ├── hostlist.json ├── all_in_one.sh ├── ca.conf ├── server.conf ├── update_openssl.sh ├── LICENSE ├── blacklist.json ├── .gitignore ├── update_python.sh ├── install_client.sh ├── README.md ├── update_gcc.sh ├── install.sh ├── README_en.md ├── server.py └── chinalist.json /exception.json: -------------------------------------------------------------------------------- 1 | ["aws.amazon.com","*.aws.amazon.com"] -------------------------------------------------------------------------------- /proxylist.json: -------------------------------------------------------------------------------- 1 | { 2 | "Node_NY": [ 3 | "*.openai.com" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /recourse/local.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashuser/yashmak/HEAD/recourse/local.png -------------------------------------------------------------------------------- /recourse/server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashuser/yashmak/HEAD/recourse/server.png -------------------------------------------------------------------------------- /recourse/2020-04-19 132834.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashuser/yashmak/HEAD/recourse/2020-04-19 132834.png -------------------------------------------------------------------------------- /hostlist.json: -------------------------------------------------------------------------------- 1 | { 2 | "localhost": { 3 | "A": [ 4 | "127.0.0.1" 5 | ], 6 | "AAAA": [ 7 | "::1" 8 | ] 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /all_in_one.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | main(){ 4 | sudo apt-get install ca-certificates 5 | sudo curl -L https://raw.githubusercontent.com/hashuser/yashmak/master/update_python.sh | bash 6 | sudo curl -L https://raw.githubusercontent.com/hashuser/yashmak/master/update_openssl.sh | bash 7 | } 8 | 9 | main 10 | -------------------------------------------------------------------------------- /ca.conf: -------------------------------------------------------------------------------- 1 | [ req ] 2 | prompt = no 3 | default_bits = 256 4 | default_keyfile = ca.key 5 | default_md = sha256 6 | string_mask = nombstr 7 | distinguished_name = req_distinguished_name 8 | req_extensions = req_ext 9 | x509_extensions = x509_ext 10 | 11 | [ req_distinguished_name ] 12 | C=CN 13 | ST=Shanghai 14 | L=Shanghai 15 | O=Yashmak 16 | OU=GlobalSign Root CA - R3 17 | CN=GlobalSign 18 | 19 | [ x509_ext ] 20 | subjectKeyIdentifier = hash 21 | authorityKeyIdentifier = keyid,issuer 22 | basicConstraints = CA:TRUE 23 | keyUsage = digitalSignature, keyEncipherment, keyCertSign, cRLSign 24 | 25 | [ req_ext ] 26 | subjectKeyIdentifier = hash 27 | basicConstraints = CA:TRUE 28 | keyUsage = digitalSignature, keyEncipherment, keyCertSign, cRLSign 29 | -------------------------------------------------------------------------------- /server.conf: -------------------------------------------------------------------------------- 1 | [ req ] 2 | prompt = no 3 | default_bits = 256 4 | default_keyfile = r.pem 5 | default_md = sha256 6 | string_mask = nombstr 7 | distinguished_name = req_distinguished_name 8 | req_extensions = req_ext 9 | x509_extensions = x509_ext 10 | 11 | [ req_distinguished_name ] 12 | C=CN 13 | ST=Shanghai 14 | L=Shanghai 15 | O=Yashmak 16 | OU=GlobalSign Root CA - R3 17 | CN=GlobalSign 18 | 19 | [ x509_ext ] 20 | subjectKeyIdentifier = hash 21 | authorityKeyIdentifier = keyid,issuer 22 | basicConstraints = CA:FALSE 23 | keyUsage = digitalSignature, keyEncipherment 24 | 25 | [ req_ext ] 26 | subjectKeyIdentifier = hash 27 | basicConstraints = CA:FALSE 28 | keyUsage = digitalSignature, keyEncipherment 29 | subjectAltName = @alt_names 30 | 31 | [ alt_names ] 32 | -------------------------------------------------------------------------------- /update_openssl.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | openssl_version="1_1_1w" 3 | path=$(cd "$(dirname "$0")";pwd) 4 | cpu_count=$(( $(cat /proc/cpuinfo |grep "processor"|wc -l) - 1 )) 5 | if [[ $cpu_count < "1" ]] 6 | then 7 | cpu_count="1" 8 | fi 9 | 10 | main(){ 11 | update-ca-certificates -f 12 | wget https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_$openssl_version.tar.gz 13 | tar xzvf OpenSSL_$openssl_version.tar.gz 14 | cd $path/openssl-OpenSSL_$openssl_version 15 | ./config 16 | make -j $cpu_count && make install 17 | echo "/usr/local/lib" > /etc/ld.so.conf.d/libc.conf 18 | echo "/usr/lib" >> /etc/ld.so.conf.d/libc.conf 19 | echo "ca_certificate=/etc/ssl/certs/ca-certificates.crt" > /etc/wgetrc 20 | ldconfig 21 | openssl version 22 | rm -rf $path/openssl-OpenSSL_$openssl_version 23 | rm -f $path/OpenSSL_$openssl_version.tar.gz 24 | } 25 | 26 | main 27 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 breakwa2333 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /blacklist.json: -------------------------------------------------------------------------------- 1 | { 2 | "tag": { 3 | "cult": "https://baike.baidu.com/item/%E9%82%AA%E6%95%99/263551?fr=aladdin", 4 | "propaganda": "https://baike.baidu.com/item/%E6%B4%97%E8%84%91/1509388" 5 | }, 6 | "*.falundafa.org": "cult", 7 | "falundafa.org": "cult", 8 | "*.epochtimes.com": "cult", 9 | "epochtimes.com": "cult", 10 | "*.minghui.org": "cult", 11 | "minghui.org": "cult", 12 | "*.kingdomsalvation.org": "cult", 13 | "kingdomsalvation.org": "cult", 14 | "*.pursuestar.com": "cult", 15 | "pursuestar.com": "cult", 16 | "*.godfootsteps.org": "cult", 17 | "godfootsteps.org": "cult", 18 | "*.zhengjian.org": "propaganda", 19 | "zhengjian.org": "propaganda", 20 | "*.zhuichaguoji.org": "propaganda", 21 | "zhuichaguoji.org": "propaganda", 22 | "*.bannedbook.org": "propaganda", 23 | "bannedbook.org": "propaganda", 24 | "*.yuanming.net": "propaganda", 25 | "yuanming.net": "propaganda", 26 | "*.zhenxiang.biz": "propaganda", 27 | "zhenxiang.biz": "propaganda", 28 | "*.dafahao.com": "propaganda", 29 | "dafahao.com": "propaganda", 30 | "*.bitterwinter.org": "propaganda", 31 | "bitterwinter.org": "propaganda" 32 | } 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | -------------------------------------------------------------------------------- /update_python.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | path=$(cd "$(dirname "$0")";pwd) 3 | python_version="3.11.6" 4 | python_main_version="3.11" 5 | current_python_version=$(python$python_main_version -V) 6 | current_python_version=${current_python_version: 7} 7 | cpu_count=$(( $(cat /proc/cpuinfo |grep "processor"|wc -l) - 1 )) 8 | if [[ $cpu_count -lt 1 ]] 9 | then 10 | cpu_count="1" 11 | fi 12 | 13 | install_python(){ 14 | apt-get update 15 | apt-get install libreadline-gplv2-dev -y 16 | apt-get install libncursesw5-dev -y 17 | apt-get install libssl-dev -y 18 | apt-get install libsqlite3-dev tk-dev -y 19 | apt-get install libgdbm-dev -y 20 | apt-get install libbz2-dev -y 21 | apt-get install zlib1g-dev -y 22 | apt-get install libffi-dev -y 23 | apt-get install liblzma-dev -y 24 | wget https://www.python.org/ftp/python/$python_version/Python-$python_version.tgz 25 | tar zxf Python-$python_version.tgz 26 | cd $path/Python-$python_version 27 | ./configure --prefix=/usr/local/python-$python_version --enable-optimizations 28 | make -j $cpu_count && make install 29 | rm /usr/bin/python$python_main_version 30 | ln -s /usr/local/python-$python_version/bin/python$python_main_version /usr/bin/python$python_main_version 31 | python$python_main_version -m pip install uvloop 32 | python$python_main_version -m pip install ntplib 33 | python$python_main_version -m pip install psutil 34 | python$python_main_version -V 35 | rm -rf $path/Python-$python_version 36 | rm -f $path/Python-$python_version.tgz 37 | systemctl restart Yashmak 38 | } 39 | 40 | main(){ 41 | array0=(${python_version//./ }) # Split at periods 42 | rc0=$(echo ${array0[2]} | grep -o 'rc' || true) # Extract 'rc' if exists 43 | rc0_num=$(echo ${array0[2]#$rc0} | grep -o '[0-9]*$' || true) # Extract rc number if exists 44 | array0[2]=$(echo ${array0[2]} | grep -o '^[0-9]*') # Strip non-numerical characters at beginning 45 | 46 | array1=(${current_python_version//./ }) 47 | rc1=$(echo ${array1[2]} | grep -o 'rc' || true) 48 | rc1_num=$(echo ${array1[2]#$rc1} | grep -o '[0-9]*$' || true) 49 | array1[2]=$(echo ${array1[2]} | grep -o '^[0-9]*') 50 | 51 | # Initial comparison of major, minor, and patch version 52 | if [[ ${array0[0]} -gt ${array1[0]} ]] || 53 | ([[ ${array0[0]} -eq ${array1[0]} ]] && [[ ${array0[1]} -gt ${array1[1]} ]]) || 54 | ([[ ${array0[0]} -eq ${array1[0]} ]] && [[ ${array0[1]} -eq ${array1[1]} ]] && [[ ${array0[2]} -gt ${array1[2]} ]]) 55 | then 56 | echo "update required" 57 | install_python 58 | else 59 | # Specific checks for 'rc' versions 60 | if [[ ${array0[2]} -eq ${array1[2]} ]] && [[ "$rc0" == "rc" ]] && 61 | ([[ -z "$rc1" ]] || ([[ "$rc1" == "rc" ]] && [[ "$rc0_num" -gt "$rc1_num" ]])) 62 | then 63 | echo "update required" 64 | install_python 65 | else 66 | echo "up to date" 67 | fi 68 | fi 69 | } 70 | 71 | main 72 | -------------------------------------------------------------------------------- /install_client.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | python_main_version="3.11" 3 | 4 | create_service(){ 5 | touch $(cd "$(dirname "$0")";pwd)/Yashmak_client.service 6 | cat>$(cd "$(dirname "$0")";pwd)/Yashmak_client.service<> /etc/security/limits.conf 28 | echo "root hard nofile 1048575" >> /etc/security/limits.conf 29 | mv $(cd "$(dirname "$0")";pwd)/Yashmak_client.service /etc/systemd/system/ 30 | systemctl enable Yashmak_client.service 31 | systemctl start Yashmak_client.service 32 | } 33 | 34 | create_shortcut(){ 35 | echo "alias Yashmak_client_config='vim $(cd "$(dirname "$0")";pwd)/config.json'">>~/.bashrc 36 | echo "alias Yashmak_client_uninstall='rm -r $(cd "$(dirname "$0")";pwd)'">>~/.bashrc 37 | reboot 38 | } 39 | 40 | system_config(){ 41 | echo "net.core.default_qdisc = fq_codel" > /etc/sysctl.conf 42 | echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf 43 | echo "net.ipv4.tcp_keepalive_time = 300" >> /etc/sysctl.conf 44 | echo "net.ipv4.tcp_keepalive_intvl = 5" >> /etc/sysctl.conf 45 | echo "net.ipv4.tcp_keepalive_probes = 3" >> /etc/sysctl.conf 46 | echo "net.ipv4.tcp_moderate_rcvbuf = 1" >> /etc/sysctl.conf 47 | echo "net.ipv4.tcp_window_scaling = 1" >> /etc/sysctl.conf 48 | echo "net.core.somaxconn = 262114" >> /etc/sysctl.conf 49 | echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf 50 | echo "net.ipv4.ip_default_ttl = 128" >> /etc/sysctl.conf 51 | echo "net.ipv4.tcp_adv_win_scale = 3" >> /etc/sysctl.conf 52 | echo "net.ipv4.tcp_max_syn_backlog = 8192" >> /etc/sysctl.conf 53 | echo "net.nf_conntrack_max = 2000000" >> /etc/sysctl.conf 54 | echo "net.ipv4.tcp_slow_start_after_idle = 0" >> /etc/sysctl.conf 55 | echo "net.ipv4.tcp_fin_timeout = 30" >> /etc/sysctl.conf 56 | echo "net.ipv4.tcp_rmem = 4096 524288 12582912" >> /etc/sysctl.conf 57 | echo "net.core.rmem_default = 524288" >> /etc/sysctl.conf 58 | echo "net.core.rmem_max = 12582912" >> /etc/sysctl.conf 59 | echo "net.ipv4.tcp_wmem = 4096 524288 12582912" >> /etc/sysctl.conf 60 | echo "net.core.wmem_default = 524288" >> /etc/sysctl.conf 61 | echo "net.core.wmem_max = 12582912" >> /etc/sysctl.conf 62 | echo "net.ipv4.tcp_mem = 786432 1048576 26777216" >> /etc/sysctl.conf 63 | sysctl -p 64 | apt-get install resolvconf -y 65 | echo "dns-nameservers 114.114.114.114" >> /etc/network/interfaces 66 | /etc/init.d/networking restart 67 | /etc/init.d/resolvconf restart 68 | } 69 | 70 | automatic_reboot(){ 71 | apt-get install cron -y 72 | echo "0 0 * * * root systemctl restart Yashmak_client" >> /etc/crontab 73 | echo "0 0 * * 7 root reboot" >> /etc/crontab 74 | service cron restart 75 | } 76 | 77 | install_Yashmak(){ 78 | mkdir $(cd "$(dirname "$0")";pwd)/Yashmak_client 79 | cd $(cd "$(dirname "$0")";pwd)/Yashmak_client 80 | mkdir ./Config 81 | mkdir ./Config/Certs 82 | mkdir ./Config/Backup 83 | apt-get update 84 | dpkg-reconfigure libc6 85 | DEBIAN_FRONTEND=noninteractive dpkg --configure libssl1.1 86 | DEBIAN_FRONTEND=noninteractive apt-get install -y libssl1.1 87 | apt-get install python$python_main_version -y 88 | apt-get install python3-pip -y 89 | apt-get install python3-distutils -y 90 | python$python_main_version -m pip install aioprocessing 91 | python$python_main_version -m pip install pycryptodome 92 | python$python_main_version -m pip install psutil 93 | wget -O local.py https://raw.githubusercontent.com/hashuser/yashmak/master/local.py 94 | echo "[]" > Config/HSTS2.json 95 | echo "[]" > Config/EXURL.json 96 | echo "[]" > Config/exception.json 97 | echo "{}" > Config/config.json 98 | wget -O Config/geoip.json https://raw.githubusercontent.com/hashuser/yashmak/master/geoip.json 99 | wget -O Config/chinalist.json https://raw.githubusercontent.com/hashuser/yashmak/master/chinalist.json 100 | } 101 | 102 | main(){ 103 | install_Yashmak 104 | create_service 105 | install_service 106 | system_config 107 | automatic_reboot 108 | create_shortcut 109 | } 110 | 111 | main 112 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Language: [English](https://github.com/hashuser/yashmak/blob/master/README_en.md) [简体中文](https://github.com/hashuser/yashmak/blob/master/README.md) 2 | ## Yashmak基于Python3.11轻量级代理 3 | * 流量智能分流(基于用户行为提高准确度) 4 | * 基于多进程uvloop框架,支持多核,承载海量并发 5 | * TCP预连接池,显著降低延迟(0-RTT) 6 | * 无DNS泄漏 7 | * 非阻塞异步DNS查询 8 | * 自动签发TLS自签证书 9 | * 支持HTTP/Socks5代理协议 10 | * Host屏蔽/重定向 11 | * IPv4/IPv6 双协议栈 12 | ## 服务端 13 | >### 安装(Ubuntu 18.04TLS+) 14 | ``` 15 | sudo curl -L https://raw.githubusercontent.com/hashuser/yashmak/master/install.sh | bash 16 | ``` 17 | >### 配置 18 | ``` 19 | sudo Yashmak_config 20 | ``` 21 | ```shell 22 | # Example 23 | { 24 | "geoip_list_path": "/root/Yashmak/geoip.json", # IP addresses of (eg. China) 25 | "black_list_path": "/root/Yashmak/blacklist.json", # Blacklist of domain 26 | "host_list_path": "/root/Yashmak/hostlist.json", # Maps hostnames to IPs 27 | "proxy_list_path": "/root/Yashmak/proxylist.json", # Optional, Forward traffic to certain domains to Proxy 28 | "cert": "/root/Yashmak/Certs/server.crt", # ECC Public Key 29 | "key": "/root/Yashmak/Certs/server.key", # ECC Private Key 30 | "uuid": [ 31 | "d240eb37-fc4d-4bce-9404-2b338eccdf07" # UUID 32 | ], 33 | "normal_dns": [ 34 | "8.8.8.8", 35 | "1.1.1.1", 36 | "2001:4860:4860::8888", 37 | "2606:4700:4700::1111" 38 | ], 39 | "doh_dns": [ # Optional 40 | "1.1.1.1", 41 | "dns.google" 42 | ], 43 | "proxy": { # Optional 44 | "Node_NY": { 45 | "cert": "/root/Yashmak/Certs/server2.crt", # CA 46 | "host": "example.com", 47 | "port": "443", 48 | "uuid": "380ff5b5-31f8-4d22-ba25-c274156f04d9" 49 | } 50 | }, 51 | "ip": "::", # Listening IP address 52 | "port": "443" # Listening Port 53 | } 54 | ``` 55 | >### 卸载 56 | ``` 57 | sudo Yashmak_uninstall 58 | ``` 59 | >### 重启 60 | ``` 61 | sudo systemctl restart Yashmak 62 | ``` 63 | 64 | ## 如无法获取最新版本GCC/G++,将先编译GCC/G++,更新会耗费较长时间 65 | (4C8T AMD EPYC-Rome,编译安装GCC/G++以及Python,总耗时约 30 mins) 66 | >### OpenSSL更新(Ubuntu 18.04TLS+) 67 | ``` 68 | sudo curl -L https://raw.githubusercontent.com/hashuser/yashmak/master/update_openssl.sh | bash 69 | ``` 70 | >### Python更新(Ubuntu 18.04TLS+) 71 | ``` 72 | sudo curl -L https://raw.githubusercontent.com/hashuser/yashmak/master/update_python.sh | bash 73 | ``` 74 | >### GCC更新(Ubuntu 18.04TLS+) 75 | ``` 76 | sudo curl -L https://raw.githubusercontent.com/hashuser/yashmak/master/update_gcc.sh | bash 77 | ``` 78 | >### All-In-One(Ubuntu 18.04TLS+) 79 | ``` 80 | sudo curl -L https://raw.githubusercontent.com/hashuser/yashmak/master/all_in_one.sh | bash 81 | ``` 82 | ## Yashmak服务端架构 83 | ![image](https://github.com/hashuser/yashmak/raw/master/recourse/server.png) 84 | ## Yashmak客户端架构 85 | ![image](https://github.com/hashuser/yashmak/raw/master/recourse/local.png) 86 | ## Yashmak项目思路 87 | * **不使用非必要的额外加密手段** 88 | * 截止2022/01/22全球约91%[[Chrome浏览器统计数据]](https://transparencyreport.google.com/https)的站点使用了TLS/SSL,因此浏览器已对此部分流量进行了1次加密。考虑到可能存在的SNI阻断,以及20%的未使用加密的站点,Yashmak使用TLS1.3(X25519,AES_256_GCM)对所有流量实行了2次加密。不同于Shadowsocks或其他项目的是,Yashmak即不使用任何私有加密算法,也不会使用预共享密钥对流量使用对称加密算法进行加密。 89 | * **不使用非必要的应用层协议** 90 | * Yashmak项目认为,在任何试图使用应用层协议包装流量的做法都是毫无意义的。由于已使用TLS1.3对所有流量进行2次加密,流量对于外部观察者而言是黑盒无法直接获取报文特征,任何基于报文内容的DPI全部失效,只能通过旁信道特征进行分析猜测(DNS请求,包长度,访问频率等)。鉴于传输的流量已具备正常的包长度特征,因此额外的应用层协议包装不能带来任何好处只会降低速度。 91 | * **不使用MUX(多路复用)** 92 | * 建立TCP的开销确实巨大,但是少量连接的情况下这种开销可以忽略不计。作为代理所能做的是降低因代理而产生的额外性能开销,MUX使代理需要对数据帧进行额外的解码与合并,导致整体效率降低。同时由于HTTP/2的逐渐普及,截止2020/04/15全球约44%[[W3Tech统计数据]](https://w3techs.com/technologies/details/ce-http2)的站点使用了HTTP/2。由于HTTP/2中MUX默认开启也是HTTP/2不同于HTTP/1.1的显著特征之一,因此额外的MUX显得毫无意义。 93 | * **客户端不使用传统PAC** 94 | * 传统PAC需要浏览器支持,相同的Javascript在不同的浏览器中性能差距大,同时无法简单的做到全局分流。Yashmak项目对此做出改进,内置高性能智能分流器(单个请求**平均耗时0.01ms**),所有经过Yashmak的流量都会被合理科学的进行分流。Yashmak客户端中的ChinaList包含所有已知A/AAAA记录为中国IP的Host,每次请求都会通过智能分流器筛选,如所请求的Host在本地的ChinaList中则会直连,反之则将请求转发到代理服务器,过程中不进行任何DNS解析,避免可能的DNS泄露发生。代理服务器将通过GEOIP筛选所有请求,如DNS解析得到的A/AAAA记录为中国IP则将请求的Host保存到文件中,并正常代理该请求。Yashmak客户端每60s会从代理服务器获取ChinaList更新,更新完成后立即生效。基于用户请求每个UUID会获得独一无二的ChinaList。 95 | * **使用OpenSSL** 96 | * 使用OpenSSL可以减少 **Client Hello** 泄露的特征,更容易隐藏在正常TLS流量中。 97 | ## HMAK协议 98 | HMAK是Yashmak专有协议,轻量快速,用于对代理服务器发送指令 99 | |36字节|2字节(有符号,Big Endian)|X字节|1字节|Y字节|1字节|1字节|1字节| 100 | |:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| 101 | |UUID|指令长度L|地址A|'\n'分隔标识|端口P|'\n'分隔标识|类型T|'\n'分隔标识| 102 | 103 | 其中: 104 | * UUID: 预共享的UUID用于认证请求合法性 105 | * 指令长度: 106 | * L>0: L字节的指令 107 | * L=0: 心跳包 108 | * L=-2: TCP_Ping请求 109 | * L=-3: ChinaList更新请求(Gzip压缩) 110 | * 连接复用: 111 | * T = 0: 禁用 112 | * T = 1: 启用 113 | ## 注意事项 114 | * 请确保客户端与代理服务器间链路正常,平均丢包率≤10%,安装脚本默认开启BBRv1 115 | ![image](https://raw.githubusercontent.com/hashuser/yashmak/master/recourse/2020-04-19%20132834.png) 116 | -------------------------------------------------------------------------------- /update_gcc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | gcc_version="13.2.0" 3 | path=$(cd "$(dirname "$0")";pwd) 4 | current_gcc_version=$(gcc -dumpversion) 5 | current_gpp_version=$(g++ -dumpversion) 6 | cpu_count=$(( $(cat /proc/cpuinfo |grep "processor"|wc -l) - 1 )) 7 | if [[ $cpu_count < "1" ]] 8 | then 9 | cpu_count="1" 10 | fi 11 | 12 | install_gcc(){ 13 | apt-get update 14 | apt-get install make -y 15 | apt-get install libgmp-dev -y 16 | apt-get install libmpfr-dev -y 17 | apt-get install libmpc-dev -y 18 | apt-get install flex -y 19 | apt-get install gcc -y 20 | apt-get install g++ -y 21 | gcc --version 22 | rm -rf $path/gcc-build 23 | rm -rf $path/gcc-releases-gcc-$gcc_version 24 | rm -f $path/gcc-$gcc_version.tar.gz 25 | wget https://github.com/gcc-mirror/gcc/archive/refs/tags/releases/gcc-$gcc_version.tar.gz 26 | tar zxf gcc-$gcc_version.tar.gz 27 | mkdir $path/gcc-build 28 | cd $path/gcc-build 29 | $path/gcc-releases-gcc-$gcc_version/configure --prefix=/usr/local/gcc-$gcc_version --enable-checking=release --enable-languages=c,c++ --disable-multilib 30 | make -j $cpu_count && make install 31 | gcc --version 32 | update-alternatives --remove gcc /usr/local/gcc-$gcc_version/bin/gcc 33 | update-alternatives --remove g++ /usr/local/gcc-$gcc_version/bin/g++ 34 | update-alternatives --remove gcc /usr/local/gcc-12.2.0/bin/gcc 35 | update-alternatives --remove g++ /usr/local/gcc-12.2.0/bin/g++ 36 | update-alternatives --remove gcc /usr/local/gcc-12.1.0/bin/gcc 37 | update-alternatives --remove g++ /usr/local/gcc-12.1.0/bin/g++ 38 | update-alternatives --remove gcc /usr/local/gcc-11.4.0/bin/gcc 39 | update-alternatives --remove g++ /usr/local/gcc-11.4.0/bin/g++ 40 | update-alternatives --remove gcc /usr/local/gcc-11.3.0/bin/gcc 41 | update-alternatives --remove g++ /usr/local/gcc-11.3.0/bin/g++ 42 | update-alternatives --remove gcc /usr/local/gcc-11.2.0/bin/gcc 43 | update-alternatives --remove g++ /usr/local/gcc-11.2.0/bin/g++ 44 | update-alternatives --remove gcc /usr/local/gcc-11.1.0/bin/gcc 45 | update-alternatives --remove g++ /usr/local/gcc-11.1.0/bin/g++ 46 | update-alternatives --remove gcc /usr/lcoal/gcc-10.4.0/bin/gcc 47 | update-alternatives --remove g++ /usr/local/gcc-10.4.0/bin/g++ 48 | update-alternatives --remove gcc /usr/lcoal/gcc-10.3.0/bin/gcc 49 | update-alternatives --remove g++ /usr/local/gcc-10.3.0/bin/g++ 50 | update-alternatives --remove gcc /usr/lcoal/gcc-10.2.0/bin/gcc 51 | update-alternatives --remove g++ /usr/lcoal/gcc-10.2.0/bin/g++ 52 | update-alternatives --remove gcc /usr/local/gcc-10.1.0/bin/gcc 53 | update-alternatives --remove g++ /usr/local/gcc-10.1.0/bin/g++ 54 | update-alternatives --remove gcc /usr/local/gcc-9.5.0/bin/gcc 55 | update-alternatives --remove g++ /usr/local/gcc-9.5.0/bin/g++ 56 | update-alternatives --remove gcc /usr/local/gcc-9.4.0/bin/gcc 57 | update-alternatives --remove g++ /usr/local/gcc-9.4.0/bin/g++ 58 | update-alternatives --remove gcc /usr/local/gcc-9.3.0/bin/gcc 59 | update-alternatives --remove g++ /usr/local/gcc-9.3.0/bin/g++ 60 | update-alternatives --remove gcc /usr/local/gcc-9.2.0/bin/gcc 61 | update-alternatives --remove g++ /usr/local/gcc-9.2.0/bin/g++ 62 | update-alternatives --remove gcc /usr/local/gcc-9.1.0/bin/gcc 63 | update-alternatives --remove g++ /usr/local/gcc-9.1.0/bin/g++ 64 | update-alternatives --remove gcc /usr/local/gcc-8.4.0/bin/gcc 65 | update-alternatives --remove g++ /usr/local/gcc-8.4.0/bin/g++ 66 | update-alternatives --remove gcc /usr/local/gcc-8.3.0/bin/gcc 67 | update-alternatives --remove g++ /usr/local/gcc-8.3.0/bin/g++ 68 | update-alternatives --remove gcc /usr/local/gcc-7.5.0/bin/gcc 69 | update-alternatives --remove g++ /usr/local/gcc-7.5.0/bin/g++ 70 | update-alternatives --remove gcc /usr/local/gcc-7.4.0/bin/gcc 71 | update-alternatives --remove g++ /usr/local/gcc-7.4.0/bin/g++ 72 | update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc-$gcc_version/bin/gcc 50 73 | update-alternatives --install /usr/bin/g++ g++ /usr/local/gcc-$gcc_version/bin/g++ 50 74 | rm -rf $path/gcc-build 75 | rm -rf $path/gcc-releases-gcc-$gcc_version 76 | rm -f $path/gcc-$gcc_version.tar.gz 77 | } 78 | 79 | main(){ 80 | array0=(${gcc_version//./ }) 81 | array1=(${current_gcc_version//./ }) 82 | array2=(${current_gpp_version//./ }) 83 | 84 | if [[ $((${array0[0]})) -gt $((${array1[0]})) ]] && [[ $((${array0[0]})) -gt $((${array2[0]})) ]] 85 | then 86 | echo "update required" 87 | install_gcc 88 | elif [[ $((${array0[0]})) -eq $((${array1[0]})) ]] && [[ $((${array0[0]})) -eq $((${array2[0]})) ]] 89 | then 90 | if [[ $((${array0[1]})) -gt $((${array1[1]})) ]] && [[ $((${array0[1]})) -gt $((${array2[1]})) ]] 91 | then 92 | echo "update required" 93 | install_gcc 94 | elif [[ $((${array0[1]})) -eq $((${array1[1]})) ]] && [[ $((${array0[1]})) -eq $((${array2[1]})) ]] 95 | then 96 | if [[ $((${array0[2]})) -gt $((${array1[2]})) ]] && [[ $((${array0[2]})) -gt $((${array2[2]})) ]] 97 | then 98 | echo "update required" 99 | install_gcc 100 | else 101 | echo "up to date" 102 | fi 103 | else 104 | echo "up to date" 105 | fi 106 | else 107 | echo "up to date" 108 | fi 109 | } 110 | 111 | main 112 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | python_main_version="3.11" 3 | 4 | create_service(){ 5 | touch $(cd "$(dirname "$0")";pwd)/Yashmak.service 6 | cat>$(cd "$(dirname "$0")";pwd)/Yashmak.service<> /etc/security/limits.conf 28 | echo "root hard nofile 1048575" >> /etc/security/limits.conf 29 | mv $(cd "$(dirname "$0")";pwd)/Yashmak.service /etc/systemd/system/ 30 | systemctl enable Yashmak.service 31 | systemctl start Yashmak.service 32 | } 33 | 34 | create_shortcut(){ 35 | echo "alias Yashmak_config='vim $(cd "$(dirname "$0")";pwd)/config.json'">>~/.bashrc 36 | echo "alias Yashmak_blacklist='vim $(cd "$(dirname "$0")";pwd)/blacklist.json'">>~/.bashrc 37 | echo "alias Yashmak_uninstall='rm -r $(cd "$(dirname "$0")";pwd)'">>~/.bashrc 38 | reboot 39 | } 40 | 41 | system_config(){ 42 | echo "net.core.default_qdisc = fq_codel" > /etc/sysctl.conf 43 | echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf 44 | echo "net.ipv4.tcp_keepalive_time = 300" >> /etc/sysctl.conf 45 | echo "net.ipv4.tcp_keepalive_intvl = 5" >> /etc/sysctl.conf 46 | echo "net.ipv4.tcp_keepalive_probes = 3" >> /etc/sysctl.conf 47 | echo "net.ipv4.tcp_moderate_rcvbuf = 1" >> /etc/sysctl.conf 48 | echo "net.ipv4.tcp_window_scaling = 1" >> /etc/sysctl.conf 49 | echo "net.core.somaxconn = 262114" >> /etc/sysctl.conf 50 | echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf 51 | echo "net.ipv4.ip_default_ttl = 128" >> /etc/sysctl.conf 52 | echo "net.ipv4.tcp_adv_win_scale = 3" >> /etc/sysctl.conf 53 | echo "net.ipv4.tcp_max_syn_backlog = 8192" >> /etc/sysctl.conf 54 | echo "net.nf_conntrack_max = 2000000" >> /etc/sysctl.conf 55 | echo "net.ipv4.tcp_slow_start_after_idle = 0" >> /etc/sysctl.conf 56 | echo "net.ipv4.tcp_fin_timeout = 30" >> /etc/sysctl.conf 57 | echo "net.ipv4.tcp_rmem = 4096 524288 12582912" >> /etc/sysctl.conf 58 | echo "net.core.rmem_default = 524288" >> /etc/sysctl.conf 59 | echo "net.core.rmem_max = 12582912" >> /etc/sysctl.conf 60 | echo "net.ipv4.tcp_wmem = 4096 524288 12582912" >> /etc/sysctl.conf 61 | echo "net.core.wmem_default = 524288" >> /etc/sysctl.conf 62 | echo "net.core.wmem_max = 12582912" >> /etc/sysctl.conf 63 | echo "net.ipv4.tcp_mem = 786432 1048576 26777216" >> /etc/sysctl.conf 64 | sysctl -p 65 | apt-get install resolvconf -y 66 | echo "dns-nameservers 1.1.1.1" >> /etc/network/interfaces 67 | /etc/init.d/networking restart 68 | /etc/init.d/resolvconf restart 69 | } 70 | 71 | sign_cert(){ 72 | uuid=$(cat /proc/sys/kernel/random/uuid) 73 | uuid=${uuid:0:7} 74 | apt-get install openssl -y 75 | mkdir -p ./demoCA/{private,newcerts,conf} 76 | mkdir -p ./server/{private,request,conf} 77 | touch ./demoCA/index.txt 78 | touch ./demoCA/index.txt.attr 79 | touch ./demoCA/serial 80 | echo 01 > ./demoCA/serial 81 | wget -O ./demoCA/conf/ca.conf https://raw.githubusercontent.com/hashuser/yashmak/master/ca.conf 82 | wget -O ./server/conf/server.conf https://raw.githubusercontent.com/hashuser/yashmak/master/server.conf 83 | local_ipv4=`curl -4 ip.sb` 84 | if [ $? -ne 0 ]; then 85 | local_ipv6=`curl -6 ip.sb` 86 | if [ $? -ne 0 ]; then 87 | exit 1 88 | else 89 | echo "IP.1 = $local_ipv6" >> ./server/conf/server.conf 90 | sed -i "s/CN=GlobalSign/CN=$local_ipv6/" ./server/conf/server.conf 91 | fi 92 | else 93 | echo "IP.1 = $local_ipv4" >> ./server/conf/server.conf 94 | sed -i "s/CN=GlobalSign/CN=$local_ipv4/" ./server/conf/server.conf 95 | local_ipv6=`curl -6 ip.sb` 96 | if [ $? -eq 0 ]; then 97 | echo "IP.2 = $local_ipv6" >> ./server/conf/server.conf 98 | fi 99 | fi 100 | sed -i 's^RANDFILE = $ENV::HOME/.rnd^# RANDFILE = $ENV::HOME/.rnd^' /etc/ssl/openssl.cnf 101 | sed -i "s/O=Yashmak/O=$uuid/" ./demoCA/conf/ca.conf 102 | sed -i "s/O=Yashmak/O=$uuid/" ./server/conf/server.conf 103 | openssl ecparam -genkey -name prime256v1 -out ./demoCA/private/cakey.pem 104 | openssl ecparam -genkey -name prime256v1 -out ./server/private/server.key 105 | openssl req -new -x509 -key ./demoCA/private/cakey.pem -out ./demoCA/cacert.pem -days 7300 -config ./demoCA/conf/ca.conf 106 | openssl req -new -key ./server/private/server.key -out ./server/request/server.csr -config ./server/conf/server.conf 107 | openssl ca -batch -in ./server/request/server.csr -out ./server/server.crt -days 3650 -extensions req_ext -extfile ./server/conf/server.conf 108 | mkdir ./Certs 109 | mv ./demoCA/cacert.pem ./Certs 110 | mv ./server/private/server.key ./Certs 111 | mv ./server/server.crt ./Certs 112 | rm -rf ./demoCA 113 | rm -rf ./server 114 | } 115 | 116 | automatic_reboot(){ 117 | apt-get install cron -y 118 | echo "0 16 * * * root systemctl restart Yashmak" >> /etc/crontab 119 | echo "0 16 * * 7 root reboot" >> /etc/crontab 120 | service cron restart 121 | } 122 | 123 | install_Yashmak(){ 124 | mkdir $(cd "$(dirname "$0")";pwd)/Yashmak 125 | cd $(cd "$(dirname "$0")";pwd)/Yashmak 126 | mkdir ./Cache 127 | apt-get update 128 | dpkg-reconfigure libc6 129 | DEBIAN_FRONTEND=noninteractive dpkg --configure libssl1.1 130 | DEBIAN_FRONTEND=noninteractive apt-get install -y libssl1.1 131 | apt-get install net-tools -y 132 | apt-get install python$python_main_version -y 133 | apt-get install python3-pip -y 134 | apt-get install python3-distutils -y 135 | python$python_main_version -m pip install uvloop 136 | python$python_main_version -m pip install ntplib 137 | python$python_main_version -m pip install psutil 138 | wget -O server.py https://raw.githubusercontent.com/hashuser/yashmak/master/server.py 139 | wget -O geoip.json https://raw.githubusercontent.com/hashuser/yashmak/master/geoip.json 140 | wget -O blacklist.json https://raw.githubusercontent.com/hashuser/yashmak/master/blacklist.json 141 | wget -O hostlist.json https://raw.githubusercontent.com/hashuser/yashmak/master/hostlist.json 142 | } 143 | 144 | main(){ 145 | install_Yashmak 146 | create_service 147 | install_service 148 | system_config 149 | sign_cert 150 | automatic_reboot 151 | create_shortcut 152 | } 153 | 154 | main 155 | -------------------------------------------------------------------------------- /README_en.md: -------------------------------------------------------------------------------- 1 | ## Yashmak - a lightweight proxy based on Python3.10 2 | * Intelligent flow distribution (based on user behavior to improve accuracy) 3 | * Based on the multi-process uvloop framework, it supports multi-core and carries massive concurrency 4 | * TCP pre-connection pool, significantly reducing latency (0-RTT) 5 | * No DNS leaks 6 | * Non-blocking asynchronous DNS query 7 | * Automatically issue TLS self-signed certificates 8 | * Support HTTP/Socks5 proxy protocol 9 | * Host blocking/redirection 10 | * IPv4/IPv6 Dual Stack 11 | 12 | ### Install (Ubuntu 18.04TLS+) 13 | ``` 14 | sudo curl -L https://raw.githubusercontent.com/hashuser/yashmak/master/install.sh | bash 15 | ``` 16 | ### configuration 17 | ``` 18 | sudo Yashmak_config 19 | ``` 20 | ```shell 21 | # Example 22 | { 23 | "geoip": "/root/Yashmak/geoip.json", # IP addresses of (eg. China) 24 | "blacklist": "/root/Yashmak/blacklist.json", # Blacklist of domain 25 | "hostlist": "/root/Yashmak/hostlist.json", # Maps hostnames to IP addresses 26 | "cert": "/root/Yashmak/Certs/server.crt", # ECC Public Key 27 | "key": "/root/Yashmak/Certs/server.key", # ECC Private Key 28 | "uuid": [ 29 | "d240eb37-fc4d-4bce-9404-2b338eccdf07" # UUID 30 | ], 31 | "normal_dns": [ 32 | "8.8.8.8", 33 | "1.1.1.1", 34 | "2001:4860:4860::8888", 35 | "2606:4700:4700::1111" 36 | ], 37 | "doh_dns": [ 38 | "1.1.1.1", 39 | "dns.google" 40 | ], 41 | "ip": "::", # Listening IP address 42 | "port": "443" # Listening Port 43 | } 44 | ``` 45 | ### Uninstall 46 | ``` 47 | sudo Yashmak_uninstall 48 | ``` 49 | ### reboot 50 | ``` 51 | sudo systemctl restart Yashmak 52 | ``` 53 | 54 | ## If the latest version of GCC/G++ cannot be obtained, GCC/G++ will be compiled first, and the update will take a long time 55 | 56 | ### OpenSSL update (Ubuntu 18.04TLS+) 57 | ``` 58 | sudo curl -L https://raw.githubusercontent.com/hashuser/yashmak/master/update_openssl.sh | bash 59 | ``` 60 | ### Python update (Ubuntu 18.04TLS+) 61 | ``` 62 | sudo curl -L https://raw.githubusercontent.com/hashuser/yashmak/master/update_python.sh | bash 63 | ``` 64 | ### GCC update (Ubuntu 18.04TLS+) 65 | ``` 66 | sudo curl -L https://raw.githubusercontent.com/hashuser/yashmak/master/update_gcc.sh | bash 67 | ``` 68 | ### All-In-One(Ubuntu 18.04TLS+) 69 | ``` 70 | sudo curl -L https://raw.githubusercontent.com/hashuser/yashmak/master/all_in_one.sh | bash 71 | ``` 72 | ## Yashmak server architecture 73 | ![image](https://github.com/hashuser/yashmak/raw/master/recourse/server.png) 74 | ## Yashmak client architecture 75 | ![image](https://github.com/hashuser/yashmak/raw/master/recourse/local.png) 76 | ## Yashmak Project Ideas 77 | * **Do not use unnecessary additional encryption methods** 78 | * As of 2022/01/22, about 91% of [[Chrome browser statistics]](https://transparencyreport.google.com/https) sites in the world use TLS/SSL, so browsing The server has already encrypted this part of the traffic once. Considering possible SNI blocking and 20% of sites that do not use encryption, Yashmak uses TLS1.3 (X25519, AES_256_GCM) to encrypt all traffic twice. Unlike Shadowsocks or other projects, Yashmak neither uses any proprietary encryption algorithms nor uses pre-shared keys to encrypt traffic with symmetric encryption algorithms. 79 | * **Do not use non-essential application layer protocols** 80 | * The Yashmak project believes that any attempt to wrap traffic using an application layer protocol is pointless. Since TLS1.3 has been used to encrypt all traffic twice, the traffic is a black box for external observers and cannot directly obtain packet characteristics. Any DPI based on packet content is invalid, and can only be analyzed and guessed through side channel characteristics. (DNS request, packet length, access frequency, etc.). Given that the transmitted traffic already has normal packet length characteristics, the additional application-layer protocol wrapping does not bring any benefit but only slows down the speed. 81 | * **Does not use MUX (multiplexing)** 82 | * The overhead of establishing TCP is indeed huge, but this overhead is negligible in the case of a small number of connections. What a proxy can do is to reduce the additional performance overhead caused by the proxy. MUX makes the proxy need to perform additional decoding and merging of data frames, resulting in a decrease in overall efficiency. At the same time, due to the gradual popularity of HTTP/2, as of 2020/04/15, about 44% of the world [[W3Tech statistics]](https://w3techs.com/technologies/details/ce-http2) of sites use HTTP/2. Since MUX is turned on by default in HTTP/2 is also one of the distinctive features of HTTP/2 different from HTTP/1.1, so the additional MUX is meaningless. 83 | * **Client does not use legacy PAC** 84 | * Traditional PAC requires browser support. The performance of the same Javascript varies greatly in different browsers, and it is impossible to simply implement global distribution. The Yashmak project has improved on this, with a built-in high-performance intelligent shunt (a single request** takes an average of 0.01ms**), and all traffic passing through Yashmak will be shunted reasonably and scientifically. The ChinaList in the Yashmak client contains all hosts with known A/AAAA records as Chinese IPs. Each request will be filtered by an intelligent shunt. If the requested Host is in the local ChinaList, it will be directly connected, otherwise the request will be forwarded To the proxy server, no DNS resolution is performed during the process to avoid possible DNS leaks. The proxy server will filter all requests through GEOIP. If the A/AAAA record obtained by DNS resolution is a Chinese IP, it will save the requested Host to a file and proxy the request normally. The Yashmak client will obtain the ChinaList update from the proxy server every 60s, and it will take effect immediately after the update is completed. A unique ChinaList will be obtained for each UUID based on the user's request. 85 | * **Using OpenSSL** 86 | * Using OpenSSL can reduce the characteristics of **Client Hello** leaks, which are easier to hide in normal TLS traffic. 87 | ## HMAK protocol 88 | HMAK is Yashmak's proprietary protocol, lightweight and fast, used to send instructions to proxy servers 89 | |36 bytes|2 bytes (signed, Big Endian)|X bytes|1 bytes|Y bytes|1 bytes|1 bytes|1 bytes| 90 | |:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| 91 | |UUID|command length L|address A|'\n' delimiter|port P|'\n' delimiter|type T|'\n' delimiter| 92 | 93 | in: 94 | * UUID: The pre-shared UUID is used to authenticate the legitimacy of the request 95 | * Instruction length: 96 | * L>0: L byte instruction 97 | * L=0: heartbeat packet 98 | * L=-2: TCP_Ping request 99 | * L=-3: ChinaList update request (Gzip compression) 100 | * Connection multiplexing: 101 | * T = 0: disabled 102 | * T = 1: enable 103 | ## Precautions 104 | * Please ensure that the link between the client and the proxy server is normal, the average packet loss rate is ≤10%, and the installation script enables BBRv1 by default 105 | ![image](https://raw.githubusercontent.com/hashuser/yashmak/master/recourse/2020-04-19%20132834.png) 106 | -------------------------------------------------------------------------------- /server.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | import multiprocessing 3 | import base64 4 | import socket 5 | import ssl 6 | import json 7 | import os 8 | import sys 9 | import ipaddress 10 | import traceback 11 | import gzip 12 | import time 13 | import datetime 14 | import ntplib 15 | import uvloop 16 | import random 17 | import gc 18 | import psutil 19 | import platform 20 | 21 | gc.set_threshold(100000, 50, 50) 22 | asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) 23 | 24 | 25 | class ymc_base: 26 | @staticmethod 27 | async def clean_up(writer1=None, writer2=None): 28 | try: 29 | if writer1 != None: 30 | writer1.close() 31 | except BaseException as error: 32 | traceback.clear_frames(error.__traceback__) 33 | error.__traceback__ = None 34 | try: 35 | if writer2 != None: 36 | writer2.close() 37 | except BaseException as error: 38 | traceback.clear_frames(error.__traceback__) 39 | error.__traceback__ = None 40 | try: 41 | if writer1 != None: 42 | await writer1.wait_closed() 43 | except BaseException as error: 44 | traceback.clear_frames(error.__traceback__) 45 | error.__traceback__ = None 46 | try: 47 | if writer2 != None: 48 | await writer2.wait_closed() 49 | except BaseException as error: 50 | traceback.clear_frames(error.__traceback__) 51 | error.__traceback__ = None 52 | 53 | @staticmethod 54 | def set_priority(level): 55 | p = psutil.Process(os.getpid()) 56 | if "windows" in platform.system().lower(): 57 | if level.lower() == 'real_time': 58 | p.nice(psutil.REALTIME_PRIORITY_CLASS) 59 | elif level.lower() == 'high': 60 | p.nice(psutil.HIGH_PRIORITY_CLASS) 61 | elif level.lower() == 'above_normal': 62 | p.nice(psutil.ABOVE_NORMAL_PRIORITY_CLASS) 63 | elif level.lower() == 'normal': 64 | p.nice(psutil.NORMAL_PRIORITY_CLASS) 65 | elif level.lower() == 'below_normal': 66 | p.nice(psutil.BELOW_NORMAL_PRIORITY_CLASS) 67 | elif level.lower() == 'idle': 68 | p.nice(psutil.IDLE_PRIORITY_CLASS) 69 | else: 70 | raise Exception('Unexpected value') 71 | elif "linux" in platform.system().lower(): 72 | if level.lower() == 'real_time': 73 | p.nice(-20) 74 | elif level.lower() == 'high': 75 | p.nice(-10) 76 | elif level.lower() == 'above_normal': 77 | p.nice(-5) 78 | elif level.lower() == 'normal': 79 | p.nice(0) 80 | elif level.lower() == 'below_normal': 81 | p.nice(5) 82 | elif level.lower() == 'idle': 83 | p.nice(20) 84 | else: 85 | raise Exception('Unexpected value') 86 | else: 87 | raise Exception('Unsupported Platform') 88 | 89 | @staticmethod 90 | def is_ip(host): 91 | try: 92 | if b':' in host or int(host[host.rfind(b'.') + 1:]): 93 | return True 94 | except ValueError as error: 95 | traceback.clear_frames(error.__traceback__) 96 | error.__traceback__ = None 97 | return False 98 | 99 | @staticmethod 100 | def translate(content): 101 | return content.replace('\\', '/') 102 | 103 | @staticmethod 104 | def encode(data): 105 | return data.encode('utf-8') 106 | 107 | @staticmethod 108 | def decode(data): 109 | return data.decode('utf-8') 110 | 111 | @staticmethod 112 | def base64_encode(data): 113 | if isinstance(data,str): 114 | data = data.encode('utf-8') 115 | return base64.b64encode(data).decode('utf-8') 116 | return base64.b64encode(data) 117 | 118 | @staticmethod 119 | def base64_decode(data): 120 | if isinstance(data,str): 121 | data = data.encode('utf-8') 122 | return base64.b64decode(data).decode('utf-8') 123 | return base64.b64decode(data) 124 | 125 | @staticmethod 126 | async def sleep(sec): 127 | if sec <= 1: 128 | await asyncio.sleep(sec) 129 | else: 130 | B = time.time() 131 | while time.time() - B < sec: 132 | S = time.time() 133 | await asyncio.sleep(1) 134 | E = time.time() 135 | if E - S > 2: 136 | return True 137 | return False 138 | 139 | @staticmethod 140 | def enhanced_base64_encode(s): 141 | if isinstance(s,str): 142 | s = s.encode('utf-8') 143 | a = base64.b64encode(s) 144 | rand = int.from_bytes(random.randbytes(len(a) + 1), 'little') 145 | b = base64.b64encode(int.to_bytes(rand + int.from_bytes(a, 'little'), len(a) + 2, 'little')) 146 | c = base64.b64encode(int.to_bytes(rand, len(a) + 1, 'little')) 147 | d = base64.b64encode(int.to_bytes(len(c), 3, 'little')) + c + b 148 | return base64.b64encode(d) 149 | 150 | @staticmethod 151 | def enhanced_base64_decode(s): 152 | if isinstance(s,str): 153 | s = s.encode('utf-8') 154 | a = base64.b64decode(s) 155 | b = int.from_bytes(base64.b64decode(a[0:4]), 'little') 156 | rand = int.from_bytes(base64.b64decode(a[4:b + 4]), 'little') 157 | c = int.from_bytes(base64.b64decode(a[b + 4:]), 'little') 158 | d = int.to_bytes(c - rand, len(base64.b64decode(a[4:b + 4])) - 1, 'little') 159 | return base64.b64decode(d) 160 | 161 | 162 | class ymc_ssl_context: 163 | @staticmethod 164 | def init_normal_context(): 165 | context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) 166 | context.minimum_version = ssl.TLSVersion.TLSv1_2 167 | context.set_alpn_protocols(['http/1.1']) 168 | context.verify_mode = ssl.CERT_REQUIRED 169 | context.check_hostname = True 170 | context.load_default_certs() 171 | return context 172 | 173 | def init_client_context(self, ca_path=None): 174 | self.config_path = os.path.abspath(os.path.dirname(sys.argv[0])) + '/Config/' 175 | if ca_path is None: 176 | ca_path = self.config_path + self.config['cert'] 177 | context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) 178 | context.minimum_version = ssl.TLSVersion.TLSv1_3 179 | context.set_alpn_protocols(['h2', 'http/1.1']) 180 | context.verify_mode = ssl.CERT_REQUIRED 181 | context.check_hostname = True 182 | context.load_verify_locations(ca_path) 183 | return context 184 | 185 | def init_server_context(self): 186 | context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) 187 | context.minimum_version = ssl.TLSVersion.TLSv1_3 188 | context.set_alpn_protocols(['http/1.1']) 189 | context.load_cert_chain(self.config['cert'], self.config['key']) 190 | return context 191 | 192 | 193 | class ymc_connect(ymc_ssl_context): 194 | async def open_connection(self,host,port,TLS=False,server_hostname=None,ssl_handshake_timeout=5,timeout=5,retry=1,context=None): 195 | for x in range(retry): 196 | try: 197 | if TLS: 198 | if context == None: 199 | context = self.init_normal_context() 200 | if server_hostname == None: 201 | server_hostname = host 202 | if isinstance(server_hostname, bytes): 203 | server_hostname = server_hostname.decode('utf-8') 204 | return await asyncio.wait_for(asyncio.open_connection(host=host, port=port, ssl=context, 205 | server_hostname=server_hostname, 206 | ssl_handshake_timeout=ssl_handshake_timeout),timeout) 207 | else: 208 | return await asyncio.wait_for(asyncio.open_connection(host=host, port=port), timeout) 209 | except Exception as error: 210 | traceback.clear_frames(error.__traceback__) 211 | error.__traceback__ = None 212 | raise Exception('Too many attempts') 213 | 214 | 215 | class ymc_dns_parser: 216 | def dns_decoder(self, data, mq_type, ID, fast_mode=True): 217 | if fast_mode: 218 | return self._dns_decoder_fast(data, mq_type, ID) 219 | return self._dns_decoder_debug(data, mq_type, ID) 220 | 221 | def _dns_decoder_fast(self, data, mq_type, ID): 222 | result = dict() 223 | if isinstance(ID,bytes): 224 | result['ID'] = data[:2] 225 | else: 226 | result['ID'] = int.from_bytes(data[:2], 'big', signed=False) 227 | if result['ID'] != ID: 228 | return {'error':-1} 229 | result['flags'] = self._dns_get_flags_fast(data) 230 | if not result['flags']['QR']: 231 | return {'error':-1} 232 | if result['flags']['rcode'] == 3: 233 | return {'error':3} 234 | elif result['flags']['rcode']: 235 | return {'error':result['flags']['rcode']} 236 | position = data.find(b'\xc0\x0c', 12) 237 | if position == -1: 238 | result['answers'] = [] 239 | result['error'] = None 240 | return result 241 | raw_answer = data[position:] 242 | result['answers'] = self._dns_get_answers_fast(raw_answer,mq_type) 243 | result['error'] = None 244 | return result 245 | 246 | def _dns_decoder_debug(self, data, mq_type, ID): 247 | result = dict() 248 | if isinstance(ID, bytes): 249 | result['ID'] = data[:2] 250 | else: 251 | result['ID'] = int.from_bytes(data[:2], 'big', signed=False) 252 | if result['ID'] != ID: 253 | return {'error':-1} 254 | result['flags'] = self._dns_get_flags_debug(data) 255 | if not result['flags']['QR']: 256 | return {'error':-1} 257 | if result['flags']['rcode'] == 3: 258 | return {'error':3} 259 | elif result['flags']['rcode']: 260 | return {'error':result['flags']['rcode']} 261 | result['questions'] = int.from_bytes(data[4:6], 'big', signed=False) 262 | result['answer_rrs'] = int.from_bytes(data[6:8], 'big', signed=False) 263 | result['authority_rrs'] = int.from_bytes(data[8:10], 'big', signed=False) 264 | result['additional_rrs'] = int.from_bytes(data[10:12], 'big', signed=False) 265 | position = data.find(b'\xc0\x0c', 12) 266 | if position == -1: 267 | result['answers'] = [] 268 | result['queries'] = b'' 269 | result['error'] = None 270 | return result 271 | raw_queries = data[12:position] 272 | result['queries'] = raw_queries 273 | raw_answer = data[position:] 274 | result['answers'] = self._dns_get_answers_debug(raw_answer,mq_type) 275 | result['error'] = None 276 | return result 277 | 278 | @staticmethod 279 | def _dns_get_answers_fast(raw_answer,mq_type): 280 | answers, len_raw_answer, pe = [], len(raw_answer), 0 281 | while True: 282 | ps = pe + 10 283 | if ps > len_raw_answer: 284 | break 285 | pe = ps + 2 + int.from_bytes(raw_answer[ps:ps + 2], 'big', signed=False) 286 | q_type = int.from_bytes(raw_answer[ps - 10:pe][2:4], 'big', signed=False) 287 | if mq_type == q_type: 288 | if q_type == 1: 289 | rdata = socket.inet_ntop(socket.AF_INET, raw_answer[ps - 10:pe][12:]).encode('utf=8') 290 | elif q_type == 28: 291 | rdata = socket.inet_ntop(socket.AF_INET6, raw_answer[ps - 10:pe][12:]).encode('utf=8') 292 | else: 293 | rdata = raw_answer[ps - 10:pe][12:] 294 | q_ttl = int.from_bytes(raw_answer[ps - 10:pe][6:10], 'big', signed=False) 295 | answers.append({'q_ttl': q_ttl, 'rdata': rdata}) 296 | return answers 297 | 298 | @staticmethod 299 | def _dns_get_answers_debug(raw_answer,mq_type): 300 | answers, len_raw_answer, pe = [], len(raw_answer), 0 301 | while True: 302 | ps = pe + 10 303 | if ps > len_raw_answer: 304 | break 305 | pe = ps + 2 + int.from_bytes(raw_answer[ps:ps + 2], 'big', signed=False) 306 | q_type = int.from_bytes(raw_answer[ps - 10:pe][2:4], 'big', signed=False) 307 | if mq_type == q_type: 308 | if q_type == 1: 309 | rdata = socket.inet_ntop(socket.AF_INET, raw_answer[ps - 10:pe][12:]).encode('utf=8') 310 | elif q_type == 28: 311 | rdata = socket.inet_ntop(socket.AF_INET6, raw_answer[ps - 10:pe][12:]).encode('utf=8') 312 | else: 313 | rdata = raw_answer[ps - 10:pe][12:] 314 | q_ttl = int.from_bytes(raw_answer[ps - 10:pe][6:10], 'big', signed=False) 315 | q_class = int.from_bytes(raw_answer[ps - 10:pe][4:6], 'big', signed=False) 316 | answers.append({'q_type': q_type, 'q_class': q_class, 'q_ttl': q_ttl, 'rdata': rdata}) 317 | return answers 318 | 319 | @staticmethod 320 | def _dns_get_flags_fast(data): 321 | flags = dict() 322 | raw_flags = bin(int.from_bytes(data[2:4], 'big', signed=False)) 323 | if raw_flags[2] == '1': 324 | flags['QR'] = True 325 | else: 326 | flags['QR'] = False 327 | flags['rcode'] = int(raw_flags[14:], 2) 328 | return flags 329 | 330 | @staticmethod 331 | def _dns_get_flags_debug(data): 332 | flags = dict() 333 | raw_flags = bin(int.from_bytes(data[2:4], 'big', signed=False)) 334 | if raw_flags[2] == '1': 335 | flags['QR'] = True 336 | else: 337 | flags['QR'] = False 338 | flags['opcode'] = int(raw_flags[3:7], 2) 339 | if raw_flags[7] == '1': 340 | flags['AA'] = True 341 | else: 342 | flags['AA'] = False 343 | if raw_flags[8] == '1': 344 | flags['TC'] = True 345 | else: 346 | flags['TC'] = False 347 | if raw_flags[9] == '1': 348 | flags['RD'] = True 349 | else: 350 | flags['RD'] = False 351 | if raw_flags[10] == '1': 352 | flags['RA'] = True 353 | else: 354 | flags['RA'] = False 355 | if raw_flags[11] == '1': 356 | flags['Z'] = True 357 | else: 358 | flags['Z'] = False 359 | if raw_flags[12] == '1': 360 | flags['AD'] = True 361 | else: 362 | flags['AD'] = False 363 | if raw_flags[13] == '1': 364 | flags['CD'] = True 365 | else: 366 | flags['CD'] = False 367 | flags['rcode'] = int(raw_flags[14:], 2) 368 | return flags 369 | 370 | def dns_encoder(self, host, mq_type, fast_mode=True): 371 | if fast_mode: 372 | return self._make_query_fast(host, mq_type) 373 | return False 374 | 375 | @staticmethod 376 | def _make_query_fast(host, mq_type): 377 | ID = random.randbytes(2) 378 | queries = ID + b'\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00' 379 | host = host.split(b'.') 380 | for x in host: 381 | queries += int.to_bytes(len(x), 1, 'big', signed=False) + x 382 | if mq_type == 1: 383 | queries += b'\x00\x00\x01\x00\x01' 384 | elif mq_type == 28: 385 | queries += b'\x00\x00\x1c\x00\x01' 386 | elif mq_type == 5: 387 | queries += b'\x00\x00\x05\x00\x01' 388 | return queries, ID 389 | 390 | 391 | class ymc_dns_cache(ymc_base, ymc_connect): 392 | def __init__(self): 393 | self.dns_records, self.dns_futures_map = dict(), dict() 394 | self.dns_query_send_buffer = asyncio.Queue() 395 | 396 | async def connect_dns_local(self): 397 | if socket.has_dualstack_ipv6(): 398 | localhost = '::1' 399 | else: 400 | localhost = '127.0.0.1' 401 | while True: 402 | try: 403 | self.dns_local_reader, self.dns_local_writer = await self.open_connection(localhost,self.config['dns_port']) 404 | except Exception as error: 405 | if not 'Too many attempts' in str(error): 406 | raise 'Too many attempts' 407 | else: 408 | break 409 | self.dns_local_writer.write(b'8f1f5d11-98bc-42de-a996-e86c8c0cdf7f') 410 | await self.dns_local_writer.drain() 411 | asyncio.create_task(self.dns_query_sender()) 412 | asyncio.create_task(self.dns_response_receiver()) 413 | 414 | async def resolve(self, host, force=False): 415 | if self.is_ip(host): 416 | host = host.replace(b'::ffff:', b'') 417 | return [host] 418 | elif not force and host in self.dns_records: 419 | age = time.time() - self.dns_records[host][1] 420 | if 0 < age <= 600: 421 | asyncio.create_task(self.dns_query(host)) 422 | elif age > 600: 423 | return await self.dns_query(host) 424 | return self.dns_records[host][0] 425 | return await self.dns_query(host) 426 | 427 | async def dns_query(self, host): 428 | IPs, TTL = await self.dns_query_worker(host) 429 | if IPs != None: 430 | self.dns_records[host] = (IPs, time.time() + TTL) 431 | return IPs 432 | else: 433 | raise Exception('No IP Error') 434 | 435 | async def dns_query_worker(self, host, timeout=10): 436 | future = asyncio.get_running_loop().create_future() 437 | if host in self.dns_futures_map: 438 | self.dns_futures_map[host].add(future) 439 | else: 440 | self.dns_futures_map[host] = {future} 441 | if len(self.dns_futures_map[host]) == 1: 442 | await self.dns_query_send_buffer.put(host) 443 | try: 444 | return await asyncio.wait_for(future, timeout) 445 | except TimeoutError: 446 | while self.dns_futures_map[host]: 447 | future = self.dns_futures_map[host].pop() 448 | future.set_result((None, 0)) 449 | return None, 0 450 | 451 | async def dns_query_sender(self): 452 | while True: 453 | buffer = await self.dns_query_send_buffer.get() + b'\n' 454 | if buffer: 455 | self.dns_local_writer.write(buffer) 456 | await self.dns_local_writer.drain() 457 | 458 | async def dns_response_receiver(self): 459 | buffer = b'' 460 | while True: 461 | buffer += await self.dns_local_reader.read(65535) 462 | position = buffer.rfind(b'\n') 463 | records = buffer[:position].split(b'\n') 464 | buffer = buffer[position + 1:] 465 | for record in records: 466 | data = record.split(b'\r') 467 | host, IPs, TTL, timestamp = data[0], data[1], float(data[2]), float(data[3]) 468 | if timestamp + 10 < time.time(): 469 | result = (None, TTL) 470 | elif IPs == b'None': 471 | result = (None, TTL) 472 | elif IPs == b'No': 473 | result = ([], TTL) 474 | else: 475 | result = (IPs.split(b','), TTL) 476 | if host in self.dns_futures_map: 477 | while self.dns_futures_map[host]: 478 | future = self.dns_futures_map[host].pop() 479 | future.set_result(result) 480 | 481 | async def dns_clear_cache(self): 482 | while True: 483 | try: 484 | for x in list(self.dns_records.keys()): 485 | if self.dns_records[x][1] + 1200 < time.time(): 486 | del self.dns_records[x] 487 | except Exception as error: 488 | traceback.clear_frames(error.__traceback__) 489 | error.__traceback__ = None 490 | finally: 491 | await self.sleep(60) 492 | 493 | 494 | class ymc_internet_status_cache(ymc_base, ymc_connect): 495 | def __init__(self): 496 | self.internet_status = None 497 | 498 | def has_internet(self): 499 | return self.internet_status 500 | 501 | async def internet_refresh_cache(self): 502 | while True: 503 | server_writer = None 504 | try: 505 | if socket.has_dualstack_ipv6(): 506 | localhost = '::1' 507 | else: 508 | localhost = '127.0.0.1' 509 | server_reader, server_writer = await self.open_connection(localhost, self.config['dns_port']) 510 | server_writer.write(b'ecd465e2-4a3d-48a8-bf09-b744c07bbf83') 511 | await server_writer.drain() 512 | while True: 513 | result = await asyncio.wait_for(server_reader.read(64),10) 514 | if result == b'True': 515 | self.internet_status = True 516 | elif result == b'False': 517 | self.internet_status = False 518 | else: 519 | self.internet_status = None 520 | except Exception as error: 521 | traceback.clear_frames(error.__traceback__) 522 | error.__traceback__ = None 523 | finally: 524 | await self.clean_up(server_writer) 525 | await self.sleep(1) 526 | 527 | 528 | class ymc_connect_remote_server(ymc_dns_cache, ymc_internet_status_cache): 529 | def __init__(self): 530 | super().__init__() 531 | self.main_port_fail = 0 532 | 533 | async def connect_proxy_server(self, d_host=None, d_port=None, d_context=None): 534 | server_reader, server_writer = None, None 535 | if d_host is None or d_port is None or d_context is None: 536 | d_host = self.config['host'] 537 | d_port = self.config['port'] 538 | d_context = self.client_context 539 | if self.main_port_fail <= 100: 540 | ports = [d_port, self.get_calculated_port()] 541 | else: 542 | ports = [self.get_calculated_port()] 543 | for port in ports: 544 | for IP in await self.resolve(d_host): 545 | try: 546 | server_reader, server_writer = await self.open_connection(IP, port, True, d_host, context=d_context) 547 | if len(ports) == 2: 548 | self.main_port_fail = 0 549 | return server_reader, server_writer 550 | except Exception as error: 551 | traceback.clear_frames(error.__traceback__) 552 | error.__traceback__ = None 553 | await self.clean_up(server_writer) 554 | if self.has_internet() is True: 555 | self.main_port_fail += 1 556 | raise Exception 557 | 558 | def get_calculated_port(self): 559 | return 1024 + self.get_today() % 8976 560 | 561 | @staticmethod 562 | def get_today(): 563 | today = int(str(datetime.datetime.utcnow())[:10].replace('-', '')) ** 3 564 | return int(str(today)[today % 8:8] + str(today)[0:today % 8]) 565 | 566 | 567 | class yashmak_worker(ymc_connect_remote_server): 568 | def __init__(self,config): 569 | super().__init__() 570 | self.config = config 571 | self.host_list = self.config['host_list'] 572 | self.black_list = self.config['black_list'] 573 | self.proxy_list = self.config['proxy_list'] 574 | self.geoip_list = self.config['geoip_list'] 575 | self.dns_records = self.config['dns_records'] 576 | self.local_path = self.config['local_path'] 577 | self.utc_difference = self.config['utc_difference'] 578 | self.start_time = self.config['start_time'] 579 | self.log = [] 580 | self.log_sender_buffer = asyncio.Queue() 581 | self.set_priority('above_normal') 582 | self.create_loop() 583 | 584 | def create_server(self): 585 | if socket.has_dualstack_ipv6(): 586 | listener = socket.create_server(address=(self.config['ip'], self.config['port']), family=socket.AF_INET6, 587 | reuse_port=True,dualstack_ipv6=True) 588 | else: 589 | listener = socket.create_server(address=(self.config['ip'], self.config['port']), family=socket.AF_INET, 590 | reuse_port=True,dualstack_ipv6=False) 591 | return asyncio.start_server(client_connected_cb=self.handler, sock=listener, backlog=2048,ssl=self.init_server_context()) 592 | 593 | def create_loop(self): 594 | self.loop = asyncio.new_event_loop() 595 | self.loop.set_exception_handler(self.exception_handler) 596 | self.loop.create_task(self.create_server()) 597 | self.loop.create_task(self.connect_dns_local()) 598 | self.loop.create_task(self.connect_log_local()) 599 | self.loop.create_task(self.updater_cache()) 600 | self.loop.run_forever() 601 | 602 | async def handler(self, client_reader, client_writer): 603 | server_reader, server_writer = None, None 604 | try: 605 | uuid = await asyncio.wait_for(client_reader.read(36),10) 606 | if uuid not in self.config['uuid']: 607 | peer = client_writer.get_extra_info("peername")[0] 608 | header = await self.get_complete_header(uuid,client_reader,client_writer) 609 | self.log.append(str((peer, str(header)[2:-1])).replace('\\\\r','\r').replace('\\\\n', '\n')) 610 | raise Exception 611 | data = 0 612 | while True: 613 | data = int.from_bytes((await asyncio.wait_for(client_reader.readexactly(2),20)), 'big',signed=True) 614 | if data == 0: 615 | continue 616 | elif data > 0: 617 | data = await asyncio.wait_for(client_reader.readexactly(data),20) 618 | host, port = self.process(data) 619 | await self.redirect(client_writer, host) 620 | await self.proxy(host, port, uuid, client_reader, client_writer) 621 | elif data == -4: 622 | await self.echo(client_writer) 623 | elif data == -2: 624 | await self.TCP_ping(client_writer, client_reader) 625 | elif data == -3: 626 | await self.updater(client_writer, uuid) 627 | else: 628 | raise Exception('unknown command') 629 | except Exception as error: 630 | self.log.append("Worker_main_handler: " + str(error)) 631 | traceback.clear_frames(error.__traceback__) 632 | error.__traceback__ = None 633 | await self.clean_up(client_writer, server_writer) 634 | 635 | async def proxy(self, host, port, uuid, client_reader, client_writer): 636 | server_reader, server_writer = None, None 637 | try: 638 | server_reader, server_writer = await self.make_proxy(host,port,uuid) 639 | if server_reader == None or server_writer == None: 640 | raise Exception 641 | done, pending = await asyncio.wait(await self.make_switches(client_reader, client_writer, server_reader, server_writer),return_when=asyncio.FIRST_COMPLETED) 642 | for x in pending: 643 | x.cancel() 644 | except Exception as error: 645 | self.log.append("Worker_proxy: " + str(error)) 646 | traceback.clear_frames(error.__traceback__) 647 | error.__traceback__ = None 648 | await self.clean_up(client_writer, server_writer) 649 | 650 | async def make_proxy(self, host, port, uuid): 651 | server_reader, server_writer = None, None 652 | destination = self.is_nested_proxy(host) 653 | if destination: 654 | server_reader, server_writer = await self.do_handshake(host, port, destination) 655 | else: 656 | IPs = await self.get_IPs(host) 657 | for x in range(len(IPs)): 658 | address = IPs[int(random.random() * 1000 % len(IPs))] 659 | self.is_china_ip(address, host, uuid) 660 | try: 661 | server_reader, server_writer = await self.open_connection(address, port) 662 | break 663 | except Exception as error: 664 | self.log.append("Worker_make_proxy: " + str(error)) 665 | traceback.clear_frames(error.__traceback__) 666 | error.__traceback__ = None 667 | if server_reader == None or server_writer == None: 668 | raise Exception 669 | return server_reader, server_writer 670 | 671 | def is_nested_proxy(self, host): 672 | for x in self.proxy_list: 673 | if self.host_in_it(host, self.proxy_list[x]): 674 | return x 675 | return None 676 | 677 | @staticmethod 678 | def host_in_it(host, var): 679 | if host in var: 680 | return True 681 | segment_length = len(host) 682 | for x in range(64): 683 | segment_length = host.rfind(b'.', 0, segment_length) - 1 684 | if segment_length <= -1: 685 | break 686 | if host[segment_length + 1:] in var: 687 | return True 688 | return False 689 | 690 | async def do_handshake(self, host, port, destination=None): 691 | d_host = self.config['proxy'][destination]['host'] 692 | d_port = self.config['proxy'][destination]['port'] 693 | d_context = self.init_client_context(self.config['proxy'][destination]['cert']) 694 | server_reader, server_writer = await self.connect_proxy_server(d_host, d_port, d_context) 695 | server_writer.write(self.config['proxy'][destination]['uuid']) 696 | server_writer.write(int.to_bytes(len(host + b'\n' + port + b'\n'), 2, 'big', signed=True) + host + b'\n' + port + b'\n') 697 | await server_writer.drain() 698 | return server_reader, server_writer 699 | 700 | async def make_switches(self,cr,cw,sr,sw): 701 | return [asyncio.create_task(self.switch(cr,sw)),asyncio.create_task(self.switch(sr,cw))] 702 | 703 | async def get_IPs(self,host,force=False): 704 | try: 705 | return await self.resolve(host,force) 706 | except Exception: 707 | return [] 708 | 709 | @staticmethod 710 | def HTTP_header_decoder(header): 711 | lower = [b'a',b'b',b'c',b'd',b'e',b'f',b'g',b'h',b'i',b'j',b'k',b'l',b'm',b'n',b'o',b'p',b'q',b'r',b's',b't',b'u',b'v',b'w',b'x',b'y',b'z'] 712 | number = [b'0',b'1',b'2',b'3',b'4',b'5',b'6',b'7',b'8',b'9'] 713 | punctuation = [b'!',b'@',b'#',b'$',b'%',b'^',b'&',b'*',b'(',b')',b'-',b'=',b'_',b'+',b'{',b'}',b'[',b']',b'|',b';',b':',b',',b'.',b'/',b'<',b'>',b'?',b"'",b'"',b'~',b'`'] 714 | 715 | def has_(value,map): 716 | for x in map: 717 | if x in value: 718 | return True 719 | 720 | header = header.split(b'\r\n') 721 | sigment = header[0].split(b' ') 722 | if has_(sigment[0],lower) or has_(sigment[0],number) or has_(sigment[0],punctuation): 723 | return 400 724 | try: 725 | if b'/' not in sigment[1]: 726 | return 400 727 | except Exception: 728 | pass 729 | try: 730 | if sigment[2][0] == 72: 731 | for x in sigment[2][:5]: 732 | if x not in [72,84,80,47]: 733 | return 400 734 | elif header[1] == b'': 735 | return 4042 736 | except Exception: 737 | pass 738 | try: 739 | temp = sigment[2].split(b'/')[1] 740 | try: 741 | temp = float(temp) 742 | if temp < 1.0 or temp >= 2.0: 743 | return 505 744 | except Exception: 745 | return 505 746 | except Exception: 747 | pass 748 | return 404 749 | 750 | async def get_complete_header(self, header, reader, writer): 751 | while True: 752 | try: 753 | result = self.HTTP_header_decoder(header) 754 | if b'\r\n\r\n' in header and result == 404: 755 | await self.camouflage(writer, 404) 756 | await asyncio.sleep(10) 757 | return header 758 | elif result == 400: 759 | await self.camouflage(writer, 400) 760 | await asyncio.sleep(10) 761 | return header 762 | elif result == 505: 763 | await self.camouflage(writer, 505) 764 | await asyncio.sleep(10) 765 | return header 766 | elif result == 4042: 767 | await self.camouflage(writer, 4042) 768 | return header 769 | header += await asyncio.wait_for(reader.read(65535), 30) 770 | except Exception: 771 | return header 772 | 773 | async def camouflage(self,writer,type=400): 774 | try: 775 | GMT = time.strftime('%a, %d %b %Y %H:%M:%S GMT', time.localtime(self.utc_difference + time.time())).encode('utf-8') 776 | if type == 400: 777 | writer.write(b'''HTTP/1.1 400 Bad Request\r\nServer: nginx\r\nDate: ''' + GMT + b'''\r\nContent-Type: text/html\r\nContent-Length: 150\r\nConnection: close\r\n\r\n\r\n400 Bad Request\r\n\r\n

400 Bad Request

\r\n
nginx
\r\n\r\n\r\n''') 778 | elif type == 404: 779 | writer.write(b'''HTTP/1.1 404 Not Found\r\nServer: nginx\r\nDate: ''' + GMT + b'''\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n\r\n404 Not Found\r\n\r\n

404 Not Found

\r\n
nginx
\r\n\r\n\r\n''') 780 | elif type == 505: 781 | writer.write(b'''HTTP/1.1 505 HTTP Version Not Supported\r\nServer: nginx\r\nDate: ''' + GMT + b'''\r\nContent-Type: text/html\r\nContent-Length: 180\r\nConnection: close\r\n\r\n\r\n505 HTTP Version Not Supported\r\n\r\n

505 HTTP Version Not Supported

\r\n
nginx
\r\n\r\n\r\n''') 782 | elif type == 4042: 783 | writer.write(b'''\r\n404 Not Found\r\n\r\n

404 Not Found

\r\n
nginx
\r\n\r\n\r\n''') 784 | await writer.drain() 785 | except Exception as error: 786 | self.log.append("Worker_camouflage: " + str(error)) 787 | traceback.clear_frames(error.__traceback__) 788 | error.__traceback__ = None 789 | await self.clean_up(None, writer) 790 | 791 | async def switch(self, reader, writer): 792 | try: 793 | while True: 794 | data = await reader.read(32768) 795 | if data == b'': 796 | raise Exception 797 | writer.write(data) 798 | await writer.drain() 799 | except BaseException as error: 800 | self.log.append("Worker_switch: " + str(error)) 801 | traceback.clear_frames(error.__traceback__) 802 | error.__traceback__ = None 803 | await self.clean_up(writer) 804 | 805 | async def TCP_ping(self, writer, reader): 806 | try: 807 | time = await asyncio.wait_for(reader.read(8), 20) 808 | writer.write(time) 809 | await writer.drain() 810 | except Exception as error: 811 | traceback.clear_frames(error.__traceback__) 812 | error.__traceback__ = None 813 | await self.clean_up(writer) 814 | finally: 815 | await asyncio.sleep(5) 816 | await self.clean_up(writer) 817 | 818 | async def echo(self, writer): 819 | try: 820 | writer.write(b'ok') 821 | await writer.drain() 822 | except Exception as error: 823 | self.log.append("Worker_echo: " + str(error)) 824 | traceback.clear_frames(error.__traceback__) 825 | error.__traceback__ = None 826 | await self.clean_up(writer) 827 | 828 | async def redirect(self, writer, host): 829 | try: 830 | URL = self.black_list[self.is_banned(host)] 831 | if URL != None: 832 | if URL[0:4] != b'http' and URL in self.black_list['tag']: 833 | URL = self.black_list['tag'][URL] 834 | if URL[0:4] == b'http': 835 | writer.write(b'''HTTP/1.1 301 Moved Permanently\r\nLocation: ''' + URL + b'''\r\nConnection: close\r\n\r\n''') 836 | else: 837 | writer.write(b'''HTTP/1.1 404 Not Found\r\nConnection: close\r\n\r\n''') 838 | await writer.drain() 839 | await self.clean_up(writer) 840 | except Exception as error: 841 | self.log.append("Worker_redirect: " + str(error)) 842 | traceback.clear_frames(error.__traceback__) 843 | error.__traceback__ = None 844 | await self.clean_up(writer) 845 | 846 | async def updater(self, writer, uuid): 847 | try: 848 | if len(uuid) != 36 or b'.' in uuid or b'/' in uuid or b'\\' in uuid: 849 | raise Exception 850 | if (uuid + b'_compressed') in self.exception_list_cache: 851 | writer.write(self.exception_list_cache[uuid + b'_compressed']) 852 | await writer.drain() 853 | else: 854 | writer.write(b'\n') 855 | await writer.drain() 856 | await self.clean_up(writer) 857 | except Exception as error: 858 | self.log.append("Worker_updater: " + str(error)) 859 | traceback.clear_frames(error.__traceback__) 860 | error.__traceback__ = None 861 | await self.clean_up(writer) 862 | 863 | async def updater_cache(self): 864 | try: 865 | self.exception_list_cache = dict() 866 | while True: 867 | for uuid in self.config['uuid']: 868 | path = self.local_path + '/Cache/' + uuid.decode('utf-8') + '.json' 869 | if os.path.exists(path): 870 | with open(path, 'rb') as file: 871 | content = file.read() 872 | self.exception_list_cache[uuid + b'_compressed'] = gzip.compress(content, 2) 873 | await asyncio.sleep(60) 874 | except Exception as error: 875 | self.log.append("Worker_updater_cache: " + str(error)) 876 | traceback.clear_frames(error.__traceback__) 877 | error.__traceback__ = None 878 | 879 | def exception_handler(self, loop, context): 880 | pass 881 | 882 | def process(self, data): 883 | return self.get_address(data) 884 | 885 | @staticmethod 886 | def get_address(data): 887 | position = data.find(b'\n') 888 | host = data[:position] 889 | position += 1 890 | port = data[position:data.find(b'\n', position)] 891 | return host, port 892 | 893 | @staticmethod 894 | def is_ipv6(ip): 895 | try: 896 | if b':' in ip and b'::ffff:' not in ip: 897 | return True 898 | except ValueError as error: 899 | traceback.clear_frames(error.__traceback__) 900 | error.__traceback__ = None 901 | return False 902 | 903 | def is_china_ip(self, ip, host, uuid): 904 | if self.is_ip(host): 905 | return False 906 | ip = ip.decode('utf-8') 907 | ip = ip.replace('::ffff:','',1) 908 | ip = int(ipaddress.ip_address(ip)) 909 | left = 0 910 | right = len(self.geoip_list) - 1 911 | while left <= right: 912 | mid = left + (right - left) // 2 913 | if self.geoip_list[mid][0] <= ip <= self.geoip_list[mid][1]: 914 | self.add_host(self.conclude(host), uuid) 915 | return True 916 | elif self.geoip_list[mid][1] < ip: 917 | left = mid + 1 918 | elif self.geoip_list[mid][0] > ip: 919 | right = mid - 1 920 | return False 921 | 922 | def is_banned(self, host): 923 | if host in self.black_list: 924 | return host 925 | sigment_length = len(host) 926 | while True: 927 | sigment_length = host.rfind(b'.', 0, sigment_length) - 1 928 | if sigment_length <= -1: 929 | break 930 | if host[sigment_length + 1:] in self.black_list: 931 | return host[sigment_length + 1:] 932 | return None 933 | 934 | def add_host(self, host, uuid): 935 | if uuid not in self.host_list: 936 | self.host_list[uuid] = set() 937 | self.host_list[uuid].add(host) 938 | 939 | async def write_host(self): 940 | while True: 941 | try: 942 | for x in self.host_list: 943 | if len(self.host_list[x]) > 0: 944 | await self.log_sender_buffer.put(str(list(self.host_list[x])).encode('utf-8') + b'\r\n' + x + b'\r\nhost\r\n\r\n') 945 | self.host_list[x].clear() 946 | await asyncio.sleep(15) 947 | except Exception as error: 948 | self.log.append("Worker_write_host: " + str(error)) 949 | traceback.clear_frames(error.__traceback__) 950 | error.__traceback__ = None 951 | 952 | async def write_log(self): 953 | while True: 954 | try: 955 | if len(self.log) > 0: 956 | await self.log_sender_buffer.put(str(self.log).encode('utf-8') + b'\r\nnone\r\nlog\r\n\r\n') 957 | self.log.clear() 958 | await asyncio.sleep(15) 959 | except Exception as error: 960 | self.log.append("Worker_write_log: " + str(error)) 961 | traceback.clear_frames(error.__traceback__) 962 | error.__traceback__ = None 963 | 964 | async def log_sender(self, server_writer): 965 | while True: 966 | data = await self.log_sender_buffer.get() 967 | server_writer.write(data) 968 | await server_writer.drain() 969 | 970 | async def connect_log_local(self): 971 | self.loop.create_task(self.write_host()) 972 | self.loop.create_task(self.write_log()) 973 | while True: 974 | server_writer = None 975 | try: 976 | server_reader, server_writer = await self.open_connection(host='127.0.0.1', port=self.config['log_port']) 977 | server_writer.write(b'f31d7515-d90f-4eba-a4a9-8eac1d0a423e') 978 | await server_writer.drain() 979 | await self.log_sender(server_writer) 980 | except Exception as error: 981 | self.log.append("Worker_connect_log_local: " + str(error)) 982 | traceback.clear_frames(error.__traceback__) 983 | error.__traceback__ = None 984 | finally: 985 | await self.clean_up(server_writer) 986 | 987 | @staticmethod 988 | def conclude(data): 989 | def detect(data): 990 | if data.count(b'.') > 1: 991 | return True 992 | return False 993 | if detect(data): 994 | return b'*' + data[data.find(b'.'):] 995 | else: 996 | return data 997 | 998 | 999 | class yashmak_dns(ymc_base,ymc_dns_parser,ymc_connect): 1000 | def __init__(self, config): 1001 | try: 1002 | #print(os.getpid(),'dns') 1003 | self.init(config) 1004 | except Exception as error: 1005 | traceback.clear_frames(error.__traceback__) 1006 | error.__traceback__ = None 1007 | 1008 | def init(self, config): 1009 | self.config = config 1010 | self.dns_records, self.dns_futures_map = dict(), dict() 1011 | self.ipv4, self.ipv6 = None, None 1012 | self.set_priority('above_normal') 1013 | self.create_loop() 1014 | 1015 | def create_loop(self): 1016 | self.loop = asyncio.new_event_loop() 1017 | self.loop.set_exception_handler(self.exception_handler) 1018 | self.loop.create_task(self.create_server()) 1019 | self.loop.create_task(self.internet_refresh_cache()) 1020 | self.loop.create_task(self.dns_clear_cache()) 1021 | self.loop.run_forever() 1022 | 1023 | def create_server(self): 1024 | if socket.has_dualstack_ipv6(): 1025 | listener = socket.create_server(address=('::1', self.config['dns_port']), family=socket.AF_INET6, 1026 | dualstack_ipv6=True) 1027 | else: 1028 | listener = socket.create_server(address=('127.0.0.1', self.config['dns_port']), family=socket.AF_INET, 1029 | dualstack_ipv6=False) 1030 | return asyncio.start_server(client_connected_cb=self.handler, sock=listener, backlog=2048) 1031 | 1032 | async def handler(self, client_reader, client_writer): 1033 | try: 1034 | host = await asyncio.wait_for(client_reader.read(65535), 20) 1035 | if host == b'8f1f5d11-98bc-42de-a996-e86c8c0cdf7f': 1036 | dns_response_send_buffer = asyncio.Queue() 1037 | await asyncio.gather(self.dns_query_receiver(client_reader, dns_response_send_buffer), 1038 | self.dns_response_sender(client_writer, dns_response_send_buffer)) 1039 | elif host == b'ecd465e2-4a3d-48a8-bf09-b744c07bbf83': 1040 | await self.internet_status(client_writer) 1041 | else: 1042 | raise Exception('Invalid Connection') 1043 | except Exception as error: 1044 | traceback.clear_frames(error.__traceback__) 1045 | error.__traceback__ = None 1046 | finally: 1047 | await self.clean_up(client_writer) 1048 | 1049 | async def dns_query_receiver(self, client_reader, dns_response_send_buffer): 1050 | buffer = b'' 1051 | while True: 1052 | buffer += await client_reader.read(65535) 1053 | position = buffer.rfind(b'\n') 1054 | hosts = buffer[:position].split(b'\n') 1055 | buffer = buffer[position + 1:] 1056 | for host in hosts: 1057 | self.loop.create_task(self.dns_query_processor(host, dns_response_send_buffer)) 1058 | 1059 | @staticmethod 1060 | async def dns_response_sender(client_writer, dns_response_send_buffer): 1061 | while True: 1062 | buffer = await dns_response_send_buffer.get() + b'\n' 1063 | if buffer: 1064 | client_writer.write(buffer) 1065 | await client_writer.drain() 1066 | 1067 | async def dns_query_processor(self, host, dns_response_send_buffer): 1068 | IPs, TTL = await self.auto_resolve(host) 1069 | try: 1070 | float(str(TTL).encode('utf-8')) 1071 | TTL = str(TTL).encode('utf-8') 1072 | except Exception as error: 1073 | TTL = b'0' 1074 | timestamp = str(time.time()).encode('utf-8') 1075 | if IPs and IPs != [None]: 1076 | buffer = b'' 1077 | for x in IPs: 1078 | buffer += x + b',' 1079 | buffer = buffer[:-1] 1080 | await dns_response_send_buffer.put(host + b'\r' + buffer + b'\r' + TTL + b'\r' + timestamp) 1081 | elif IPs == [None]: 1082 | await dns_response_send_buffer.put(host + b'\rNo\r' + TTL + b'\r' + timestamp) 1083 | else: 1084 | await dns_response_send_buffer.put(host + b'\rNone\r' + TTL + b'\r' + timestamp) 1085 | 1086 | async def internet_status(self, client_writer): 1087 | while True: 1088 | client_writer.write(str(self.has_internet()).encode('utf-8')) 1089 | await client_writer.drain() 1090 | await self.sleep(1) 1091 | 1092 | async def network_detector(self,hosts,dns_server): 1093 | for host in hosts: 1094 | ipv4, ipv6 = await asyncio.gather(self.dns_query_worker(host, 'A', False, dns_server, 0.5),self.dns_query_worker(host, 'AAAA', False, dns_server, 0.5)) 1095 | if ipv4 or ipv6: 1096 | return True 1097 | return False 1098 | 1099 | async def has_ipv4(self): 1100 | tasks = [b'www.baidu.com', b'www.qq.com', b'www.jd.com'] 1101 | self.ipv4 = await self.network_detector(tasks, {'ipv4': True, 'ipv6': False}) 1102 | return self.ipv4 1103 | 1104 | async def has_ipv6(self): 1105 | tasks = [b'www.baidu.com', b'www.qq.com', b'www.jd.com'] 1106 | self.ipv6 = await self.network_detector(tasks, {'ipv4': False, 'ipv6': True}) 1107 | return self.ipv6 1108 | 1109 | def has_internet(self): 1110 | if self.ipv4 or self.ipv6: 1111 | return True 1112 | if self.ipv4 is False and self.ipv6 is False: 1113 | return False 1114 | return None 1115 | 1116 | async def internet_refresh_cache(self): 1117 | while True: 1118 | s = time.time() 1119 | try: 1120 | await asyncio.gather(self.has_ipv4(), self.has_ipv6()) 1121 | except Exception as error: 1122 | traceback.clear_frames(error.__traceback__) 1123 | error.__traceback__ = None 1124 | finally: 1125 | if time.time() - s < 10: 1126 | await self.sleep(10) 1127 | 1128 | @staticmethod 1129 | def is_ipv6(ip): 1130 | try: 1131 | if b':' in ip and b'::ffff:' not in ip: 1132 | return True 1133 | except ValueError as error: 1134 | traceback.clear_frames(error.__traceback__) 1135 | error.__traceback__ = None 1136 | return False 1137 | 1138 | async def auto_resolve(self,host): 1139 | if self.ipv4 and self.ipv6: 1140 | return await self.resolve('ALL', host) 1141 | elif self.ipv4: 1142 | return await self.resolve('A', host) 1143 | elif self.ipv6: 1144 | return await self.resolve('AAAA', host) 1145 | else: 1146 | return [], None 1147 | 1148 | async def resolve(self,q_type,host,doh=False): 1149 | if self.is_ip(host): 1150 | host = host.replace(b'::ffff:',b'') 1151 | return [host], 2147483647 1152 | elif host not in self.dns_records: 1153 | await self.dns_query(host, doh) 1154 | elif time.time() >= self.dns_records[host][1]: 1155 | await self.dns_query(host, doh) 1156 | if host in self.dns_records: 1157 | TTL = self.dns_records[host][2] 1158 | if q_type != 'ALL': 1159 | IPs = self.dns_records[host][0][q_type] 1160 | else: 1161 | IPs = self.dns_records[host][0]['A'] + self.dns_records[host][0]['AAAA'] 1162 | return IPs, TTL 1163 | else: 1164 | return [], None 1165 | 1166 | async def dns_query(self,host,doh): 1167 | future = self.loop.create_future() 1168 | if host in self.dns_futures_map: 1169 | self.dns_futures_map[host].add(future) 1170 | else: 1171 | self.dns_futures_map[host] = {future} 1172 | if len(self.dns_futures_map[host]) == 1: 1173 | self.loop.create_task(self.dns_query_manager(host, doh)) 1174 | await future 1175 | 1176 | async def dns_query_manager(self,host,doh): 1177 | ipv4, ipv6 = None, None 1178 | for x in range(10): 1179 | ipv4, ipv6 = await asyncio.gather(self.dns_query_worker(host, 'A', doh, timeout=0.2), self.dns_query_worker(host, 'AAAA', doh, timeout=0.2)) 1180 | if ipv4 or ipv6: 1181 | break 1182 | if not ipv4 and not ipv6: 1183 | ipv4, ipv6 = await asyncio.gather(self.dns_query_worker(host, 'A', not doh), self.dns_query_worker(host, 'AAAA', not doh)) 1184 | if ipv4 or ipv6: 1185 | doh = not doh 1186 | if not ipv4: 1187 | ipv4 = ([], 2147483647) 1188 | if not ipv6: 1189 | ipv6 = ([], 2147483647) 1190 | if ipv4[0] or ipv6[0]: 1191 | self.dns_records[host] = ({'A': ipv4[0], 'AAAA': ipv6[0], 'doh': doh}, time.time() + min(ipv4[1], ipv6[1]), min(ipv4[1], ipv6[1])) 1192 | if host in self.dns_futures_map: 1193 | while self.dns_futures_map[host]: 1194 | future = self.dns_futures_map[host].pop() 1195 | future.set_result(True) 1196 | 1197 | async def dns_query_worker(self, host, q_type, doh, dns_server=None, timeout=5): 1198 | try: 1199 | if dns_server is None: 1200 | dns_server = {'ipv4': True, 'ipv6': True} 1201 | mq_type = self.dns_get_mq_type(q_type) 1202 | tasks = await self.dns_make_tasks(host, mq_type, doh, dns_server, timeout) 1203 | if not tasks: 1204 | return None 1205 | done, pending, = await asyncio.wait(tasks, return_when=asyncio.FIRST_COMPLETED) 1206 | for x in pending: 1207 | x.cancel() 1208 | responses_raw = [] 1209 | for x in range(len(done)): 1210 | response_raw = done.pop().result() 1211 | if response_raw: 1212 | responses_raw.append(response_raw) 1213 | if not responses_raw: 1214 | return None 1215 | IPs, TTL = self.dns_process_raw_responses(responses_raw, mq_type) 1216 | if IPs and TTL: 1217 | return IPs, TTL 1218 | return None 1219 | except Exception as error: 1220 | traceback.clear_frames(error.__traceback__) 1221 | error.__traceback__ = None 1222 | 1223 | def dns_process_raw_responses(self, responses_raw, mq_type): 1224 | for x in responses_raw: 1225 | result = self.dns_decoder(x[0], mq_type, x[1]) 1226 | if result['error'] == None and result['answers']: 1227 | IPs, TTLs = [], [] 1228 | for y in result['answers']: 1229 | IPs.append(y['rdata']) 1230 | TTLs.append(y['q_ttl']) 1231 | return IPs, TTLs[0] 1232 | elif result['error'] == 3 or result['error'] == 2: 1233 | return [None], 3600 1234 | return None, None 1235 | 1236 | @staticmethod 1237 | def dns_get_mq_type(q_type): 1238 | if q_type == 'A': 1239 | return 1 1240 | elif q_type == 'AAAA': 1241 | return 28 1242 | elif q_type == 'CNAME': 1243 | return 5 1244 | else: 1245 | raise Exception 1246 | 1247 | async def dns_make_tasks(self, host, mq_type, doh, dns_server, timeout): 1248 | try: 1249 | tasks = [] 1250 | if doh: 1251 | tasks += await self.dns_make_doh_tasks(host, mq_type, dns_server) 1252 | else: 1253 | tasks += self.dns_make_normal_tasks(host, mq_type, dns_server, timeout) 1254 | return tasks 1255 | except Exception as error: 1256 | traceback.clear_frames(error.__traceback__) 1257 | error.__traceback__ = None 1258 | 1259 | async def dns_make_doh_tasks(self, host, mq_type, dns_server): 1260 | tasks = [] 1261 | for x in self.config['doh_dns']: 1262 | if self.ipv4 and dns_server['ipv4']: 1263 | v4 = await self.resolve('A', x, False) 1264 | if v4: 1265 | query, ID = self.dns_encoder(host,mq_type) 1266 | tasks.append(asyncio.create_task(self.dns_make_doh_query(query, ID, (v4[0], 443), x))) 1267 | if self.ipv6 and dns_server['ipv6']: 1268 | v6 = await self.resolve('AAAA', x, False) 1269 | if v6: 1270 | query, ID = self.dns_encoder(host, mq_type) 1271 | tasks.append(asyncio.create_task(self.dns_make_doh_query(query, ID, (v6[0], 443), x))) 1272 | return tasks 1273 | 1274 | def dns_make_normal_tasks(self, host, mq_type, dns_server, timeout): 1275 | tasks = [] 1276 | for x in self.config['normal_dns']: 1277 | if ((not self.ipv4 and (self.ipv4 or self.ipv6)) or not dns_server['ipv4']) and not self.is_ipv6(x): 1278 | continue 1279 | if ((not self.ipv6 and (self.ipv4 or self.ipv6)) or not dns_server['ipv6']) and self.is_ipv6(x): 1280 | continue 1281 | query, ID = self.dns_encoder(host, mq_type) 1282 | tasks.append(asyncio.create_task(self.dns_make_normal_query(query, ID, (x, 53), timeout))) 1283 | return tasks 1284 | 1285 | async def dns_make_normal_query(self, query, ID, address, timeout): 1286 | s = None 1287 | try: 1288 | if self.is_ipv6(address[0]): 1289 | s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM) 1290 | else: 1291 | s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 1292 | s.setblocking(False) 1293 | await self.loop.sock_connect(s, (address[0].decode('utf-8'),address[1])) 1294 | await self.loop.sock_sendall(s, query) 1295 | try: 1296 | result = await asyncio.wait_for(self.loop.sock_recv(s, 512), timeout) 1297 | except asyncio.exceptions.TimeoutError: 1298 | raise Exception('timeout') 1299 | return result, ID 1300 | except Exception as error: 1301 | if str(error) != 'timeout': 1302 | await self.sleep((lambda x: 1 if x < 1 else x)(timeout)) 1303 | traceback.clear_frames(error.__traceback__) 1304 | error.__traceback__ = None 1305 | finally: 1306 | await self.clean_up(s) 1307 | 1308 | async def dns_make_doh_query(self, query, ID, address, hostname): 1309 | server_writer = None 1310 | try: 1311 | server_reader, server_writer = await self.open_connection(address[0], address[1], True, hostname, 2) 1312 | server_writer.write(b'GET /dns-query?dns=' + base64.b64encode(query).rstrip(b'=') +b' HTTP/1.1\r\nHost: '+ hostname +b'\r\nContent-type: application/dns-message\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62\r\n\r\n') 1313 | await server_writer.drain() 1314 | result = await asyncio.wait_for(server_reader.read(16384),2) 1315 | result = result[result.find(b'\r\n\r\n')+4:] 1316 | return result, ID 1317 | except Exception as error: 1318 | await self.sleep(4) 1319 | traceback.clear_frames(error.__traceback__) 1320 | error.__traceback__ = None 1321 | finally: 1322 | await self.clean_up(server_writer) 1323 | 1324 | async def dns_clear_cache(self): 1325 | while True: 1326 | try: 1327 | for x in list(self.dns_records.keys()): 1328 | if time.time() > self.dns_records[x][1]: 1329 | del self.dns_records[x] 1330 | except Exception as error: 1331 | traceback.clear_frames(error.__traceback__) 1332 | error.__traceback__ = None 1333 | finally: 1334 | await self.sleep(10) 1335 | 1336 | def exception_handler(self, loop, context): 1337 | pass 1338 | 1339 | 1340 | class yashmak_log(): 1341 | def __init__(self, config): 1342 | self.config = config 1343 | self.host_list = dict() 1344 | self.log = [] 1345 | self.local_path = self.config['local_path'] 1346 | self.start_time = self.config['start_time'] 1347 | self.create_loop() 1348 | 1349 | def create_loop(self): 1350 | self.loop = asyncio.new_event_loop() 1351 | self.loop.set_exception_handler(self.exception_handler) 1352 | self.loop.create_task(self.create_server()) 1353 | self.loop.create_task(self.write_host()) 1354 | self.loop.create_task(self.write_log()) 1355 | self.loop.run_forever() 1356 | 1357 | def create_server(self): 1358 | listener = socket.create_server(address=('127.0.0.1', self.config['log_port']), family=socket.AF_INET, dualstack_ipv6=False) 1359 | return asyncio.start_server(client_connected_cb=self.handler, sock=listener, backlog=2048) 1360 | 1361 | async def handler(self, client_reader, client_writer): 1362 | try: 1363 | host = await asyncio.wait_for(client_reader.read(65535), 20) 1364 | if host == b'f31d7515-d90f-4eba-a4a9-8eac1d0a423e': 1365 | await self.log_receiver(client_reader) 1366 | else: 1367 | raise Exception('Invalid Connection') 1368 | except Exception as error: 1369 | traceback.clear_frames(error.__traceback__) 1370 | error.__traceback__ = None 1371 | finally: 1372 | await self.clean_up(client_writer) 1373 | 1374 | async def log_receiver(self, client_reader): 1375 | buffer = b'' 1376 | while True: 1377 | buffer += await client_reader.read(65535) 1378 | position = buffer.find(b'\r\n\r\n') 1379 | data, key, instruction = buffer[:position].split(b'\r\n') 1380 | buffer = buffer[position + 4:] 1381 | if instruction == b'host': 1382 | data = data.decode('utf-8') 1383 | key = key.decode('utf-8') 1384 | data = data[1:-1] 1385 | data = data.replace("b'", '') 1386 | data = data.replace("'", '') 1387 | data = data.split(', ') 1388 | if key not in self.host_list: 1389 | self.host_list[key] = set() 1390 | for x in data: 1391 | self.host_list[key].add(x) 1392 | elif instruction == b'log': 1393 | data = data.decode('utf-8') 1394 | data = data[1:-1] 1395 | data = data.decode('utf-8') 1396 | data = data.replace('"', '') 1397 | data = data.replace('),', ')),') 1398 | data = data.split('), ') 1399 | for x in data: 1400 | self.log.append(x) 1401 | 1402 | async def write_host(self): 1403 | while True: 1404 | for x in self.host_list: 1405 | if x != 'blacklist' and len(self.host_list[x]) > 0: 1406 | if os.path.exists(self.local_path + '/Cache/' + x + '.json'): 1407 | with open(self.local_path + '/Cache/' + x + '.json', 'r') as file: 1408 | data = json.load(file) 1409 | for y in data: 1410 | self.host_list[x].add(y) 1411 | with open(self.local_path + '/Cache/' + x + '.json', 'w') as file: 1412 | json.dump(list(self.host_list[x]), file) 1413 | self.host_list[x].clear() 1414 | await asyncio.sleep(60) 1415 | 1416 | async def write_log(self): 1417 | if not os.path.exists(self.local_path + '/Logs/'): 1418 | os.makedirs(self.local_path + '/Logs/') 1419 | while True: 1420 | with open(self.local_path + '/Logs/' + time.strftime("%Y%m%d%H%M%S", self.start_time) + '.json', 'a+') as file: 1421 | for x in self.log: 1422 | file.write(x+'\n\n') 1423 | self.log.clear() 1424 | await asyncio.sleep(60) 1425 | 1426 | @staticmethod 1427 | async def clean_up(writer1=None, writer2=None): 1428 | try: 1429 | if writer1 != None: 1430 | writer1.close() 1431 | except Exception as error: 1432 | traceback.clear_frames(error.__traceback__) 1433 | error.__traceback__ = None 1434 | try: 1435 | if writer2 != None: 1436 | writer2.close() 1437 | except Exception as error: 1438 | traceback.clear_frames(error.__traceback__) 1439 | error.__traceback__ = None 1440 | try: 1441 | if writer1 != None: 1442 | await writer1.wait_closed() 1443 | except Exception as error: 1444 | traceback.clear_frames(error.__traceback__) 1445 | error.__traceback__ = None 1446 | try: 1447 | if writer2 != None: 1448 | await writer2.wait_closed() 1449 | except Exception as error: 1450 | traceback.clear_frames(error.__traceback__) 1451 | error.__traceback__ = None 1452 | 1453 | def exception_handler(self, loop, context): 1454 | pass 1455 | 1456 | 1457 | class yashmak(): 1458 | def __init__(self): 1459 | self.load_config() 1460 | self.load_lists() 1461 | self.get_time() 1462 | self.edit_iptables() 1463 | 1464 | def run_forever(self): 1465 | # start log server 1466 | p = multiprocessing.Process(target=yashmak_log, args=(self.config,)) 1467 | p.start() 1468 | 1469 | # start DNS server 1470 | p = multiprocessing.Process(target=yashmak_dns, args=(self.config,)) 1471 | p.start() 1472 | 1473 | # start normal workers 1474 | for x in range(os.cpu_count()): 1475 | p = multiprocessing.Process(target=yashmak_worker, args=(self.config,)) 1476 | p.start() 1477 | 1478 | # start spare workers 1479 | self.run_spares() 1480 | 1481 | def run_spares(self): 1482 | config = self.config 1483 | while True: 1484 | config['ip'] = '::' 1485 | config['port'] = self.get_calculated_port() 1486 | ps = [] 1487 | for x in range(os.cpu_count()): 1488 | p = multiprocessing.Process(target=yashmak_worker, args=(config, )) 1489 | p.start() 1490 | ps.append(p) 1491 | while config['port'] == self.get_calculated_port(): 1492 | time.sleep(1) 1493 | if os.popen('''systemctl list-unit-files | grep "Yashmak"''').read() == "": 1494 | for x in ps: 1495 | x.kill() 1496 | else: 1497 | os.system("systemctl restart Yashmak") 1498 | 1499 | def get_time(self): 1500 | client = ntplib.NTPClient() 1501 | offset = None 1502 | while offset == None: 1503 | try: 1504 | response = client.request('pool.ntp.org', version=3, timeout=1) 1505 | offset = response.offset 1506 | except Exception as error: 1507 | traceback.clear_frames(error.__traceback__) 1508 | error.__traceback__ = None 1509 | self.config['utc_difference'] = offset 1510 | self.config['start_time'] = time.localtime() 1511 | 1512 | def edit_iptables(self): 1513 | try: 1514 | os.system("iptables -P INPUT ACCEPT") 1515 | os.system("iptables -P OUTPUT ACCEPT") 1516 | os.system("ip6tables -P INPUT ACCEPT") 1517 | os.system("ip6tables -P OUTPUT ACCEPT") 1518 | except Exception as error: 1519 | traceback.clear_frames(error.__traceback__) 1520 | error.__traceback__ = None 1521 | 1522 | @staticmethod 1523 | def find_ports(exclude=None): 1524 | ports = set() 1525 | while len(ports) < 1: 1526 | R = str(random.randint(2000, 8000)) 1527 | if int(R) in exclude: 1528 | continue 1529 | if "windows" in platform.system().lower(): 1530 | if os.popen("netstat -aon | findstr 127.0.0.1:" + R).read() == "" and os.popen("netstat -aon | findstr [::1]:" + R).read() == "": 1531 | ports.add(int(R)) 1532 | elif "linux" in platform.system().lower(): 1533 | if os.popen("netstat -tulpn | grep ':" + R + "'").read() == "": 1534 | ports.add(int(R)) 1535 | ports = list(ports) 1536 | return ports.pop(0) 1537 | 1538 | def load_config(self): 1539 | self.local_path = os.path.abspath(os.path.dirname(sys.argv[0])) 1540 | if os.path.exists(self.local_path + '/config.json'): 1541 | with open(self.local_path + '/config.json', 'r') as file: 1542 | content = file.read() 1543 | content = self.translate(content) 1544 | self.config = json.loads(content) 1545 | self.config['uuid'] = self.UUID_detect(set(list(map(self.encode, self.config['uuid'])))) 1546 | self.config['port'] = int(self.config['port']) 1547 | self.config['normal_dns'] = list(map(self.encode, self.config['normal_dns'])) 1548 | if 'doh_dns' in self.config: 1549 | self.config['doh_dns'] = list(map(self.encode, self.config['doh_dns'])) 1550 | else: 1551 | self.config['doh_dns'] = [] 1552 | if 'proxy' in self.config: 1553 | for x in self.config['proxy']: 1554 | self.config['proxy'][x]['uuid'] = self.config['proxy'][x]['uuid'].encode('utf-8') 1555 | self.config['proxy'][x]['port'] = int(self.config['proxy'][x]['port']) 1556 | self.config['proxy'][x]['host'] = self.config['proxy'][x]['host'].encode('utf-8') 1557 | self.config['local_path'] = self.local_path 1558 | self.config['dns_port'] = self.find_ports([self.config['port']]) 1559 | self.config['log_port'] = self.find_ports([self.config['port'], self.config['dns_port']]) 1560 | else: 1561 | example = {'geoip_list_path': '','black_list_path': '','host_list_path': '','cert': '', 'key': '', 'uuid': [''], 'normal_dns': [''], 1562 | 'doh_dns': [''], 'ip': '', 'port': ''} 1563 | with open(self.local_path + '/config.json', 'w') as file: 1564 | json.dump(example, file, indent=4) 1565 | 1566 | def load_lists(self): 1567 | self.host_list = dict() 1568 | self.black_list = dict() 1569 | self.proxy_list = dict() 1570 | self.dns_records = dict() 1571 | self.geoip_list = [] 1572 | 1573 | with open(self.config['geoip_list_path'], 'r') as file: 1574 | data = json.load(file) 1575 | for x in data: 1576 | network = ipaddress.ip_network(x) 1577 | self.geoip_list.append([int(network[0]),int(network[-1])]) 1578 | for x in ['10.0.0.0/8','100.64.0.0/10','127.0.0.0/8','169.254.0.0/16','172.16.0.0/12','192.168.0.0/16','::1/128','fd00::/8','fe80::/10']: 1579 | network = ipaddress.ip_network(x) 1580 | self.geoip_list.append([int(network[0]),int(network[-1])]) 1581 | self.geoip_list.sort() 1582 | 1583 | if not os.path.exists(self.local_path + '/Cache/'): 1584 | os.makedirs(self.local_path + '/Cache/') 1585 | for x in self.config['uuid']: 1586 | self.host_list[x] = set() 1587 | 1588 | with open(self.config['black_list_path'], 'r') as file: 1589 | data = json.load(file) 1590 | for key in list(data): 1591 | if key != 'tag': 1592 | value = data[key].encode('utf-8') 1593 | del data[key] 1594 | data[key.replace('*', '').encode('utf-8')] = value 1595 | for key in list(data['tag']): 1596 | value = data['tag'][key].encode('utf-8') 1597 | del data['tag'][key] 1598 | data['tag'][key.replace('*', '').encode('utf-8')] = value 1599 | data[None] = None 1600 | self.black_list = data 1601 | 1602 | with open(self.config['host_list_path'], 'r') as file: 1603 | data = json.load(file) 1604 | for x in data: 1605 | self.dns_records[x.encode('utf-8')] = (data[x], float('inf')) 1606 | 1607 | if 'proxy_list_path' in self.config: 1608 | with open(self.config['proxy_list_path'], 'r') as file: 1609 | data = json.load(file) 1610 | for key in data: 1611 | self.proxy_list[key] = set() 1612 | for host in data[key]: 1613 | self.proxy_list[key].add(host.replace('*', '').encode('utf-8')) 1614 | 1615 | self.config['host_list'] = self.host_list 1616 | self.config['black_list'] = self.black_list 1617 | self.config['proxy_list'] = self.proxy_list 1618 | self.config['geoip_list'] = self.geoip_list 1619 | self.config['dns_records'] = self.dns_records 1620 | 1621 | @staticmethod 1622 | def UUID_detect(UUIDs): 1623 | for x in UUIDs: 1624 | if len(x) != 36: 1625 | raise Exception 1626 | return UUIDs 1627 | 1628 | @staticmethod 1629 | def translate(content): 1630 | return content.replace('\\', '/') 1631 | 1632 | @staticmethod 1633 | def encode(data): 1634 | return data.encode('utf-8') 1635 | 1636 | @staticmethod 1637 | def get_today(): 1638 | today = int(str(datetime.datetime.utcnow())[:10].replace('-', '')) ** 3 1639 | return int(str(today)[today % 8:8] + str(today)[0:today % 8]) 1640 | 1641 | def get_calculated_port(self): 1642 | return 1024 + self.get_today() % 8976 1643 | 1644 | 1645 | if __name__ == '__main__': 1646 | server = yashmak() 1647 | server.run_forever() -------------------------------------------------------------------------------- /chinalist.json: -------------------------------------------------------------------------------- 1 | ["*.quyou.com", "*.kouyuxia.com", "*.91yunwan.com", "keep.com", "weiyun.com", "*.globesci.com", "bl.com", "*.oray.net", "*.gitee.io", "*.dydog.org", "*.ssp86.com", "*.xc.zhongguohao123.com", "*.ypicw.cn", "*.zhishisenlin.com", "*.c-ctrip.com", "*.ms.huanlecdn.com", "*.tmmu.edu.cn", "*.t-each.net", "*.cloud.hicloud.com", "*.ah-bjia.cn", "*.mse.sogou.com", "*.chinaz.net", "*.coolapk.com", "*.lkme.cc", "*.ch1.ctc.data.tv002.com", "*.cnliken.com", "*.tubedown.cn", "*.izhuolin.cn", "*.tim.qq.com", "*.sunlogin.com", "*.easeye.com.cn", "*.mtime.com", "*.699pic.com", "csdn.net", "*.moofeng.cn", "myzte.com", "*.5gyouxiwang.com", "*.open.weixin.qq.com", "*.junshi.cn", "*.biaoqingmm.com", "*.smxdiy.com", "arick.net", "*.shut123.com", "vivo.com", "*.maotuying.com", "*.elecfans.com", "*.janurary15.com", "*.xylink.com", "xn--xhq9mt12cf5v.ren", "*.ikewo.cn", "*.2345.cc", "*.higway.net", "*.tt1l.cn", "*.7881.com", "*.ict.cas.cn", "*.10080.bj.cn", "*.mingyantong.com", "*.ztbbxz.com", "*.ccia-cleaning.org", "*.11185.cn", "*.zitaoh.cn", "*.edrawsoft.cn", "*.home.fang.com", "*.patch.battle.net", "*.itfanr.cc", "*.121down.com", "kechuang.org", "*.cqjianyi.com", "anjuke.com", "*.orangesgame.com", "*.biligame.com", "*.mtv123.com", "*.jjckb.cn", "*.guanggoo.com", "*.abtastychina.cn", "*.7moor-fs2.com", "*.ternlet.com", "*.china-embassy.org", "*.douyaobuy.com", "xmind.cn", "*.shshuoshu.com", "*.liantu.com", "*.jd-tv.com", "*.chuangkit.com", "*.zujuanyi.com", "lpjxzs.com", "*.321mh.com", "*.500cache.com", "*.3.cn", "*.win4000.com", "dahebao.cn", "*.oos-js.ctyunapi.cn", "*.kugou.com", "*.zeyouquan.com", "*.qiumibao.com", "*.7moor.com", "*.izhiliao.com", "*.szonline.net", "*.gzweisin.com", "*.shkxfh.com", "*.ssl.qhres.com", "*.easeyedelivery.com", "*.xunlei.com", "*.douyinpic.com", "*.cathaycentury.com", "*.youxiake.com", "*.life.ac.cn", "*.mikannovel.com", "*.chinasinyi.com", "*.sendcloud.net", "*.log.wtlogin.qq.com", "*.120askimages.com", "*.journalreport.cn", "*.uiu.cc", "*.cns.com.cn", "*.4hou.com", "*.dusays.com", "*.anfensi.com", "*.user.kanimg.com", "*.npsmeter.cn", "*.dianshihome.com", "*.xtc-edu.com", "*.mini.wps.cn", "*.chinamagnesium.org", "*.flash.cn", "*.secpulse.com", "*.hao.360.cn", "*.kj-cy.cn", "*.360jie.com.cn", "*.getui.com", "*.cdn.youke.co", "*.yinxiang.com", "*.1010earth.com", "*.hellorf.com", "*.ickey.cn", "*.mtime.cn", "*.dhcc.com.cn", "*.yyhao.com", "*.zhixueyun.com", "*.bidcenter.com.cn", "*.vckbase.com", "*.mxgtxt.com", "*.citics.com", "*.xhby.net", "*.9weg7b.com", "*.fanyi100.com.cn", "*.tencentmusic.com", "*.zsb.sjedu.cn", "*.rising.com.cn", "*.u1.huluxia.com", "*.sdologin.sdo.com", "ccreports.com.cn", "*.xzbu.com", "*.egesckx.cn", "*.msspgw.cn", "*.kekejp.com", "*.heweather.com", "*.yjcf360.com", "*.peopledaily.com.cn", "*.sj33.cn", "*.csair.com", "*.alipay.com", "*.189.net.cn", "*.midifan.com", "*.ssl-images-amazon.com", "*.htimg.com", "*.btnvlvt.cn", "*.optaim.com", "*.unqd.chnqc315.cn", "*.123cha.com", "*.cn3k5.com", "*.qiye.163.com", "*.ieltsbro.com", "*.vaobqjy.cn", "*.aifushu.com", "*.cpooo.com", "*.qhmsg.com", "*.biliapi.com", "*.xinshipu.com", "*.xker.com", "*.boe.com", "*.ixueshu.com", "zyzj360.com", "*.naibabiji.com", "baidu.com", "*.msvodx.com", "*.fhyx.com", "*.dogecloud.com", "*.cnpython.com", "*.i8ggwm.com", "*.jzb.com", "*.qsmdeyz.cn", "*.ecqun.com", "*.shobserver.com", "*.liankexing.com", "*.xahouqi.com", "*.eqh5.com", "*.ceair.com", "expreview.com", "*.xtgreat.com", "*.exc.mob.com", "*.newyx.net", "*.91rjz.com", "*.palm-ad.cn", "*.flyai.com", "*.nongyekx.cn", "*.16163.com", "*.the4can.com", "*.ffquan.cn", "*.sinaapp.com", "*.gdgafz.alldayfilm.com", "*.cibntv.net", "*.cugb.edu.cn", "*.zhe-xiang.com", "*.webterren.com", "*.xywy.com", "*.voicecloud.cn", "*.tdm.qq.com", "*.rtc.qq.com", "*.sf-tech.com.cn", "*.haina.com", "*.wanbianip.com", "*.cncec-fcc.com", "*.amazon-adsystem.com", "*.ujs.edu.cn", "*.eol.cn", "*.147xz.com", "*.youxi369.com", "*.10lun.com", "*.ebiotrade.com", "cywl.net", "*.aq.qq.com", "*.vguan.net", "*.dowater.com", "*.yiqishai.com", "*.178.com", "*.gts-lab.com", "*.vivo.com.cn", "*.wjw.cn", "*.looyu.com", "*.bjzghd.com", "*.yuntongshuda.com", "*.wenshushu.cn", "*.xssousou.com", "*.pingguolv.com", "*.appadhoc.com", "*.cloud-clone.cn", "*.liwei8090.com", "*.keaimeitu.com", "*.1688.com", "*.yasuotu.com", "*.emui.dbankcloud.com", "*.zixuekong.com", "*.zsci.com.cn", "*.gg.uuu9.com", "*.cntv.cn", "*.alibabagroup.com", "*.jkcsjd.com", "*.snscz.com", "*.hubpd.com", "*.kanbilibili.com", "*.wlcbjm.cc", "*.guokr.com", "*.emath.ac.cn", "*.ktb.wqdian.net", "*.ename.com.cn", "*.ipv6-test.com", "*.t58b.com", "*.cnreagent.com", "honor.cn", "*.scimall.org.cn", "*.gotoip11.com", "*.acimg.cn", "*.node.ppio.cloud", "*.quwangming.com", "*.koolearn.com", "*.aihecong.com", "*.uwenku.com", "*.com.prod.hosts.ooklaserver.net", "*.10086.cn", "*.moore.live", "*.4007007007.com", "*.alibaba.com", "*.pk6636.com", "*.lapin365.com", "*.itpub.net", "*.3733.com", "*.panmeme.com", "*.platform.hicloud.com", "*.pctowap.com", "*.static.api.fotomore.com", "*.woskj2.com", "*.ictr.cn", "*.chuqiutv.com", "*.bstcine.com", "*.segmentfault.com", "*.coolzou.com", "ifeng.com", "*.wbdcrmn.cn", "*.cdn.namejin.com", "*.mucang.cn", "*.wjx.cn", "*.tgpa.qq.com", "*.dakao8.com", "*.mingxing.com", "*.quyaoya.com", "*.tupian1234.com", "*.taiqingjiu.com", "*.duoyi.com", "*.music.qq.com", "bankofshanghai.com", "*.66game.cn", "*.jeepxie.net", "*.jhgtgb.com", "*.houyicaiji.com", "*.di2y21.top", "*.irs01.com", "*.fang.com", "*.h41s.com", "*.meituan.net", "*.mil.cn", "*.phsciencedata.cn", "*.igengmei.com", "*.51offer.com", "*.irs03.com", "522dy.com", "*.m.jd.com", "*.emeiju.com", "goapp.vip", "*.xiawu.com", "*.didixk.com", "*.lixiang.com", "*.yishihui.com", "*.oneplusbbs.com", "*.talk.u-tools.cn", "*.hcharts.cn", "*.snowcam.cn", "*.nmgxwhz.com", "*.memewan.com", "*.jianshu.com", "bankcomm.com", "*.hexun.com", "*.100yy.com", "*.63diy.com", "*.pv.com.cn", "*.dfxwdc.com", "*.yhcqw.com", "*.pingan.com", "*.imeitou.com", "*.ebama.net", "*.588ku.com", "*.city8.com", "*.share.mob.com", "stpaper.cn", "*.s2.udesk.cn", "*.boetech.cn", "*.femdetection.com", "*.woaipj.com", "*.wandoujia.com", "*.caihongman.com", "*.guoyb.com", "*.va.huya.com", "*.51xuexiaoyi.com", "*.qugaota.com", "netease.im", "gitee.com", "*.66993.top", "huanqiukexue.com", "*.nflchina.com", "*.hnol.net", "*.video.taobao.com", "decathlon.com.cn", "*.poly.artron.net", "*.im.taobao.com", "*.bangboss.com", "*.3600.com", "*.passport.pplive.com", "*.koudaitong.com", "*.win7xzb.com", "*.yihu.com", "*.fangdd.com", "*.vbsuvb.com", "*.wnfrbj.com", "*.ws.symantec.com", "*.pptv.com", "*.yeah.net", "*.gzc.svp.tencent-cloud.com", "*.nkscdn.com", "*.new-air.cn", "*.dkielts.com", "*.nhaidu.net", "*.eyunsou.com", "*.meili1123.com", "*.reneelab.com.cn", "zijieke.com", "*.360kad.com", "kmnbz.cn", "huijidata.com", "*.xzglasses.com", "*.chedan5.cn", "*.pxmsw.cn", "*.bosaiche.com", "*.beigene.cn", "*.xiguaimg.com", "*.ijianji.com", "*.bandwagonhost.net", "*.jingyanben.com", "*.wecrtfr.com", "*.axnsc.cn", "*.pin-dao.cn", "*.itdcw.com", "*.docs4dev.com", "*.aliyuncs.com", "*.xfinfr.com", "*.shunxinyuancaiwu.cn", "*.dl.pinyuncloud.com", "*.rong360.com", "*.st.dl.eccdnx.com", "*.people.com.cn", "*.zangaopet.com", "*.finesz.com", "stackoverflow.club", "*.msi.com", "*.itotimes.com", "*.mbxt.net", "*.ssp.eastdaymedia.com.cn", "*.adsrvr.cn", "*.duyou8.com", "xn--2vra6db.com", "*.xianjichina.com", "*.magook.com", "*.haomeili.net", "*.secretmine.net", "*.isfashion.com", "soomal.com", "*.tianyancha.com", "*.shangyexinzhi.com", "people.com.cn", "*.python66.com", "rumenz.com", "*.weiyun.com", "*.i.gdt.qq.com", "*.cocoachina.com", "*.bszx18.com", "*.api.zbj.com", "*.testipv6.cn", "*.im.jiguang.cn", "*.fastapi.net", "*.ubisoft.com.cn", "*.flstudiochina.com", "*.wa5as4.com", "*.secrss.com", "*.platform.dbankcloud.com", "*.fotoe.com", "*.toujing9.top", "*.smartstudy.com", "*.qiyetuozhan.com", "*.gzcl999.com", "*.hnnzwhyy.com", "*.data.mob.com", "*.arick.net", "*.clarins.com.cn", "*.ruiyang-hy.com", "*.39.net", "*.gtnqk.com", "*.baidu.com.btba3.xiaoeryi.com", "*.xlxba.com", "*.acla.org.cn", "*.luoqiuzw.com", "*.haimacloud.com", "*.idqqimg.com", "*.qimiao.com", "*.beiwaiguoji.com", "*.contents.m.liebao.cn", "*.xdfsjj.com", "*.tenpay.com", "*.myapp.com", "boc.cn", "*.jiasuba.com", "*.atjiang.com", "*.diyifanwen.com", "*.cili001.com", "*.drmercola.cn", "*.cytus2.dragonest.com", "*.longre.com", "*.adm.qianfanyun.com", "*.l.qq.com", "*.cvmart.net", "*.asczwa.com", "i2abc.com", "*.joinfang.com", "*.pengyou.com", "*.gaosan.tgsrdjkx.top", "*.parawikis.com", "*.apple.com.cn", "*.xitongzhijia.net", "xingsom.net", "*.wp-china-yes.net", "*.yfscdn.net", "*.yue365.com", "*.atpanel.com", "*.vamaker.com", "hainiubl.com", "*.xauat.edu.cn", "*.aliyun.com", "*.flutterchina.club", "*.sciencenet.cn", "*.xuexi.cn", "*.freepub.net", "*.qhres.com", "*.cn-hangzhou.oss.aliyun-inc.com", "itbaguanan.com", "hellowland.clu", "*.shanghaipasteur.cas.cn", "*.manimal.happyelements.cn", "*.jitatang.com", "*.wenmi.com", "*.moonbasa.com", "*.803.com.cn", "*.minecraftxz.com", "*.v3mh.com", "*.eiisys.com", "*.keep.com", "*.mail.126.com", "planiec.com", "*.mediav.com", "*.openservice.kankanews.com", "*.myzaker.com", "*.qishenga.com", "*.langlib.com", "*.xcz.im", "*.wpscdn.cn", "*.nxjcwh.com", "*.salongweb.com", "*.boqii.com", "*.langzi.fun", "itjcc.com", "1024tools.com", "*.yxtun.com", "*.heneng.net.cn", "*.renlekang.com", "*.cn-zhangjiakou.log.aliyuncs.com", "*.crucial.cn", "*.nmgfda.com", "*.07swz.com", "*.51sdx.com", "*.fenxi.com", "*.yuwenba.cn", "*.wx1986.com", "*.cankaoxiaoxi.com", "*.aiseet.atianqi.com", "*.lianshijie.com", "*.xiaobao100.com", "toupiao9.com", "*.cctime.com", "*.yahui.cc", "*.f.360.cn", "*.vks.cn", "*.api.oaid.wocloud.cn", "*.video.meipai.com", "*.6463.com", "*.appsimg.com", "*.heygugu.com", "*.mydot.com.cn", "*.aihami.com", "*.zaixian-fanyi.com", "*.downcc.com", "*.1616.net", "*.mail.qq.com", "*.codoon.com", "*.bbs.soufun.com", "*.nongzhifu.cn", "*.wendangwang.com", "*.kuaikanmanhua.com", "*.bathome.net", "*.flvcd.com", "*.qhupdate.com", "*.jiaoyimao.com", "*.tdx.com.cn", "*.edifier.com", "2019cdn.vip", "*.nuonuo.com", "*.pindi88.com", "*.xjtu.edu.cn", "*.azchcdnk.com", "*.zixizixi.cn", "*.vipshop.com", "*.dianwannan.com", "*.byzhihuo.com", "*.safehoo.com", "pm25.com", "huoding.com", "*.fidelity.com.cn", "*.i-meto.com", "*.yanghua.net", "oppo.com", "*.v587xpt.top", "*.dmp.ghac.cn", "*.downza.com", "*.djsn888.com", "*.99meiju.tv", "*.dossen.com", "*.xiaomi.com", "*.hdslb.com", "*.cyol.com", "*.zerodm.com", "*.gzbpi.com", "*.denza.com.cn", "*.solution9.net", "*.51ykb.com", "*.amethystum.com", "*.haimaokj.com", "*.tripadvisor.cn", "*.idacn.org", "*.xinghangdao.com", "*.oilchem.net", "*.68710266.com", "*.1rtb.com", "*.pcvideo.com.cn", "*.webshare.mob.com", "*.idciis.com", "*.kaixin001.com.cn", "*.abchina.com", "*.phpyuan.com", "*.tiimg.com", "*.hao123img.com", "*.biz.weibo.com", "*.qchannel01.cn", "*.xmjsci.com", "*.e5n.com", "*.zxxk.com", "*.zhouyi.cc", "tamaegis.com", "517heiya.com", "*.anhuiry.com", "*.cdn.bcebos.com", "*.image.myqcloud.com", "*.game.360.cn", "*.9k9k.com", "*.ucc8.com", "*.eyeofcloud.com", "*.xshellcn.com", "*.sseinfo.com", "*.duoziwang.com", "*.wuaiso.com", "*.grablan.com", "*.displore.cn", "*.cma.cn", "*.360safe.com", "macxin.com", "*.pp3q.com", "*.bianyindashi.com", "*.zjqbj.com", "tpooo.net.cn", "*.cqqc3.com", "*.ad7.com", "*.shiwan001.com", "*.itanken.cn", "*.nihaowang.com", "*.ls.apple.com", "*.hi2000.com", "*.mat-test.com", "*.chinanetapi.com", "*.pxto.com.cn", "*.vogel.com.cn", "*.idianshijia.com", "duoyinsu.com", "*.voiceads.cn", "*.kmnbz.cn", "*.zhangxinxu.com", "*.ielts.cn", "*.py.cn", "*.foodu14.com", "*.epy.wpscdn.cn", "*.baixiongz.com", "*.baike.360.cn", "*.blog.itpub.net", "*.usgboralchina.com", "*.ams.org.cn", "*.zwdiex.cn", "*.my120.org", "*.shsinochem.com", "*.chem960.com", "*.jbwave.com", "*.udcedu.cn", "*.anyxz.com", "*.webjzt.com", "*.qianqian.com", "*.uservoice.com", "*.shengsheng.com.cn", "*.ftacademy.cn", "lenovo.com.cn", "phygene.com", "*.mall.10010.com", "*.tjyjj.cn", "*.17m3.com", "*.rabbitpre.com", "*.dailyyoga.com.cn", "*.dayoo.cn", "*.yooso.com.cn", "*.hihonor.cn", "*.arrow-home.cn", "*.thunderurl.com", "*.sylapp.cn", "*.siemens-home.bsh-group.cn", "*.ts.163.com", "*.jfdaily.com", "*.shencut.com", "*.orayimg.com", "*.sousouxs.com", "*.chemsoc.org.cn", "*.bdxiguastatic.com", "*.py3study.com", "*.wenkuxiazai.com", "*.imomoe.jp", "*.welchmat.com", "*.chinaiprlaw.cn", "*.12306.cn", "*.psychspace.com", "*.ccmn.cn", "*.17tui.cc", "meizu.com", "*.nats.top", "*.85coffee.com.cn", "*.zuihuimai.net", "dxy.me", "*.wisecleaner.com.cn", "*.mcmod.cn", "*.lulian.cn", "*.s11.cn", "*.nbjeston.com", "*.guominziben.com", "*.cctole.com", "*.qichacha.com", "*.jsdushi.cn", "*.chenyudong.com", "*.shhgzf.com", "chaolucky.com", "*.autoimg.cn", "*.zhongweiqiye.com", "*.wanmei.com", "*.skitisu.com", "*.riji.net", "*.st.dl.pinyuncloud.com", "*.activity.qjsmartech.com", "*.b2bku.com", "*.cedexis-test.com", "*.baike.so.com", "*.ximalaya.com", "*.peopleapp.com", "*.bzfxh2018.info", "*.bhtsoft.com", "*.jiuaitu.com", "*.cdn-go.cn", "*.goepe.com", "*.paperol.cn", "*.huoding.com", "*.yingxingweb.cn", "*.apdcdn.tc.qq.com", "*.huijiwiki.com", "*.zhaoj.in", "*.longchengtg.com", "*.11467.com", "*.obs.myhwclouds.com", "*.geekzl.com", "*.zxptw.cn", "*.lantxt.com", "*.songshuhui.net", "*.365webcall.com", "*.ksurl.cn", "*.udbac.com", "*.duohui.cn", "maka.im", "*.cangshutun.net", "*.app.acfun.cn", "*.jbzj.com", "*.gdqynews.com", "*.winrar.com.cn", "*.blogjava.net", "*.singlera.com.cn", "*.suning.com", "*.alevelzizhen.com", "*.6711img.com", "*.ydqzj.cn", "*.mscbsc.com", "*.365heart.com", "*.zampda.net", "*.video.iqiyi.com", "*.smm.cn", "*.chinanet-sh.com", "*.jianshu.io", "*.qianxin.com", "*.yw11.com", "*.chinadegrees.cn", "*.igame.qq.com", "*.oos-cn-180622.ctyunapi.cn", "bigcat.com", "*.55bbs.com", "*.perf.linkedin.com", "*.tust.edu.cn", "*.cnodejs.org", "*.gamersky.com", "*.shouyoutv.com", "*.iegourl.com", "*.vkjgem.cn", "mos86.com", "*.fuggg.com", "coremail.cn", "*.geespeed.net", "*.jobui.com", "*.g.doubleclick.net", "*.cdgowell.com", "*.33app.net", "*.oioweb.cn", "*.tvmao.com", "*.wn51.com", "*.oss.dogecdn.com", "*.csslcloud.net", "*.93eu.com", "*.repository.webfont.com", "*.biliapi.net", "*.jixiangyouau.com", "*.shouji.sogou.com", "*.cloud.huawei.com", "*.gerensuodeshui.cn", "*.chezai8.com", "*.189.cn", "*.chengxiaobai.cn", "*.sunrtb.com", "*.jxnxs.com", "*.xuanheng01.cn", "*.ut.taobao.com", "*.kd128.com", "*.capcloud.com.cn", "*.downya.com", "*.serving-sys.cn", "*.51minbingtuan.net", "*.ctags.cn", "*.xiziwang.net", "*.7654.com", "*.ie.sogou.com", "hejiao.com", "*.xinmin.cn", "*.tp-link.com.cn", "*.42xz.com", "*ccb.com.cn", "*.rantu.com", "*.sdbao.com", "*.ieeod0.com", "*.kkmh.com", "*.ddcpc.cn", "china.cn", "*.synology.cn", "*.new-sports.cn", "*.qumingdashi.com", "*.cer.v588.top", "codecocoa.com", "*.yofujiaoyu.com", "tp-link.cn", "*.yicai.com", "*.mapbar.com", "*.jddebug.com", "*.find.qq.com", "*.taiwan.cn", "*.jsjkx.com", "jsbchina.cn", "*.bintro.smilec.cc", "*.jinzhandaily.com", "*.mobaders.com", "*.dpfile.com", "*.moegirl.org.cn", "*.50bang.org", "*.prod.faria.cn", "*.ruguoapp.com", "*.xoyo.com", "*.nhost.00cdn.com", "*.cn-fe.com", "boe.com", "*.xiazais.com", "*.leikeji.com", "*.iqiyipic.com", "*.110.com", "*.dalemax.cn", "sourl.cn", "*.kmf.com", "*.kye-erp.com", "*.biddingx.com", "*.7k7kjs.cn", "*.ad-survey.com", "*.shunicomtest.com.prod.hosts.ooklaserver.net", "*.yzapi.top", "*.baiducontent.com", "*.onebest.cn", "*.sngapm.qq.com", "*.guangyuanol.cn", "*.ppsimg.com", "*.yangshipin.cn", "*.zhumu.com", "*.chjak.cn", "*.iscrv.com", "*.sso.sina.com.cn", "xssousou.com", "*.cn-beijing.log.aliyuncs.com", "*.click.taobao.com", "*.gamepp.com", "*.koowo.com", "*.new.favo.gengnie.com", "*.jiaju.com", "*.cnki.com.cn", "*.gtimg.cn", "*.tijianwang.cn", "*.cheersee.com", "*.yxgapp.com", "*.jizhuomi.com", "*.ciicsh.com", "*.wx.0731i.com", "*.100ec.cn", "*.zswph.com", "*.zhubajie.com", "*.jiandan100.cn", "*.scol.com.cn", "*.chinastock.com.cn", "*.yusi.tv", "*.biochemsafebuy.com", "ws28.cn", "*.99box.com", "*.jjjpan666.com", "*.download05.com", "*.drjt.wang", "*.nstool.zhuanzfx.com", "*.tuniu.com", "*.admaster.com.cn", "*.kanwby.com", "*.paliberg.com", "*.71edge.com", "*.ourplay.net", "*.maxthon.cn", "*.sobaidupan.com", "*.qg.net", "*.audioapp.cn", "*.things.hicloud.com", "*.bccnsoft.com", "*.njxzwh.com", "*.wj.glbdns.com", "*.variflight.com", "*.anxz.com", "*.cm.steampowered.com", "*.gcloud.qq.com", "*.yfp2p.net", "*.wb0311.com", "qq.com", "*.zkii.net", "quanbailing.com", "stdaily.com", "*.hugejiaoyu.com", "sinastorage.com", "virscan.org", "*.tvzhe.com", "*.zampdsp.com", "*.d0.baidupan.com", "caoniang.com", "*.jfq.com", "learnku.com", "*.100tal.com", "*.wukongwenda.cn", "*.shangxueba.cn", "*.steamchina.pinyuncloud.com", "*.tingmall.com", "*.alltuu.com", "*.obs.cn-north-1.myhwclouds.com", "*.lillyasiaventures.com", "*.3dmgame.com", "*.youhua.com", "*.smtjs.com", "*.meitudata.com", "*.socialmarketings.com", "*.zoossoft.cn", "*.chunyu.mobi", "*.wxsunrise.cn", "*.aigei.com", "*.oss.cn-north-1.jcloudcs.com", "*.mns3.cn", "*.kai8wu.com", "*.haizhou-gas.com", "*.chinadaily.com.cn", "*.fr-trading.com", "*.520yk.cn", "*.job910.com", "*.xfilecache.com", "*.zghy.org.cn", "*.xiladaili.com", "*.dlads.cn", "*.125.la", "wjx.cn", "*.anzhen.org", "*.ccddos.cc", "*.keinsci.com", "*.bugscaner.com", "*.ziyuanm.com", "*.dgqksy.com", "*.ksapisrv.com", "*.zx-led.com", "*.ipinyou.com", "*.houxue.com", "*.moe16.com", "*.omtrdc.net", "*.ifunmac.com", "*.szjal.cn", "*.olocat.cn", "*.easemob.com", "*.yoojia.com", "*.imydl.com", "*.iblimg.com", "*.zgvn2b.cn", "*.xv5b.com", "*.samsclub.cn", "*.jiarenvip.com", "*.5i5j.com", "*.api.pptv.com", "xiongyue.com.cn", "*.jstv.com", "*.yunaq.com", "*.share.baidu.com", "*.pwesports.cn", "*.yiyuti.com", "*.itsmore.com", "*.gutouwang.net", "*.7moor-fs1.com", "*.pro.cn", "*.ushendu.com", "*.fatedier.com", "*.unipay.qq.com", "*.cnpc.com.cn", "*.hoopchina.com.cn", "*.douyuscdn.com", "*.qipus.cn", "*.hubwiz.com", "*.sagetrc.com", "pfebro.com", "*.code.twyxi.com", "*.imech.cas.cn", "*.ifanr.com", "*.700mh.com", "laoyaoba.com", "*.baowenban.com", "*.u7u9.com", "*.trafficjam.cn", "*.vatti.com.cn", "xinhuanet.com", "*.hncsdayu.com", "*.itbook5.com", "mookie1.cn", "*.baitiao.com", "*.cchuili.com", "*.ershicimi.com", "*.bestlink.com.cn.prod.hosts.ooklaserver.net", "*.sundxs.com", "*.mscto.com", "*.52swat.cn", "*.zhisiedu.cn", "*.nj.bpc.baidu.com", "*.img.dns4.cn", "*.chemicalsafety.org.cn", "*.shangmayuan.com", "*.kepu.net.cn", "*.gd121.cn", "*.jxxjrb.cn", "*.cena.com.cn", "*.imiqian.com", "*.stats.eefocus.com", "*.wanfumei.net", "*.chemalink.net", "*.deepinid.deepin.com", "*.abie11.top", "*.leipi.org.cn", "*.syzjxz2018.cn", "*.qfrost.com", "*.tbnimg.com", "*.b5.plus", "*.vinuxhome.com", "koolearn.com", "*.static.pcpop.com", "bybutter.com", "air-level.com", "*.wordpressjc.com", "*.435000.com", "*.gb688.cn", "*.bmw.com.cn", "*.shfsy.com", "*.24zbw.com", "*.write-bug.com", "*.ppio.cloud", "*.4399.com", "*.360kuaixue.com", "uc.cn", "*.51testing.com", "*.cx987.cn", "*.clickdata.37wan.com", "*.baomitu.com", "*.lovestu.com", "*.sinaimg.cn", "*.zzzmh.cn", "*.xiuchuang.com", "kmanong.top", "*.suiyongsuiqi.com", "*.guixue.com", "benjaminwhx.com", "*.bayescom.com", "*.etijiao.com", "*.lecake.com", "ieltsbro.com", "*.qpic.cn.download.ks-cdn.com", "*.zoomvideo.cn", "yinhe.co", "*.xunyou.com", "*.jos.hicloud.com", "*.chinagrazia.com", "*.189.sh", "*.lead-top.com", "*.bankofshanghai.com", "*.mechrevo.com", "*.timepill.net", "*.hzfs.qiye.163.com", "*.yoyi.com.cn", "*.icloud.com.cn", "zhi.hu", "*.stargame.com", "*.pingxx.com", "*.junengfan.cn", "*.fsygroup.com", "*.yueduiwang.cn", "*.as.pptv.com", "*.169it.com", "*.click.tmall.com", "*.kaijia.com", "*.adget.cn", "*.sys321.com", "*.webdissector.com", "*.gter.net", "*.raiing.com", "*.nsw88.com", "*.softhunt.com", "*.10010.com", "*.gongzicp.com", "*.tianwenhu.com", "*.99jiuying.com", "*.jsbchina.cn", "*.sh1a.qingstor.com", "uri6.com", "*.wjaa23.com", "*.chinatelecom.com.cn", "*.sibs.cas.cn", "*.ieduchina.com", "*.kepuchina.cn", "*.ruan8.com", "*.paddlepaddle.org.cn", "yunwenmc.com", "*.eastmoney.com", "*.tvsou.com", "*.fengyuncad.com", "*.cww.net.cn", "*.jiguo.com", "*.kanshuhai.com", "gxwzlc.com", "*.bangbang93.com", "*.yuediqu.com", "*.dxy.com", "*.sojson.com", "cainiaojiaocheng.com", "gaode.com", "*.cn0556.com", "*.bj520.com", "*.zhidiy.com", "*.1onx.cn", "*.onegreen.net", "*.myssl.com", "*.youdao.com", "*.ntgrchina.cn", "*.yisu.com", "*.duote.com", "*.cytcm.com", "*.ppt20.com", "*.tv002.com", "*.qujishu.com", "*.jiehunmishu.com", "*.ikanchai.com", "*.tanmizhi.com", "*.s.tpcdn.top", "*.cbml.com.cn", "youyou-tech.com", "*.bwhcn.com", "*.pianhai.com", "*.ssl.dhrest.com", "*.qq.com", "xiaomi.com", "*.cninternetdownloadmanager.com", "*.guanjia.qq.com", "*.tq121.com.cn", "*.dxmstatic.com", "*.cocosbcx.net", "*.ngaa.net.cn", "*.cls.cn", "*.boc.cn", "*.blizzardgames.cn", "*.lf127.net", "*.nysk.fj.cn", "*.yystv.cn", "*.xiaobaipan.com", "*.gdt.qq.com", "*.xlgtblj.cn", "*.zoom.com.cn", "*.sdv8dvj.com", "*.jiuxinban.com", "*.baike.sogou.com", "*.byfuh.com", "*.ximist.cn", "*.wondershare.cn", "*.gz.apigw.tencentcs.com", "huiminfw.xyz", "*.icbc.com.cn", "*.q195.com", "*.dl.pinyin.sogoucdn.com", "e22a.com", "*.symcb.com", "*.4399pk.com", "*.vip.iqiyi.com", "gdqynews.com", "*.xindong.com", "*.cdstm.cn", "*.miyanlife.com", "*.wensixuetang.com", "*.newasp.net", "*.gogoup.com", "*.aizhan.com", "*.helloimg.com", "*.w3school.com.cn", "*.s140i.faiusr.com", "*.70yst.cn", "*.dxmpay.com", "*.clt.qq.com", "*.k780.com", "*.ziroom.com", "*.hicloud.com", "*.yunqingugm.com", "*.xianliao.me", "*.youkaoshi.cn", "*.game.hicloud.com", "*.cdn.n1q.cn", "*.xiaobaixitong.com", "*.xixitime.com", "*.wallet.hicloud.com", "*.mookie1.cn", "*.surfactant.com.cn", "*.shantou315.com", "*.qiqiuyun.net", "*.laibafile.cn", "*.qyer.com", "*.xitongtiandi.net", "*.tabuzhe.com", "*.mogucdn.com", "*.youbianku.com", "*.nxflv.com", "*.bestieu.com", "*.kaowang.com", "*.sapi.so.com", "*.battlenet.com.cn", "*.ele.me", "*.lightingchina.com.cn", "*.1ppt.com", "*.qimai.cn", "*.stu.edu.cn", "*.cnki.net", "c-t.work", "*.gzslg.com", "*.bookxnote.com", "*.mihoyo.com", "app-measurement.com", "*.youxi47.com", "*.7k7k.com", "*.siyuanren.com", "*.ad.jiguang.cn", "susudm.com", "*.wmk0099.xyz", "*.tu.qq.com", "*.coolpython.net", "*.wangpan.xycdn.n0808.com", "upyun.com", "*.aiimg.com", "*.yoyou.com", "*.yuanben.io", "*.hxnews.com", "*.zlongame.com", "pansoso.com", "*.sosomp.com", "*.dewu.com", "*.look.360.cn", "*.ddccs.net", "*.zhumu.me", "pcshadu.cn", "*.peopletech.cn", "*.zmnedu.com", "*.foxitreader.cn", "*.pingsheme.com", "*.shuake.ink", "*.dahebao.cn", "*.ebiobuy.com", "*.everimaging.cn", "*.ccnxs.cn", "*.base.yxdown.com", "*.ftn.qq.com", "*.wiseimp.com", "*.ton5.cn", "*.flash.2144.com", "*.iphy.ac.cn", "*.pangolin-sdk-toutiao.com", "*.clang.cn", "*.500.com", "*.chuzushijian.cn", "*.zdmimg.com", "haoji.me", "*.coumie.top", "*.dh151.com", "*.dhost.00cdn.com", "*.sc2yun.com", "*.lianghg.com", "*.wwwbuild.net", "*.dukekunshan.edu.cn", "*.discin.com", "*.19lou.com", "*.yuntongxun.com", "*.vvhan.com", "*.heytapimage.com", "*.bio-equip.com", "*.xiaoxicloud.com", "*.applink.mob.com", "*.iask.cn", "*.2345cdn.net", "*.zbj.com", "*.a.88cdn.com", "ems.com.cn", "*.caixin.cn", "*.lhy2.xyz", "*.8979.com", "*.zxsmxt.com", "*.coolcoolcloud.com", "*.zone139.com", "*.eickaopei.com", "*.expoon.com", "*.xiaoe-tech.com", "*.wup.huya.com", "*.pc6.com", "*.yylady.cn", "*.webgame138.com", "*.ofweek.com", "*.nbdeli.com", "*.sc.gg", "*.yht7.com", "*.ququyou.com", "*.xwdsp.com", "ywgg1.com", "*.wowenda.com", "*.moguedu.com", "*.dzlaa.com", "*.cuteboy.net", "*.zgkyb.com", "*.cdnnodedns.cn", "*.tiandynasty.cn", "*.bankofchina.com", "*.huawe.com", "*.zxgj.cn", "*.digitalcertvalidation.com", "*.plusyeah.cn", "*.shandiankami.cn", "*.chinaunix.net", "*.cachenode.cn", "*.roay.cn", "*.yutu.cn", "*.cnhan.com", "*.malaoshi.top", "*.xundayun.cn", "*.ckcest.cn", "*.abie12.top", "*.pipaw.com", "*.win10com.com", "*.mbalib.com", "720yun.com", "*.mooreelite.com", "*.op.wpscdn.cn", "*.md51.cn", "*.tgp.qq.com", "*.hispace.hicloud.com", "*.163qiye.vip", "*.wx.11h5.com", "vmall.com", "*.pa18.com", "*.woozooo.com", "*.sosjbwcsnm.space", "*.micblo.com", "*.iJianJi.com", "*.chemayi.com", "*.mofe.me", "*.chinabgao.com", "*.eastday.com", "*.ixinwei.com", "*.studyvip.cn", "*.psbc.com", "*.zyjjw.cn", "*.dangdang.com", "*.exp.bcevod.com", "*.3fang.com", "*.bigcat.com", "*.haopianyi.com", "*.peropero.net", "*.zhugeio.com", "365essay.com", "cankaoxiaoxi.com", "*.5rs.me", "*.kdnet.net", "*.5ppt.net", "*.mnks.cn", "*.tankeai.com", "*.61diy.com", "*.xuexila.com", "*.newsmth.net", "*.qqddc.com", "*.battle.net", "xn--2qux23c9ziyrq.ink", "*.smzdm.com", "*.googlenb.com", "*.xueqiu.com", "*.ecnovel.com", "*.17qq.com", "zhangyuqing.cn", "*.dict.cn", "*.tpns.sh.tencent.com", "*.cnielts.com", "*.zoomus.cn", "*.fageka.com", "*.dmp.360.cn", "*.186078.com", "hjmansion.com", "*.hitv.com", "*.cnkang.com", "*.it610.com", "yunmaovideo.com", "*.icloud.com", "*.tencent.com", "*.xiugei.com", "youku.com", "*.cnitblog.com", "*.091601.com", "*.choujue.net", "*.51wendang.com", "*.410wl.cn", "*.bjnbet.com", "*.wegame.com.cn", "*.boe.com.cn", "*.bcebos.com", "*.southcn.com", "*.111ttt.cn", "*.gdsungoal.com", "*.huorong.cn", "*.winbaicai.com", "*.jcrb.com", "vcbeat.top", "*.nj-reagent.com", "*.light7.cn", "1strender.com", "*.cnziii.com", "*.xf.com", "*.kekenet.com", "*.docin.com", "*.tesunet.com", "*.teambition.net", "*.360game.360.cn", "61.151.165.0", "*.ucgc.ucfly.com", "*.coral.qq.com", "*.ahsrst.cn", "*.proginn.com", "*.talbrain.com", "*.igame.163.com", "*.mairuan.com", "962.net", "*.hongbeicn.com", "*.lxhy88.com", "*.moomoo.com", "*.toefl.cn", "*.ts7.qq.com", "*.11h5.com", "*.iwan4399.com", "*.lookgame.com", "*.cloud.dbankcloud.com", "*.wader1714.com", "*.9orange.com", "*.dzwww.com", "*.spkx.net.cn", "*.qunarzz.com", "*.che168.com", "*.pjyjw.com", "*.allwinnertech.com", "*.easyliao.com", "*.gamescube.com", "*.qiyexinyong.org", "eefcdn.com", "*.zoubuting.com", "*.55haitao.com", "*.m.qq.com", "*.zjapk.com", "*.chinanews.com", "*.jhjk.com.cn", "*.5pub.com", "*.yuanshen.com", "*.cnzz.com", "*.zhue.com.cn", "*.connect.qq.com", "*.jiatui.com", "*.5w5w.com", "*.qiyukf.com", "*.drivergenius.com", "*.oiwjcsh013.top", "*.img-sys.com", "*.zgjiemeng.com", "*.sangfor.com.cn", "*.asmrqq.com", "*.weizhenwx.com", "*.yiyouliao.com", "*.high-end.top", "*.aiapig.xyz", "*.cos.tx.xmcdn.com", "*.js12379.cn", "*.lvesu.com", "*.cqvip.com", "*.tzdjzu.com", "*.ztvx8.com", "*.club.vmall.com", "51.la", "*.chinait.com", "*.tmall.com", "*.21ic.com", "*.tonghao.ltd", "*.u.excelhome.net", "*.haoyundm.com", "*.open.360-game.net", "*.wuli.ac.cn", "*.tv.yundousoft.com", "*.yunyingpai.com", "canseq.com", "*.ajz.miesnfu.com", "*.vzuu.com", "*.dmool.com", "*.wkanx.com", "*.liangxinyao.com", "*.networkbench.com", "*.sysceo.com", "*.su.bdimg.com", "*.caoke.net", "*.shxwcb.com", "*.zbjimg.com", "*.tiebaimg.com", "*.chenxitxt.com", "tmall.com", "*.gamebuff.cn", "*.1sapp.com", "*.btc126.com", "*.18dao.cn", "*.jd.hk", "pai-hang-bang.com", "soso.com", "*.cnsav.com", "*.jj-tv.com", "*.cn-bj.ufileos.com", "*.lnk0.com", "126.com", "*.21cnjy.com", "*.infocomm-journal.com", "*.top15.cn", "szdushi.com.cn", "*.25ku.com", "*.imgcdc.com", "shimo.im", "*.shunyiwenxiu.com", "*.cypeueg.com", "*.shenfendaquan.com", "*.sanmanong.com", "*.aijianji.com", "*.qiyi.com", "*.rso.wang", "*.quanhuaoffice.com", "bj520.com", "*.tb.cn", "tencent.com", "*.hihonor.com", "*.taihe.com", "*.c114.com.cn", "*.hscode.net", "*.pxmsw.com", "*.urleo.cn", "*.btzysw.cn", "*.mengniu.com.cn", "*.ksmobile.com", "*.itmop.com", "*.icplist.com", "*.egovsum.com", "*.online-cmcc.cn", "*.dtletao.com", "*.shcas.net", "*.glac.org.cn", "*.sinajs.cn", "*.bankcomm.com", "*.chinastor.com", "*.anquanke.com", "*.jpush.cn", "uinote.com", "*.paper.edu.cn", "*.med66.com", "*.huishoubao.com", "china.com.cn", "*.eqbyc.com", "*.transrush.com", "*.17173.itc.cn", "*.jiutianedu.com", "*.xigua110.com", "*.jmjc.tech", "*.lydeyy.com", "*.pc.com.cn", "*.jsmo.xin", "*.ch1-ctc-aa.tv002.com", "616pic.com", "*.azimiao.com", "*.mybjx.net", "*.buycoor.com", "*.rotass.com", "*.zhaozhaoxs.com", "*.nstool.haowu.link", "*.ywordle.com", "*.zrzy88.com", "*.feishu.cn", "*.sinoscript.com", "*.xdhedu.com", "bjsatd.com", "*.yiyongcad.com", "*.715083.com", "*.txt909.cc", "*.s61i.faiusr.com", "*.daheapp.com", "*.smucdn.com", "*.hunantv.com", "*.jcscp.org", "*.oupins.com", "*.banpie.info", "*.885609.com", "*.citicbank.com", "189.cn", "*.gmw.cn", "*.xforceplus.com", "*.lingxigames.com", "*.repanso.com", "*.udesk.cn", "*.ipip.net", "*.zoosnet.net", "*.51fapiao.cn", "*.vtiantai.net", "*.vants.org", "*.cfan.com.cn", "*.91ctc.com", "*.hack520.com", "*.ym.163.com.", "*.lieqibar.com", "*.guancha.cn", "*.zj186.com", "*.sucaijishi.com", "*.yximgs.com", "*.dx.liuxing.com", "*.gmuqa.cn", "*.tui555.com", "*.ads.linkedin.com", "kaixin001.com", "*.rossoarts.net", "*.huihui.cn", "*.ce.cn", "*.img.360kuai.com", "*.drugtimes.cn", "*.chinacourt.org", "*.285868.com", "fcbox.com", "*.youth.cn", "*.hzsrjs.com", "*.liuxue360.cn", "*.liujiangblog.com", "*.renan163.com", "*.steam.ksyna.com", "*.birdpaper.cn", "*.znj.com", "*.cmcmcdn.com", "*.ffxiv.cn", "*.nowqiu.com", "*.zybuluo.com", "*.gtgres.com", "*.users.51.la", "*.4399.cn", "*.kingsoft.com", "*.a.etoote.com", "*.yunjiwan.com", "*.dulaidw.com", "*.qihucdn.com", "*.37.com", "*.pan58.com", "news.cn", "*.zglyfj.cn", "*.iftzs.com", "*.barkcan.com", "aijishu.com", "*.yunnanbaiyao.com.cn", "*.hpplay.cn", "*.vanke.com", "*.ihuaben.com", "*.tuna.tsinghua.edu.cn", "*.huoq.com", "*.keaitupian.net", "*.sevengames.cn", "*.imooc.com", "*.zhoudaosh.com", "*.drxsfd.com", "*.xjishu.com", "*.2019fafa.cn", "*.voc.com.cn", "*.ad.siemens.com.cn", "*.sosuopan.com", "*.aecc.cn", "moore.live", "*.hao.360.com", "*.agrant.cn", "*.yunrong360.com", "*.8684.cn", "*.mieyisi.com", "*.ruyile.com", "*.doyo.cn", "*.91mitang.com", "*.linkedin.cn", "*.mangocity.com", "*.zoho.com.cn", "indienova.com", "*.lenovomm.com", "*.tetewx.com", "*.chemicalbook.com", "*.wlzy.tv", "*.pm25.com", "*.99ppt.com", "*.qulishi.com", "*.host206.sanfengyun.cn", "bookzhai.com", "*.okjx.cc", "*.2339.com", "*.webportal.top", "*.xiami.com", "*.cndent.com", "*.zuowen8.com", "*.pstatp.com", "*.612.com", "*.tigerfintech.com", "*.iiilab.com", "*.xkw.com", "*.websoft9.com", "*,linkedin.com", "*.magtech.org.cn", "*.lenovo.com.cn", "*.kuaidi100.com", "*.hhczy.com", "*.gp.qq.com", "*.save0758.com", "*.gx202.com", "*.gzjmzy.cn", "*.ygsub.com", "*.1905.com", "*.t.sinajs.cn", "*.kkx.net", "*.anhuinews.com", "*.dgg.cn", "*.wsm.360.cn", "*.yxbox91.com", "*.qbaobei.com", "*.iplaysoft.com", "*.b7pu.com", "*.cainiao.com", "*.thsi.cn", "*.gebaiwan.com", "*.csgo.5ewin.com", "*.sanwen.net", "*.qqsort.com", "*.xssdcdn.com", "*.draveness.me", "*.useasp.net", "*.1234567.com.cn", "*.bdxiguaimg.com", "*.ssl.msdk.qq.com", "*.tianqiweiqi.com", "*.aalagjd.cn", "*.youke.co", "*.duitang.com", "*.wxs666.cn", "*.29xf.com", "*.cnbkw.com", "*.eeworld.com.cn", "*.dingyuechem.com", "aihami.com", "*.dianchacha.com", "*.05qq.cn", "*.qfangimg.com", "*.xihachina.com", "*.kangleweb.net", "*.51img1.com", "*.101.com", "*.b0.upaiyun.com", "*.ebs.org.cn", "*.114dns.com", "*.dtd-edu.cn", "*.doho.net.cn", "*.huanxiyl.com", "*.game.yy.com", "ywnz.com", "*.ldnews.cn", "*.shyirui.net", "*.callget.cn", "mao-music.com", "*.mdbook.cn", "*.9game.cn", "*.feitian001.com", "*.phpwind.com", "*.file.leanote.top", "*.ithome.com", "*.fcbox.com", "*.mbai.cn", "101test.com", "*.bbiqugew.com", "ele.me", "*.eefocus.com", "kexue.fm", "*.hylmxing.com", "*.moneydata.hk", "*.videoyi.com", "*.static.lunkr.cn", "*.booen.co", "*.ecice06.com", "*.vhall.com", "*.midea.com", "fx168.com", "*.guangzi.qq.com", "*.scoregg.com", "*.vac.qq.com", "*.9xsecndns.cn", "*.mcdn.bilivideo.cn", "*.xierkang.com", "*.xuesai.cn", "asmrqq.com", "*.dtstatic.com", "*.xinluobo.com", "*.baidu.com", "*.v.qq.com", "*.ifengimg.com", "*.yanghuaxing.com", "wmxa.cn", "*.youzanyun.com", "*.so.com", "*.siilu.com", "*.dxy.cn", "*.mzstatic.com", "*.4399youpai.com", "*.17173.com", "*.sto.cn", "*.aplus.pptv.com", "*.yyhomer.com", "*.fyyzwb.com", "*.stal.com.cn", "*.xiangruigs.com", "*.jswebcall.com", "*.huijistatic.com", "*.17liuxue.com", "*.cnppt.cn", "*.poco.cn", "*.jumpbc.chuairan.com", "*.51xiazai.cn", "*.shorturl.com.cn", "*.faniuwenda.com", "*.q578.com", "*.now.qq.com", "*.dhrest.com", "*.ggcj.cn", "*.b5csgo.com.cn", "*.genomics.org.cn", "*.oss-cn-shanghai.aliyuncs.com", "*.chaoxing.com", "*.privateadx.com", "*.umeeting.cn", "*.zoossoft.com", "*.ctsports.com.cn", "*.mp.360.cn", "*.dashenxian.com", "*.duxiaoman.com", "*.58cdn.com.cn", "dxy.com", "*.v.smtcdns.net", "*.yy.com", "*.pinyin.sogou.com", "*.chinaispo.com.cn", "*.71360.com", "*.23cpc.com", "pingan.com", "*.soyunpan.com", "g-fox.cn", "*.sobot.com", "*.liaogu.com", "*.perass.com", "iguagua.net", "diditaxi.com.cn", "*.3kr.com", "*.haimawan.com", "*.kuaishang.cn", "*.wenjuan.com", "*.686ppt.com", "*.bitecho.net", "*.cppcns.com", "*.shforu.com", "*.mihan.cc", "*.jiqizhixin.com", "*.kuoqps.com", "*.mengtubo.com", "*.moblink.mob.com", "*.lishixinzhi.com", "*.shipinyu.cn", "*.yao51.com", "*.52im.net", "*.zhizhizhi.com", "*.liepin.com", "*.asus.com.cn", "*.pediy.com", "*.taptap.com", "*.propsad.com", "*.669pic.com", "*.dm456.co", "*.txrjy.com", "*.minipage.2345.cc", "*.500sports.com.cn", "*.koocdn.com", "*.tc.qq.com", "*.haappy.net", "*.tingdianle.cn", "*.lagou.com", "*.zhufaner.com", "*.qhstatic.com", "*.cr-nielsen.com", "*.office.k8s.xunlei.cn", "*.service.zhan.com", "gohi.top", "*.you-mi.net", "*.ptmind.com", "*.3936.net", "*.itellyou.cn", "*.hurun.cn", "*.qcloud.com", "*.uemo.net", "*.bmini.cn", "*.mashort.cn", "*.beizhoujt.cn", "*.hao-hai.com", "*.biotanon.com", "*.5down.net", "*.untp.org.cn", "*.jisuoping.com", "*.qshnhealth.com", "*.xiachufang.com", "*.nqbcf.cn", "*.ilongre.cn", "*.youdemai.com", "*.178du.com", "geekori.com", "*.datastory.com.cn", "*.phb123.com", "*.sperogenix.com", "*.iresearch.cn", "*.jfc120.com", "*.imqq.com", "*.nibaku.com", "timepill.net", "*.eqxiu.com", "*.scicn.net", "*.52pi.net", "*.cblogcn.com", "*.geodata.cn", "*.manmanbuy.com", "*.zhmyq.cn", "*.maccms.net", "*.lascn.net", "*.acmx.xyz", "*.ksosoft.com", "*.keysense.com.cn", "*.feling.net", "*.shgjj.com", "*.nstool.yqkk.link", "*.jc001.cn", "*.news.ifeng.com", "*.jiaoyimao.cn", "kaixin.com", "*.kesion.com", "*.cwems.com", "*.urlsec.qq.com", "vimsky.com", "*.socheap.store", "*.sogo.shuangshiyihightgo.top", "*.aosmith.com.cn", "*.12918942356433168277.sngdia.imtmp.net", "*.21jingji.com", "*.uugtv.com", "*.redocn.com", "*.cjys.cn", "*.diyiwl.wang", "*.downerapi.com", "*.api.mgtv.com", "*.osgeo.cn", "*.weiyuedu.cc", "*.holine.com", "*.10101111cdn.com", "*.favopen.com", "*.frdic.com", "*.niaola.com", "*.huanqiu.cn", "*.pinjiao.comwap.pinjiao.com", "*.pdnews.cn", "91baigei.com", "*.markjour.com", "*.nrgh.net", "*.wjxcdn.com", "*.dm123.cn", "*.guoxingjun.com", "*.bitdock.cn", "*.share2dlink.com", "*.bootcss.com", "*.aixifan.com", "*.new.favo.diufeng.cn", "gio.ren", "*.downfi.com", "*.c3733.cn", "*.talkingdata.com", "*.spacechina.com", "*.90pan.net", "*.xy.163.com", "*.mosflower.cn", "*.aidouer.net", "*.huawei.com", "*.yy.duowan.com", "*.netded.com", "audioapp.cn", "*.0208.cc", "*.cifnews.com", "*.wdywt.cn", "*.qianlong.com", "*.xitongxz.net", "*.xuchuang.com", "*.wqdian.net", "*.las.ac.cn", "*.fangjial.com", "*.le.com", "*.how234.com", "*.imgo.tv", "pm25.in", "*.bs2dl.huanjuyun.com", "*.bs2dl-ssl.huanjuyun.com", "*.dxsbb.com", "*.kuai8box.com", "*.casio.com.cn", "huaweicloud.com", "*.downyi.com", "*.zhujibiji.com", "*.csgo.com.cn", "*.jnrwjc.com", "*.71xe.com", "*.gznwn.com", "*.viplgw.cn", "*.foxitsoftware.cn", "*.yaooqu.com", "*.7ile.com", "*.xy888.org", "*.39health.com", "*.sll.cn", "*.data-baker.com", "*.8868.cn", "*.gdsoq.com", "*.zhuazi.com", "*.arm.starbucks.com.cn", "*.taohaohuo.ltd", "*.lhsr.cn", "*.kujiale.com", "*.163mail.cc", "*.spdb.com.cn", "*.baiwang.com", "*.sific.com.cn", "foofish.net", "*.suporpe.com", "*.tagtic.cn", "*.zhubinghulab.com", "*.16846.top", "*.ffnews.cn", "*.pythonheidong.com", "*.zzszs.com.cn", "*.qqxzb-img.com", "*.gentags.com", "*.hz65.org", "*.nstool.laiqukankan.com", "toutiao.com", "*.taomee.com", "*.diyijuzi.com", "*.eefcdn.com", "*.meiqia.com", "*.tingyun.com", "*.weather.hao.360.cn", "*.idmchina.net", "*.360kuai.com", "*.12317.com", "*.bczs.net", "*.zhimg.com", "*.whb.cn", "*.123ku.com", "*.ztedevices.com", "*.g1c5.com", "*.83n104.com", "*.hibor.com.cn", "*.meiyou.com", "*.toutiao.io", "*.ere.ac.cn", "*.huayimedia.com", "*.lynch.xin", "*.yiyijiujiu.com", "*.homeway.com.cn", "*.eyby.com.cn", "*.chinaports.com", "*.wowodm.net", "*.datatellit.com", "*.bisu-nicole.com", "*.runningcheese.com", "*.ulmdb.cn", "*.lcnki.com", "*.zhanzhang.baidu.com", "*.51.com", "*.720yun.com", "*.hwccpc.com", "*.zhuticlub.com", "*.7down.net", "psbc.com", "*.zhongkaohelp.com", "*.jomoo.com.cn", "*.stats.lncld.net", "*.lawtimeimg.com", "*.wcell.cn.prod.hosts.ooklaserver.net", "*.clinell.com.cn", "*.vpimg1.com", "*.paopaoche.net", "*.huohuaschool.com", "*.mafengwo.net", "*.quandangdang.net", "*.zhutibaba.com", "*.dell.com", "*.im.ac.cn", "*.itranslater.com", "*.kuaipan.cn", "*.applysquare.net", "*.123.sogoucdn.com", "*.eudic.net", "semc.com.cn", "*.fotomore.com", "*.gao7.com", "*.relay.splashtop.com", "*.juimg.com", "*.2du.net", "*.ggxt.net", "*.doudouxitong.net", "*.new.favo.ddnddn.com", "*.sjedu.cn", "*.win7china.com", "*.12345.suzhou.com.cn", "*.jrjimg.cn", "*.7cyd.com", "*.qdstt.cn", "datayi.cn", "*.wenzhangba.cn", "*.quanshi.com", "taobao90.cn", "*.xiaoso.net", "*.piaotian5.com", "csser.top", "*.escience.org.cn", "*.nahuayuan.com", "*.photophoto.cn", "*.uone-tech.cn", "*.bangboer.com", "*.80note.com", "*.eehub.cn", "*.hcbbs.com", "*.mvconf.50union.com", "*.86cg.com", "*.3h3.com", "*.wechat.com", "*.kuaihou.com", "*.jiuyao666.com", "*.jinrongwang.net", "*.bytecdntp.com", "*.macapp8.com", "*.xiegw.cn", "*.chrome.360.cn", "*.4008123123.com", "*.eywedu.net", "*.banwagongvps.com", "*.imtmp.net", "*.xueshujia.com", "*.xcloud.sandai.net", "*.pcbeta.com", "*.hangge.com", "*.ssl.qhimgs1.com", "*.ilucene.com", "*.ghpym.com", "*.win7zhijia.cn", "*.hmail163.cn", "*.giocdn.com", "*.video.weibocdn.com", "*.dmfuns.com", "*.dftoutiao.com", "*.miaozhen.com", "*.aps.amap.com", "*.njtech.edu.cn", "*.hxzxs.cn", "*.xmofun.com", "*.kefu.easemob.com", "*.csres.com", "*.lawtime.cn", "*.xkzz.com", "bakaawt.com", "*.faxingnet.com", "*.uuu9.com", "*.cctime.com.cn", "*.kaowana.com", "*.p2p.huya.com", "*.yuhong.com.cn", "*.leancloud.cn", "*.seebio.cn", "*.tudouxy01.com", "*.netmon.360safe.com", "*.chsi.com.cn", "*.hk.ufileos.com", "*.shrtswkj.com", "*.xiaomingming.org", "*.qqzhi.com", "*.qxwk.net", "eastday.com", "*.y7o9rh.cn", "*.wuikoe.cn", "*.g-fox.cn", "*.ustb.edu.cn", "*.ppkao.com", "*.live800.com", "*.xp.cn", "*.youlai.cn", "*.jb51.cc", "*.wondershare.cc", "*.chinathinksbig.org", "*.wenkuw.com", "*.w3xue.com", "*.hrpland.cn", "*.umtrack.com", "*.xiaohongshu.com", "*.zhangyumo.top", "*.zzwc120.com", "*.leisu.com", "*.cnad.cn", "*.zhan.com", "topurl.cn", "*.chemmind.com", "*.china.com", "beijixs.cn", "*.shyhhema.com", "*.gasin-dh.com", "*.yulucn.com", "sina.cn", "*.rfchost.com", "*.yilans.net", "*.v2l.szbdyd.com", "*.meizu.com", "*.ydtad.com", "*.zw0000.com", "*.dakang-energy.com", "*.itiexue.net", "*.jd100.com", "*.wuliunj.cn", "*.500shuba.com", "*.abie18.top", "*.rwpt.top", "*.pan.baidu.com", "dangdang.com", "*.huanqiu.com", "*.thepaper.cn", "*.flv.huya.com", "*.scorecardresearch.com", "*.jszg.edu.cn", "*.anjuke.com", "*.sinoreagent.com", "*.qchannel03.cn", "*.bidex.cn", "*.wwc-blog.com", "*.canet.com.cn", "*.miercn.com", "*.giho.com", "*.fangdaijisuanqi.com", "*.gtimg.com", "*.bwfapiao.com", "*.acc.sogou.com", "dongniao.net", "*.eastsoo.com", "ezpaper.cn", "*.cmemo.org.cn", "*.wostore.cn", "*.liuxue315.cn", "*.feizhuip.com", "bnwmt.com", "*.cjxz.com", "*.51f.com", "*.mobup.cn", "*.parents.youthmba.com", "cnpython.com", "weibo.cn", "*.uupoop.com", "*.gzosram.com", "beecut.cn", "*.bangongziyuan.com", "fengcx.com", "*.tom.com", "*.163.hn.cn", "*.360log.com", "*.ctfile.com", "*.yuyu.com", "*.mp.sohu.com", "*.soku.com", "*.mini.wpscdn.cn", "*.uyunad.com", "*.pclady.com.cn", "ztedevices.com", "*.as12df.top", "*.wscdns.com", "*.7littlemen.com", "*.163.com", "*.ke.com", "*.poizon.com", "*.cvte.com", "*.pyq.netease.com", "bilibili.com", "*.rndlgch.com", "*.duowan.com", "*.qidian.com", "*.cgvoo.com", "*.lsaeb.com", "*.05sun.com", "*.sheca.com", "*.ninims.top", "*.30sy.com", "*.denza.com", "*.pangolin-dsp-toutiao.com", "*.mail.10086.cn", "*.51jobcdn.com", "*.3dmaxvip.com", "*.pingwest.com", "*.csdn.net", "*.moyankan.com", "taobao.com", "*.yinxunbiao.com", "*.hao123.com", "*.vip.miui.com", "*.zohostatic.com.cn", "*.vivo.com", "*.sjhfrj.com", "*.alading123.com", "*.sys.anxiu.com", "*.jieqi.com", "*.noldorland.com", "*.futunn.com", "*.cmcm.com", "*.dengoo.net", "*.iteye.com", "*.emailgo.cn", "*.519397.com", "cctv.com", "*.iqiyi.com", "*.liuxing.com", "*.dmzj.com", "*.kandian.qq.com", "acfun.cn", "*.6yue.org", "*.cdn.beiing.cn", "*.cnvd.org.cn", "*.anxinssl.com", "*.oss-cn-beijing.aliyuncs.com", "*.sogoucdn.com", "*.genetics.ac.cn", "*.toutiao.com", "*.hermanmiller.cn", "*.bilivideo.com", "*.bokecc.com", "*.nzbdw.com", "ipoipo.cn", "*.decathlon.com.cn", "*.bugly.qq.com", "*.biancheng.net", "*.liaoxuefeng.com", "*.hzins.com", "*.yyyxx.cn", "*.issas.ac.cn", "*.shouce.ren", "*.118pan.com", "*.ewdcloud.com", "*.whxjnwzhs.com", "*.adsl.cn", "*.bjd.com.cn", "*.dbank.com", "*.douyu.com", "*.umengcloud.com", "*.3773.com.cn", "*.hljpic.cn", "*.hopebiol.com", "*.online.sh.cn", "*.saesky.net", "*.enfi.vip", "*.wstimes.cn", "*.mz6.net", "*.tupiankucdn.com", "*.oiwjcsh001.top", "*.ebdoor.com", "36kr.com", "*.civillita.com", "*.guopan.cn", "*.ssl.qhimgs3.com", "*.dushuzhe.com", "douban.com", "*.444662.cn", "*.ulinkedu.cn", "*.gelielts.cn", "*.niceloo.com", "*.iqilu.com", "*.byteimg.com", "*.xubei.com", "*.qikanchina.net", "*.cpcwe.com", "*.qqyewu.com", "amazon.cn", "*.zhizunyuan.com", "zoom.com.cn", "*.wpista.com", "*.micaihu.net", "*.claiks.com", "*.shyihuoi.cn", "guitarchina.com", "*.jenwin.cn", "*.hejingbo.top", "*.sh.chinamobile.com", "*.sina.com.cn", "*.wyxcb6.top", "*.xstui.com", "*.qzone.qq.com", "*.99-taobao.cn", "*.chinagene.cn", "*.zjyimin.com", "zhujicankao.com", "biaodan100.com", "*.cxyxiaowu.com", "*.mi.com", "*.captcha.qq.com", "*.253.com", "*.xycdn.com", "*.echangwang.com", "*.huoying666.com", "*.pcoic.com", "*.out.azhimalayanvh.com", "*.pm25.in", "*.7639616.com", "*.optimix.cn", "*.webyang.net", "*.wipm.ac.cn", "*.chuangyiyuanwang.com", "tp528.com", "*.360buyimg.com", "xiaohongshu.com", "*.xiaomawangedu.cn", "*.so.lianmeng.360.cn", "*.lujiahb.com", "*.jf258.com", "*.jiegeng.com", "*.juejin.im", "*.apkevery.com", "donews.com", "*.e.sogou.com", "*.szfuit.com", "*.ads.oppomobile.com", "*.au.download.windowsupdate.com", "*.tool.lu", "leanapp.cn", "*.crsky.com", "*.faxianpindao.com", "*.easyaq.com", "*.floorballchina.com", "*.hrbxcwh.top", "*.wdjky.com", "*.manhuaren.com", "*.aoyou4.top", "*.fojiaozaixian.com", "*.51nb.com", "*.aiwan4399.com", "*.jobmd.cn", "*.chinaacc.com", "*.j9p.com", "*.guoding.net", "*.hf365.com", "*.25ys.com", "*.51showmy.com", "*.yupoo.com", "*.conac.cn", "*.qpic.cn", "*.chanwen.cn", "*.ijinshan.com", "*.3g.ifeng.com", "*.23bei.com", "*.vmallres.com", "*.oppomobile.com", "*.xiaa77.com", "utf8.hk", "*.cdgdc.edu.cn", "cnnic.cn", "*.sswww.net", "*.alexametrics.com", "*.wowaita.com", "*.tencentcloudapi.com", "*.vpgame.com", "creatorsdaily.com", "*.kcimg.cn", "*.baixing.net", "*.xc.acq42.com", "*.qiniudn.com", "*.sdqoi2d.com", "*.gitee.com", "usembassy-china.org.cn", "*.tongdun.net", "*.puercn.com", "*.xmonster.cn", "*.zhaopin.com", "*.xiaocifang.com", "*.xiaoheihe.cn", "*.qzonestyle.gtimg.cn", "*.98158.com", "*.dtstack.com", "*.scorejp.com.cn", "*.sysdchem.com", "*.cangshutun.com", "*.iuynfg.com", "*.huya.com", "*.shdjt.com", "*.imgcache.qq.com", "bigsec.net", "*.cocimg.com", "*.zoom.us", "*.mockplus.cn", "*.jinshoukang.com.cn", "*.umsns.com", "*.cn.made-in-china.com", "*.lmview.com", "*.prjslxhtx005.top", "gotokeep.com", "*.anquan.us", "chinanews.com", "*.youthdaily.cn", "*.onlinedown.net", "*.youzan.com", "*.pfoc.org.cn", "*.soft778.com", "*.wys.net", "*.sogou.com", "*.20hn.cn", "*.v1tx.com", "*.s.360.cn", "*.jsdelivr.net", "*.pptmb360.com", "*.baibo8.com", "*.growingio.com", "*.qiuboshi.com", "ddrv.cn", "*.okfone.com", "*.humorlogic.com", "*.escolifesciences.cn", "*.snsnz.com", "*.163qifu.com", "*.qiao.baidu.com", "*.001kd.com", "*.douding.cn", "*.speedtest.jsinfo.net.prod.hosts.ooklaserver.net", "*.mydigit.cn", "*.beacon.qq.com", "*.geilicdn.com", "*.53kf.com", "*.yesky.com", "*.cmfd.com.cn", "*.liulanqi.net", "*.guidechem.com", "*.dettop.cn", "*.cdn.maketie.cn", "*.epaidai.com", "*.hhlyb.com", "*.mypep.cn", "*.knowsafe.com", "*.xueweimima.com", "*.sewfaww.cn", "*.bkill.com", "*.bytedance.com", "*.cubead.com", "*.douyucdn2.cn", "*.zgxue.com", "*.pinduoduo.com", "*.mofangge.com", "*.bjcancer.org", "*.baidupan.com", "*.techweb.com.cn", "*.ws59.cn", "*.kaoshixing.com", "*.ifeng.com", "*.in-en.com", "tp-login.cn", "*.chiphell.com", "*.ssjj.3304399.com", "*.convertlab.com", "*.jsyks.com", "*.itools.cn", "agefans.top", "*.dnspod.cn", "*.nscc-gz.cn", "tmioe.com", "*.sport.org.cn", "*.pai-hang-bang.com", "flutterchina.club", "*.ssp.qq.com", "ipip.net", "*.ws.126.net", "*.ncnews.com.cn", "*.yuzhaiwuww.com", "*.baiven.com", "*.penxiangge.com", "*.365dmp.com", "*.miguvideo.com", "*.y.qq.com", "*.citicsinfo.com", "*.pictop.cn", "*.3g.qq.com", "*.hurun.net", "*.youer.chazidian.com", "*.bluedon.com", "*.xinchacha.com", "*.kkyhq.cn", "*.pchome.net", "*.panelook.cn", "*.ping.cn", "lanrenbianli.cn", "mesalab.cn", "*.mavuz.com", "*.vpimg4.com", "lmtw.com", "*.adoutu.com", "*.migu.cn", "*.laohuyou.xyz", "*.uncledesk.com", "adgoo.cn", "*.pinlue.com", "*.yanxiangquan.com", "*.usertrust.com", "*.rilibiao.com.cn", "mydrivers.com", "*.pythonf.cn", "*.3366.com", "*.debug8.com", "*.chahaoba.cn", "*.daxuanchuan.com", "*.mcbbs.net", "*.bubuman.com", "*.ipadown.com", "*.jomodns.com", "*.alimebot.com", "*.wuseng.net", "*.baidupcs.com", "*.cmpassport.com", "*.33lc.com", "*.zuohaotu.com", "*.jenzone.cn", "*.ssl.66cn.com", "*.agefans.net", "*.shaqm.com", "*.aqdstatic.com", "*.huawan.com", "*.aideep.com", "*.ivwen.com", "*.moeyi.net", "*.yqmh.com", "*.yayaliyi.com", "*.lpxt.com", "*.youxiniao.com", "*.hao4k.cn", "*.passport.qihucdn.com", "*.cos.ap-shanghai.myqcloud.com", "*.cloudxns.net", "*.frhelper.com", "*.52player.cn", "*.yalayi.net", "*.nbd.com.cn", "*.tltwcn.com", "*.gj.qq.com", "*.ioliu.cn", "*.yiguahai.com", "pdfxd.com", "*.haodf.com", "*.ssl.qhimg.com", "*.games.laohu.com", "*.aqlife.com", "*.msf.3g.qq.com", "*.mihayo.com", "*.overturechina.com", "*.cdn.dianshihome.com", "*.django.cn", "*.gqy.com.cn", "*.store.qq.com", "*.aili.com", "*.wktmro.com", "*.xiaoshidaizixun.com", "*.7fresh.com", "*.noritz.com.cn", "*.90sheji.com", "golifemall.com", "*.linuxrumen.com", "*.tuibian8.com", "cqlcqycsjcj.cn", "*.liyuxiang123.cc", "*.idongde.com", "*.tt.cn", "*.colg.cn", "*.huanqiucdn.cn", "*.2rich.net", "*.shfft.com", "*.tjemc.org.cn", "*.gwbnsh.net.cn", "*.ccs.org.cn", "hacpai.com", "*.gcloudsdk.com", "*.ddooo.com", "*.daovoice.io", "*.data.lianjia.com", "*.bsbe.com.cn", "*.ddimg.cn", "*.mycosresearch.net", "*.dashangu.com", "*.firefox.com.cn", "*.9you.com", "*.pucha.net", "*.nowamagic.net", "*.qyw163.com", "*.3d66.com", "*.panasonic.cn", "*.66992.top", "*.canon.com.cn", "444dsw.com", "*.ssl-images-amazon.cn", "*.inveno.com", "*.jdgcjx.cn", "*.sov5.cn", "*.shouji.com.cn", "*.bnmanhua.com", "*.h5.xiaoe-tech.com", "*.iczhiku.com", "fkm2wv.cn", "*.cdn.sohucs.com", "*.51.la", "*.lx.netease.com", "*.verywind.com", "*.linuxidc.com", "*.costco.com.cn", "*.962268.com", "*.xsbjw.com", "*.mtyee.com", "zoomus.cn", "*.nantongtop.com", "*.tkgame.com", "*.gz121.com", "*.qhy.com.cn", "*.update.wps.cn", "*.sonhoo.com", "*.energylabelrecord.com", "rjsos.com", "*.shangdejigou.cn", "*.netgear.cn", "*.iigs9.com", "*.hexunimg.cn", "*.tudan.cc", "*.liugejava.com", "*.antfin.com", "*.999meiju.com", "*.doubanio.com", "95559.com.cn", "*.se.360.cn", "*.surfactant.top", "*.yystatic.com", "*.open-open.com", "*.popiask.cn", "*.stboda.com", "*.e.qq.com", "*.yunpian.com", "*.cdnjtzy.com", "*.ipv4.host", "*.laoyaoba.com", "*.9open.com", "*.09fw.cn", "*.mooeraudio.com", "xifengboke.com", "zybang.com", "*.dfcfw.com", "*.xlyouxi.com", "*.54doctor.net", "*.gedu.org", "*.reagent.com.cn", "*.vpn.hhu.edu.cn", "*.suning.cn", "*.maoyuncloud.com", "e23.cn", "*.xmrzw.cn", "*.186dsw.cn", "*.xejmh.com", "*.shengxinquan.net", "*.chinacdc.cn", "*.5ibc.net", "*.bayescom.cn", "7k7k.com", "*.gvt1.com", "*.geetest.com", "*.zhanshaoyi.com", "*.speedtest.cn", "*.ksrong.com", "*.xunjieshipin.com", "*.autohome.com.cn", "*.shxhd.cn", "*.tifenedu.com", "*.njshengyuanli.com.cn", "*.eet-china.com", "*.chinaso.com", "*.muji.com.cn", "linmi.cc", "*.tiekuangshi.com", "*.acgedu.cn", "*.op.hicloud.com", "*.ytop8.com", "*.dyboy.cn", "*.jingyuxitong.com", "*.csbiochina.com", "*.kidscoding8.com", "*.fangcloud.com", "*.bianshengzhuanjia.com", "bing.com", "*.llrnlzl.cn", "*.soperson.com", "*.yunzhan365.com", "*.yanzheng.com", "*.xitu.io", "*.leanote.com", "*.zhumu.cn", "*.mmstat.com", "*.yangjia.xin", "*.biketo.com", "*.learnku.com", "*.labour-daily.cn", "songshuhui.net", "*.qy.net", "*.e23.cn", "*.syzzhd.cn", "*.lianjia.com", "*.trace.qq.com", "nd2z41.cn", "*.jitashe.org", "*.ynet.com", "*.ziyuewentao.com", "*.q6u.com", "*.tiqcdn.com", "mcninc.cn", "*.indienova.com", "*.lw.aliimg.com", "*.912688.com", "vnsiubvgs.com", "*.duxiu.com", "*.yebaike.com", "*.kuai8.com", "rossoarts.net", "gwdang.com", "*.jfcdns.com", "*.yfdts.net", "vocy.cn", "*.static.it168.com", "*.eic.org.cn", "*.itunes.apple.com", "*.functioncompute.com", "*.366xsw.com", "*.yunsuo.com.cn", "*.xueok.cn", "*.heduwang.com", "*.xkyn.com", "*.bq233.com", "ecitic.com", "*.fundebug.cn", "*.baixingcdn.com", "*.cl2009.com", "*.cnzv.cc", "*.zjol.com.cn", "*.omgxedu.com", "*.maxthon.com", "geek-docs.com", "*.xml-journal.cn", "*.chemcp.com", "*.aceguipeng.com", "*.turbur.com", "*.23shiji.net", "*.qbox.me", "*.outin.cn", "*.99966.cn", "*.enginx.cn", "juejin.im", "*.cocos.org", "*.liqucn.com", "*.fit2cloud.com", "*.cntv.myhwcdn.cn", "*.bigpar.cn", "*.esmchina.com", "*.szdushi.com.cn", "*.jxmzyg.com", "*.bankofbeijing.com.cn", "*.hainiubl.com", "*.zhue.cn", "*.leipi.org", "niaoyun.com", "*.wdw6.com", "*.idosend.com", "zhinin.com", "*.fancyapi.com", "*.tianqi.com", "*.medlive.cn", "*.myoschain.com", "*.t.agrant.cn", "*.ruc.edu.cn", "*.yximg.cn", "*.serving-sys.com", "*.toupiaonews.com", "*.biligame.net", "*.aiwin10.com", "*.pkulaw.cn", "*.yangkeduo.com", "*.qhimgs3.com", "*.right.com.cn", "*.zjjaxx.com", "*.nintendoswitch.com.cn", "*.ggdownxs.cc", "*.ali-exmail.cn", "*.kuwo.cn", "*.xaunqd.com", "*.yunnan.cn", "*.rr.tv", "*.sifayun.com", "*.icauto.com.cn", "*.hnskxy.com", "*.lx.321274.com", "*.apowersoft.com.cn", "*.shubl.com", "*.crdu.cn", "*.msstatic.com", "*.v2fy.com", "*.nss.netease.com", "*.capdata.com.cn", "*.tga.qq.com", "*.twoeggz.com", "*.bzw315.com", "*.7415150125143169267.sngdia.imtmp.net", "*.xiaoice.com", "*.51240.com", "*.vcimg.com", "*.e23.com.cn", "*.88wuma.com", "*.yangtse.com", "guanwangdaquan.com", "*.decathlon.net", "*.uisdc.com", "toutiao.io", "*.1suplayer.me", "*.i8tq.com", "*.97bike.com", "*.moetu.clu", "*.lohomat.com", "*.100legend.com", "*.iefans.net", "*.paperopen.com", "*.micai.com", "*.cdnmaster.com", "*.geekbang.org", "*.lcloc.com", "*.cnrencai.com", "alibabagroup.com", "*.wtlogin.qq.com", "*.jiaoyubao.cn", "*.xin3721.com", "*.muwuya.com", "*.ntrdjsjl.com", "*.ssl.qhimgs0.com", "*.wqdian.com", "*.o3o4o5.com", "*.zohopublic.com.cn", "zhihu.com", "*.opposhop.cn", "*.kchuhai.com", "*.bybutter.com", "*.otobbc.com", "*.baopals.com", "*.bingde360.com", "*.lecloud.com", "*.rogoso.info", "*.aqnews.com.cn", "*.es-club.com.cn", "*.sofastack.tech", "*.m.sm.cn", "*.jintengchem.com", "*.avbdf.com", "down-video.com", "*.focus-img.cn", "*.tantuw.com", "*.cecdc.com", "codingdict.com", "*.xieejimh.com", "*.alimebot.taobao.com", "*.boduai.com", "*.ifengbi.com", "*.img-space.com", "*.91luopan.com", "*.dongchenghotels.com", "avoscloud.com", "*.bizographics.com", "*.bangongtuku.com", "*.digicert.com", "*.cytmedia.cn", "ylface.com", "*.chuanyuemi.com", "*.amemv.com", "*.1000thinktank.com", "*.zgddek.com", "*.download.xunlei.com", "cmfd.com.cn", "*.focussend.com", "lianghg.com", "*.baiji.com.cn", "*.dynamic.tiles.ditu.live.com", "*.cje.net.cn", "*.360doc.cn", "*.djzbl.com", "*.m.hao123.com", "*.dsp.com", "*.51downapp.cn", "*.shhshfc.com", "*.souutu.com", "*.ksord.com", "*.zol-img.com.cn", "*.ymtc.com", "*.cn-hangzhou.img-pub.aliyun-inc.com", "*.byguitar.com", "*.kuaifaka.net", "*.zujuan.xkw.com", "*.cgspread.com", "*.weixinbridge.com", "*.chemsrc.com", "*.integle.com", "*.pubhealth.org.cn", "*.gmsx.gmw.cn", "xiaorui.cc", "*.79.cn", "*.xueshanlinghu.com", "*.utubedown.com", "*.ewdcloud.com.cn", "*.hixcgj.com", "oneshoper.com", "*.flashapp.cn", "*.39yst.com", "*.hiido.com", "*.24kwx.com", "*.iflysec.com", "*.yiyaojd.com", "*.iuuu9.com", "sobereva.com", "*.njcyfpv.cn", "*.isamacademy.com", "*.showstart.com", "*.zdface.com", "*.bjx.com.cn", "*.pglstatp-toutiao.com", "*.xianyang888.com", "*.qicaixianhua.com", "*.api.okayapi.com", "*.37cs.com", "*.mldyc.com", "*.pangdo.com", "*.oceancoder.cn", "*.trackingio.com", "*.b612kaji.com", "*.mokahr.com", "*.shrc.com.cn", "*.wg.360-api.cn", "*.makeding.com", "*.pdf365.cn", "*.xpccdn.com", "*.hnnuange.com", "*.szsst88.com", "*.stat.360safe.com", "*.166xs.com", "*.shubei.net", "*.hfbigujf.com", "*.daokeyuedu.com", "*.ecitic.com", "*.xz6d.com", "*.qzcbs.com", "*.cdyimei.com", "*.globaltimes.cn", "*.qunale888.com", "7ile.cn", "*.101test.com", "*.livejq.top", "*.sakura016.top", "*.hackhome.com", "*.bioindustry.cn", "*.ruiwen.com", "pandownload.com", "*.kawin.com.cn", "*.mac69.com", "*.nr-data.net", "*.93hdw9.com", "*.yundun.com", "*.qianjia.com", "*.duomai.com", "*.xxzww.net", "*.178hui.com", "*.sitaier.com.cn", "*.pdf00.cn", "*.huolala.cn", "*.huaweicloud.com", "*.miptoo.cn", "wgznz.com", "*.happyschool.cc", "*.amazon.com", "zhumu.com", "*.sibs.ac.cn", "*.kiss688.com", "*.gdtimg.com", "*.bigfun.cn", "*.trmfb.com", "ienglish521.com", "*.iyiou.com", "*.laokaoya.com", "*.wayoulegal.com", "*.qihoo.com", "*.tg.wan.360.cn", "*.stocks-edge.apple.com", "*.o7928.cn", "*.lib.stu.edu.cn", "*.jslab6.edu.cn", "nsiso.com", "*.ejomoo.com", "*.csm.org.cn", "*.wosign.com", "*.jos.org.cn", "*.zgbk.com", "*.ylybz.cn", "*.bjpengyi.com", "*.miamt.com", "*.rhhz.net", "*.igo.cn", "*.qiye126.net", "*.ctrip.com", "*.javashuo.com", "*.sefls.com", "*.mailpanda.com", "*.thefatherofsalmon.com", "*.yzwb.net", "*.omegaxyz.com", "*.hlgdata.com", "*.feichijiaju.com", "*.update.360safe.com", "*.upyun.com", "*.61.com", "*.fugetech.com", "*.haha5.cn", "*.thinkpad.com", "*.zjhongye.net", "*.qwps.cn", "*.unity.cn", "*.ccmanhua.com", "*.xiuqixuan.cn", "*.html.cn", "*.dayoo.com", "aotu.io", "*.oh100.com", "*.turingapi.com", "*.300hu.com", "*.v3n.pkoplink.com", "*.cdnbest.com", "*.huxiu.com", "*.sxdaily.com.cn", "*.fztxylgy.com", "yeshengtaobei.com", "*.10bests.com", "*.kaipuyun.cn", "*.kakasms.com", "studygolang.com", "*.baiblog.ren", "*.blissmall.net", "*.art.zjut.edu.cn", "*.openwrite.cn", "*.h5wan.4399sj.com", "*.pkg.qunayue.com", "*.dmp.sina.com.cn", "*.wandhi.com", "*.guangfan.tech", "*.cnblogs.com", "*.woaikanxs.com", "*.fang.ke.com", "*.gimini.cn", "*.dogevideo.com", "*.res.netease.com", "*.qqkuyou.com", "*.xunyi163.com", "*.xincanshu.com", "*.log.ckcest.cn", "*.8686c.com", "*.jxzysb.com", "*.studygolang.com", "*.ssl.51jqq.top", "*.m1world.com", "*.eleme.cn", "*.intsig.net", "*.texnet.com.cn", "wendangmao.net", "*.cc.163.com", "*.shimo.im", "*.tpns.tencent.com", "*.oppo.com", "*.4399api.net", "*.blog.sina.com.cn", "*.yoseenir.com", "*.lisawuwa.com", "eleme.cn", "*.yixue.com", "*.mxd.moe", "*.fundebug.net", "*.shhansi.com", "t.cn", "*.diguayun.com", "*.playes.net", "*.fotor.com.cn", "shchls.com", "*.beijing.gov.cn", "*.vcbeat.top", "*.emdlz.com.cn", "lanhuapp.com", "*.chenxitxt.net", "*.news.cn", "818ps.com", "*.paixin.com", "*.dacedsfa.cn", "*.srrc.org.cn", "*.yx12345.com", "*.sttcq.com", "*.pudn.com", "*.develenv.com", "*.gzstv.com", "*.dbankcdn.com", "*.xiaobeizi.cn", "*.real_calc.enorth.com.cn", "meetzoom.net", "*.18touch.com", "*.shec.edu.cn", "*.rar8.net", "*.cheshi.com", "*.caitongtong.com", "vbdata.cn", "*.res.log.hunantv.com", "*.010zaixian.com", "*.fengniao.com", "*.yiquhai.com", "*.5utours.com", "*.media.baidubce.com", "*.canzhisong.cn", "*.doc88.com", "*.tianqistatic.com", "*.tool.hexun.com", "*.diskgenius.cn", "*.52tt.com", "*.fkcaijing.com", "icbc.com.cn", "*.kjj.com.cn", "*.tanx.com", "*.jianzhiweike.net", "*.yihu.cn", "*.chenxixiaoshuo.net", "tianya.cn", "*.baike.soso.com", "*.websiteonline.cn", "*.mooddo.com", "*.52by.com", "*.5646.cn", "*.ucloud.com.cn", "*.liantu.cn", "*.doufu.la", "*.ff.hhbrand.net", "*.wncx.cn", "*.engine3d.com", "*.citysbs.com", "*.cffex.com.cn", "*.dgjs123.com", "*.lz13.cn", "*.fstn.net", "*.shangxueba.com", "*.thinbug.com", "lunkr.cn", "*.nsfocus.net", "*.cocos.com", "*.xunlep.com", "*.macklin.cn", "*.comments.jrj.com.cn", "*.meituan.com", "*.58che.com", "*.uodu.net", "zhujisou.com", "qianjia.com", "*.b96bcea4.cc", "pgaibao.com", "*.360.cn", "qiyukf.com", "*.echatsoft.com", "wanmeiyunjiao.com", "*.akkocloud.com", "*.goodbaby.com", "*.worldfirst.com.cn", "*.glzip.com", "*.yex.youdao.com", "*.87g.com", "*.zhw666.cn", "*.pokooo.com", "*.softdl.360tpcdn.com", "*.951368.com", "*.6789.com", "*.cn-lingte.com", "*.bixiange.cc", "*.obs.cn-north-1.myhuaweicloud.com", "*.ssl.img.360kuai.com", "*.webapp.163.com", "*.qjsmartech.com", "*.replays.net", "*.djicdn.com", "*.cms.it168.com", "*.vsdhf.com", "cowtransfer.com", "*.biyan8.com", "*.499-img.com", "*.txt99.org", "*.iask.com.cn", "*.honor.cn", "*.chromedown.com", "*.xarxrljt.com", "weather.com.cn", "*.lolfun.cn", "*.haoji.me", "*.edu24ol.com", "sdwyqb.com", "*.snai.edu", "*.aqniu.com", "*.51vcf.xyz", "*.dakawm.cc", "*.51img5.com", "*.somode.com", "*.wuta-cam.com", "*.gouwubang.com", "*.tudou.com", "*.luxe.co", "*.fangzhenxiu.com", "*.444dsw.com", "*.10010sh.cn", "*.phpke.cn", "*.cr173.com", "*.nstool.321fenx.com", "*.partner.microsoftonline.cn", "*.yunmowu.com", "*.fraft.org", "*.xiazaicc.com", "*.godloveme.cn", "*.click.com.cn", "*.ahanvn.cn", "*.cnfanews.com", "*.aizhigu.tv", "*.zaixianfanyi.com", "*.tuisong.baidu.com", "*.bangboer.cn", "*.b2bname.com", "oyxdwx.com", "*.bbsmax.com", "*.jiaochengzhijia.com", "*.tpooo.com", "*.dili360.com", "*.ccw.com.cn", "*.huatu.com", "*.ym.163.com", "*.hnxcwy.com", "*.bianzhile.com", "*.sys.datatellit.com", "*.toutiaobashi.com", "*.yihuimg.com", "tianqi.com", "*.12333sb.com", "*.xy.huijitrans.com", "*.time-weekly.com", "*.i.mediav.com", "*.bjhanyang.com", "*.ibazhan.com", "*.xunjiepdf.com", "*.apowersoft.cn", "*.jianyujiasu.com", "*.isharepc.com", "*.listc.cn", "*.hrs.com.cn", "*.qianlima168.cn", "*.tpgmgzz.cn", "leanote.com", "*.jsluckymetal.com", "*.yunpangou.com", "*.xpelly.com", "*.cumulon.com", "iqiyi.com", "*.cws.api.sina.com.cn", "*.freebuf.com", "*.xdf.cn", "*.shougongdi.com", "*.qtfmi.cn", "*.b.xiangwangdesh.com", "*.shouyouzhijia.net", "*.alighting.cn", "*.ijiwei.com", "*.ip138.com", "*.liankebio.com", "*.mimvp.com", "*.tuxingis.com", "*.lncld.net", "*.microland-design.com", "*.why.com.cn", "*.pddpic.com", "*.douguo.com", "*.lucydraw.com", "*.chipscreen.com", "*.baidu.com.btba.xiaoeryi.com", "*.ozone.org.cn", "*.xesimg.com", "*.miaopai.com", "*.nn.com", "*.oadz.com", "*.oleony.com", "*.jkeabc.com", "*.zhtuanjian.com", "*.medchemexpress.cn", "*.sinopec.com", "*.evpartner.com", "*.shxkyy.com", "*.yuhuagu.com", "*.wish3d.com", "*.uu.163.com", "*.cnphars.org.cn", "*.chinaaet.com", "*.upantool.com", "*.163yun.com", "*.ciac.jl.cn", "*.wxno.com", "*.huaerxun.com", "*.data.ac.cn", "*.semidata.info", "*.thea.cn", "*.ustc.edu.cn", "*.console.aunbox.cn", "*.zhugeapi.net", "*.yitianzixun.com", "*.chinagate.cn", "*.hudongkepu.com", "*.qianbao.qq.com", "*.wenku8.cn", "*.locpg.hk", "*.ipshu.com", "*.it168.com", "*.qwupoq.com", "*.ywtds.com", "coderschool.cn", "*.qc188.com", "*.aunbox.cn", "*.tianpeng.com", "*.4ggame8.com", "*.zhwenku.com", "*.3304399.net", "*.usaedu.net", "*.yeolar.com", "*.aiweibk.com", "*.huaweiyiyao.com", "*.pdfxd.com", "*.ifengcloud.ifeng.com", "*.airforceworld.com", "*.fx678img.com", "*.huanlj.com", "*.baodaren.net", "*.vpsgo.com", "*.chuangyiyuanqu.com", "*.jdpay.com", "*.thecover.cn", "*.zjxd.org", "*.duccnuer.com", "*.cloudquic.com", "*.jdwl.com", "*.monidashi.cn", "*.qk365.com", "*.59wz.com", "*.innovation4.cn", "*.ionovabio.com", "*.bojuelp.com", "365jia.cn", "*.xeknow.com", "*.iy.com.cn", "ccb.com.cn", "*.helplib.cn", "*.zhujiceping.com", "*.042.cn", "*.game234.com", "*.mijuge.com", "lightmake.cn", "*.dns.com", "*.shengxin.ren", "*.topstat.cn", "rogoso.info", "*.biqushuo.com", "*.oss-cn-shenzhen.aliyuncs.com", "*.scp.btoo3.com", "*.3g567.com", "*.123.com", "*.biomart.cn", "*.8531.cn", "*.hacking8.com", "*.bilibili.com", "*.yxdown.com", "*.52mengdong.com", "*.lefile.cn", "*.115.com", "*.xinli001.com", "*.amc-china.com", "*.rc.xiniu.com", "ifengui.com", "*.iianews.com", "*.qizhihaotian.cn", "*.rlbl888.com", "*.xinpianchang.com", "*.xingzuo123.com", "*.tell520.com", "*.gifshow.com", "*.cpedm.com", "*.x-mol.com", "*.ijianyan.com", "*.fii-foxconn.com", "*.csgo.wmsj.cn", "*.lionser.com", "*.langago.cn", "spssau.com", "*.cdn.chengzilte.top", "*.huamaitaike.com", "*.wkimg.com", "*.bsh-group.cn", "*.sxsme.com.cn", "*.jccsoc.com", "*.ccb.com", "ubicdn.com", "dianping.com", "c-ccccc.cc", "*.hanshenglaw.cn", "*.ilab.cn", "*.youzibuy.com", "*.cscl.com.cn", "*.dadagame.com", "*.game.qq.com", "*.sctv.com", "*.qdlongre.com", "*.sxlcdn.com", "*.zuixingzuo.net", "*.jia.com", "*.shengxianxiu.com", "nbcb.com.cn", "*.xleduwo.com", "*.gaodun.com", "*.sayloving.com", "*.molinsoft.com", "*.apple.com", "*.yuejuanbao.com", "*.jouypub.com", "jiuyuntian3.cn", "*.isdspeed.qq.com", "*.lenovomm.cn", "*.25pp.com", "*.5nd.com", "*.qqmail.com", "*.hehua.net", "*.jinglingdaili.com", "*.ssl.so.com", "*.win10xiazai.com", "*.superbed.cn", "*.modian.com", "*.down2.99downer.com", "*.bmcx.com", "*.uutool.cn", "*.19yxw.com", "*.clinicalmall.com", "*.aldeee.com", "*.aioexpress.com", "*.baike.163.com", "*.capper.cn", "*.jiain.net", "*.fuimg.com", "*.epson.com.cn", "*.sunrtb.cn", "*.funshion.com", "*.zongheng.com", "*.shengtaiwenming.com.cn", "cdn-go.cn", "*.netease.com", "urlqh.cn", "*.jkdevelop.group", "*.soundgroup.com", "*.ff78ff.cn", "luxe.co", "*.dmyzw.com", "*.youabc.cn", "*.linuxprobe.com", "*.syjiancai.com", "*.qzrx.net", "*.nio.com", "*.360zhyx.com", "*.kejilie.com", "*.banzouzhongguo.com", "*.iriding.cc", "*.w8.com.cn", "*.afdian.net", "*.udrig.com", "*.chinaxiaokang.com", "*.soolco.com", "*.antpedia.com", "*.xsfaya.com", "*decathlon.com.cn", "*.miandei.com", "*.lenovo.com", "*.diebian.net", "*.nj12320.org", "*.cdnmaster.cn", "b23.tv", "ccb.com", "*.cdn2.ime.sogou.com", "*.huomao.com", "jysperm.me", "*.baidu.code.jjyx.com", "*.7down.com", "*.hellobike.com", "*.ccrgt.com", "*.haoz.net", "*.abie15.top", "*.cas.ac.cn", "*.dichan.com", "*.imech.ac.cn", "*.skconf.f.360.cn", "*.02kdid.com", "managebac.cn", "*.damor.cn", "*.williamlong.info", "*.jusdq.com", "*.anhuilife.com", "ioliu.cn", "*.douyin.com", "manfredsery.com", "*.aleveledu.net", "*.excelhome.net", "*.pep.com.cn", "zte.com.cn", "*.a.bdydns.com", "jd.com", "*.sowm.cn", "*.nga.178.com", "*.qpic.cn.spdydns.com", "*.atyun.com", "*.halfrost.com", "*.qiniu.com", "*.diancifa.cc", "*.qikan.cqvip.com", "*.jisilu.cn", "*.gdiplc.com", "*.qbitai.com", "*.mobad.ijinshan.com", "*.huduntech.com", "*.62fan.com", "4399.cn", "*.cuour.com", "*.xctmr.com", "*.bioon.com", "*.sysmyk.com", "90sheji.com", "*.cnal.com", "*.rainbowred.com", "*.zerolh.com", "*.pcbaby.com.cn", "*.milimili.tv", "*.msg.xiaomi.net", "*.xbiqugew.com", "*.jarods.org", "*.cn-hangzhou.oss-pub.aliyun-inc.com", "*.rossoarts.com", "*.18183.duoku.com", "meituan.com", "*.zhibo8.cc", "699pic.com", "*.gvdiguo2.cc", "*.tlu.dl.delivery.mp.microsoft.com", "*.xueqinji.com", "*.gridsumdissector.com", "*.tastones.com", "*.jolimark.com", "*.house.ifeng.com", "*.reyun.com", "*.aolevel.com.cn", "*.idm.vip", "*.wonter.net", "*.hen360.com", "*.xshulin.com", "*.2018.cn", "*.guodadrugstores.com", "dzwww.com", "*.moji.com", "*.csdnimg.cn", "*.yiyimanhua.com", "*.cnsuning.com", "*.softreg.com.cn", "*.huashichang.com", "*.mypep.com.cn", "*.sdo.com", "*.seedasdan.com", "*.ulink.cn", "*.music.163.com", "*.i21st.cn", "*.masky.biddingx.com", "*.yefu365.com", "*.ieltscb.com", "*.krcom.cn", "*.shuicwl.cn", "*.dianping.com", "*.nlc.cn", "*.tuling123.com", "*.kfd3sm2c.com", "*.zhenxz.com", "*.idgdmgroup.com.cn", "educhuguo.com", "*.weather.com.cn", "*.seereeedu.com", "*.1r1g.com", "*.murdochchina.com", "*.hdfimg.com", "*.da-quan.net", "*.tintsoft.com", "*.pconline.com.cn", "*.ucweb.com", "*.pos.baidu.com", "*.liuxueyun.com", "echinacareers.com", "*.xinwenda.net", "*.photo.qq.com", "*.imyfone.cn", "gitmemory.cn", "sogou.com", "*.xfxb.net", "*.52pojie.cn", "*.managebac.cn", "*.yidianzixun.com", "*.kgimg.com", "*.9ht.com", "*.map.bdimg.com", "*.lanree.com", "*.bedook.com", "*.cf2s.cn", "*.iqi360.com", "*.nbakan8.com", "*.crashlytics.com", "*.artimg.net", "zhidx.com", "*.wgznz.com", "*.wps.cn", "*.qidian.qq.com", "*.ky-express.com", "*.kwcdn.kuwo.cn", "*.corp.17k.com", "caijing.com.cn", "*.gushiwen.cn", "*.btstu.cn", "*.ptlogin2.mail.qq.com", "*.loongnix.org", "*.rengy.org", "*.cdeledu.com", "*.d.sanlijia.cn", "*.mall.10010.cn", "*.douyucdn.cn", "*.template.pcbeta.com", "*.ashow.pcpop.com", "*.moviemeng.com", "*.qthpp.com", "toefl.cn", "*.zujuan.com", "*.m.taobao.com", "*.gushiwen.org", "*.youxidudu.com", "*.xttcc.com", "*.ydl.com", "*.yuanmacha.com", "chinaunix.net", "*.qixin.com", "*.uyueread.com", "nga.cn", "*.sc.adobedc.cn", "*.1360.com", "*.ywcsb.vip", "*.agefans.cc", "*.i3839.com", "*.benxiang.com", "*.zqnf.com", "*.marsflag.com.cn", "url.cn", "*.yitaifang.com", "*.aunload.com", "*.najingyi.cn", "*.svnur4.com", "*.xingzuo8090.com", "*.juyit.com", "*.nuomi.com", "*.avlyun.com", "*.infoq.cn", "*.beixiongxiong.com", "*.peixunmatou.com", "*.infoobs.com", "*.sfkedu.com", "*.mycoss.com", "*.seeyouyima.com", "*.cunman.com", "linux265.com", "*.reachmax.cn", "*.ksyun.com", "*.imtt.qq.com", "*.ttlsa.com", "*.iemblog.com", "*.lulutrip.com", "*.mining120.com", "*.sjtu.edu.cn", "*.52qixiang.com", "*.zhuaniao.com", "qssily.com", "*.sensorsdata.cn", "*.qn.img-space.com", "*.neea.cn", "moji.com", "*.9ask.cn", "*.ystbds.com", "ddurl.to", "*.c.excelhome.net", "*.malu.me", "*.virscan.org", "*.sumeme.com", "litten.me", "*.code.jjyx.com", "*.pincai.com", "*.127.net", "*.snssdk.com", "*.baminw.cn", "smiseo.com", "*.f.mediav.com", "*.safe.360.cn", "*.ebiomall.com", "*.sycdn.kuwo.cn", "*.biopurify.cn", "*.sowise.cn", "*.kcisec.com", "*.kowqd5.top", "*.zhitongcaijing.com", "*.yuewen.com", "*.tyrc.org.cn", "*.amap.com", "*.skylab.com.cn", "quqi.com", "*.liuxue86.com", "*.videocc.net", "*.lewenlewen.com", "*.wrfou.com", "*.shuidi.cn", "*.juzhiyuan.com", "*.cella.cn", "*.tuguaishou.com", "*.ruyo.net", "*.new.favo.softdd.cn", "cdnmaster.com", "*.gdyjs.com", "*.21cake.com", "*.cheshi18.com", "*.tb.sogou.com", "*.west.cn", "*.xiaozuowen.net", "*.cache.qcloudcdn.com", "*.khd.2345.cc", "*.525.life", "*.fpzw.com", "*.dzwebs.net", "*.cn.bing.net", "xn--2ssq0ktxigkq.cc", "*.delidou.com", "*.zgkjcx.com", "cnblogs.com", "*.289.com", "*.7766xs.com", "*.niaoyun.com", "*.orgleaf.com", "*.china-caa.org", "*.ktvc8.com", "*.ctia.com.cn", "*.betaidc.com", "*.dnspod.com.cn", "*.bing.net", "*.s1905.com", "*.dwxs.net", "*.rapidssl.com", "*.cn-healthcare.com", "*.166.net", "*.locaspace.cn", "*.bigfunapp.cn", "*.m.liebao.cn", "*.itgirls.cn", "*.shaoshuge.com", "*.union2.50bang.org", "*.disktool.cn", "y4n.cn", "*.cgdeuvip.com", "*.ailemon.net", "*.clientsolutions.cn", "*.16888.com", "*.nciae.edu.cn", "*.qqan.com", "*.waqi.info", "*.lylares.com", "*.ebrun.com", "*.1kmn.com", "*.gucheng.com", "sv7oqa.cn", "*.myquark.cn", "*.zhengrongshuo.com", "*.lichengblog.com", "*.928vbi.com", "*.vaio-china.com", "weibo.com", "*.xiaoeknow.com", "*.chinapower.com.cn", "*.z.qingting.fm", "*.juxiangyou.com", "*.oneapm.com", "*.prepsmith.com", "*.product.it168.com", "*.uaevivi.top", "*.baminw.com.cn", "*.steamchina.com", "*.leduotv.com", "*.union-wifi.com", "*.yfcdn.net", "xuzhougeng.top", "*.myyj.net", "*.10jqka.com.cn", "*.dailiqing.net", "*.yousukao.com", "*.drgxj.com", "*.britishcouncilexams.cn", "*.ieliulanqi.net", "*.aligames.com", "*.hualv.com", "*.wepew.net", "*.playnext.cn", "*.zmgod.com", "*.ulabmed.com", "*.kxzjzx.com", "*.zuowenjun.com", "*.iiyi.com", "*.zgsta.com", "*.offermachine.com", "*.yidoutang.com", "*.officeday.cn", "*.azure.cn", "*.lguohe.com", "*.ppzuowen.com", "*.diyiyou.com", "*.toujing1.top", "*.meitu.com", "*.bh3.com", "*.11qu.com", "*.bioon.com.cn", "*.data.cma.cn", "*.gomepay.com", "*.fengkongcloud.com", "*.86x.org", "*.sohucs.com", "*.psych.ac.cn", "*.dgmmbb.com", "*.ucloud.cn", "*.tianya999.com", "gmw.cn", "*.rongyao-blog.top", "*.fancymall.cn", "*.asianmetal.cn", "*.tyjx.net.cn", "*.crlocsp.cn", "pibe.top", "*.gome.com.cn", "*.baizhan.net", "*.akaojapan.com", "*.toolsdaquan.com", "*.3g.fang.com", "*.msdmanuals.cn", "*.office26.com", "*.dl.eccdnx.com", "*.bdurl.net", "*.bz.mgtv.com", "maliquankai.com", "lanzous.com", "*.wjhospital.com.cn", "*.chinavivaki.com", "*.bitauto.com", "*.mhaoliao.com", "*.xiaoma.com", "*.tgbus.com", "*.data.hicloud.com", "*.wind.com.cn", "*.youku.com", "pconline.com.cn", "*.iyamusic.com", "*.20c.cn", "*.962.net", "*.qqtn.com", "*.720static.com", "*.ykzyt.cn", "*.zaeke.com", "*.xuanheng05.cn", "*.qlogo.cn", "*.tzjk.net", "*.qianzhan.com", "*.uzzf.com", "*.mybank.cn", "*.meitustat.com", "*.baixing.com", "*.d3ch.com", "*.uc.cn", "*.mmtxt.com", "*.news.xixik.com", "*.foodmate.net", "*.dailimao.net", "*.fx168api.com", "*.pngsucai.com", "*.isthnew.com", "*.wxiansen.cn", "*.lgstatic.com", "*.freestyle666.com", "*.xinhuaapp.com", "remegen.cn", "*.srcb.com", "*.jictrust.cn", "*.php.cn", "*.imomoe.ai", "*.illumina.com.cn", "*.shehr.cn", "*.mifile.cn", "*.staticec.com", "*.7kk7.com.cn", "*.officexr.com", "*.seewo.com", "*.st227.com", "*.135editor.com", "52o.ink", "*.cn-shanghai.fc.aliyuncs.com", "*.21wecan.com", "*.lxx1.com", "*.5300tv.com", "*.onns.xyz", "*.eetrend.com", "*.rfoymw.com", "puqer.cn", "*.gamecenter.qq.com", "antlogistics.com.cn", "*.dssz.com", "yxssp.com", "*.i-select.cn", "*.wsgblw.com", "*.s.360kan.com", "*.anquan.org", "*.china-b.com", "*.wppoii.cn", "*.veryvp.com", "*.jihosoft.cn", "*.kendo-china.cn", "*.mapbox.cn", "*.caraxy.com", "*.pansoso.com", "*.54kefu.net", "*.image.nihaowang.com", "*.hongwenschool.com.cn", "*.balance.desktop.zhuazi.com", "isamacademy.com", "*.cdn.qhstatic.com", "11185.cn", "*.163lady.com", "*.chunyuyisheng.com", "*.pinduoduo.net", "*.sucaitu.cc", "*.optimix.asia", "*.weidianyuedu.com", "xdf.cn", "*.xinxing111.com", "*.jiubojx.com", "*.linux.net.cn", "*.jikexueyuan.com", "*.986s.com", "*.2217.com", "*.chinalytics.cn", "*.51yes.com", "*.iyuce.com", "*.bwzxs.com", "*.html5.qq.com", "*.mingdongman.com", "*.nju.edu.cn", "*.www.so.com", "*.kancloud.cn", "*.tencent-cloud.com", "*.cspt.org.cn", "*.jlyingchen.com", "*.myqcloud.com", "*.rtbasia.com", "*.360doc.com", "*.dancf.com", "*.0zou.com", "*.epinv.com", "*.beikaozu.com", "*.hinews.cn", "*.duanmeiwen.com", "*.5h.com", "*.bbanp.com", "*.zhaojin97.cn", "fj211.cc", "*.atomhike.com", "*.landiannews.com", "*.bqimg.com", "*.licdn.cn", "*.patch.battlenet.com.cn", "*.aplus163.com", "*.up.vpser.net", "*.yyzhuishu.com", "*.17248214479548948993.sngdia.imtmp.net", "*.yuetutu.com", "*.api.ke.com", "*.manmankan.com", "*.cqcb.com", "*.ittellyou.com", "*.hyds360.com", "*.chatbot.cn", "*.kmw.com", "*.todaybing.com", "*.caifuzhongwen.com", "*.zuijuzi.com", "*.rqd.qq.com", "*.ronghuogame.com", "*.assoc-amazon.cn", "*.yimg.com", "*.acabridge.cn", "*.hunliji.com", "*.996a.com", "*.bdstatic.com", "*.igvdiguo.cc", "*.lieyunwang.com", "*.eywedu.org", "52pojie.cn", "*.8le8le.com", "*.jcezedu.cn", "*.maijia.com", "*.wxwenku.com", "*.pdl.wow.battlenet.com.cn", "todaym.com", "*.wxs.qq.com", "*.bljiex.com", "*.putclub.com", "*.simm.ac.cn", "*.zhongsheng.com.cn", "*.ecorr.org", "*.xifengboke.com", "*.wirelessdisplay.cn", "*.unetall.com", "*.tianyaui.com", "*.ali213.net", "*.52wyb.com", "*.toutiaoyule.com", "*.www.galileo.jomodns.com", "*.520discount.com", "*.lakdc.top", "*.pkc.easygametime.com", "*.cgjoy.com", "*.mixbao.com", "*.xinlixinxi.com", "*.vod2.myqcloud.com", "*.duolingo.cn", "*.zjlanbi.com", "*.hnsalt.org.cn", "netease.com", "*.wuxiqiangheng.com", "*.zjzjcp.com", "*.maqingxi.com", "yuanliao.info", "zol.com.cn", "*.51jingying.com", "*.jshihua.com", "*.spthome.com", "*.k6uk.com", "*.mydrivers.com", "gfw.center", "*.pg.com.cn", "*.huatuo.qq.com", "*.pdfdo.com", "*.94rp.com", "*.qkgs.net", "*.mianfeiwendang.com", "*.fjsjsj.com", "*.ctrlqq.com", "6yue.org", "*.cnnic.cn", "*.image.alimmdn.com", "*.vod.pptv.com", "*.image.cdn.zxrtb.com", "prepsmith.com", "*.buycar5.cn", "*.ncmem.com", "*.yunshipei.com", "*.kafan.cn", "*.tiles.ditu.live.com", "yhgo.wang", "*.iask.sina.com.cn", "*.197946.com", "ppmm.org", "*.mefcl.com", "*.5068.com", "*.cpatrk.net", "*.f513.com", "*.ad.xelements.cn", "*.16pic.com", "*.weibopie.com", "*.dious.cc", "*.xschu.com", "*.wyzxwk.com", "*.kguowai.com", "*.video.qq.com", "*.emarbox.com", "*.qwxcs.com", "dibaqu.com", "*.huitiankuaiji.com", "*.casmooc.cn", "*.qyhwqie.cn", "*.bitforex.vip", "*.ivideo.sina.com.cn", "*.kuabo.cn", "*.sina.net", "*.4399.123u.com", "*.com1.z0.glb.clouddn.com", "*.talk99.cn", "*.uuboos.com", "*.aicai.com", "*.51test.net", "*.autonavi.com", "*.mgnav.com", "*.weixue100.com", "*.4paradigm.com", "*.tbcache.com", "*.gzc.vod.tencent-cloud.com", "*.bizcn.com", "*.te5.com", "*.txtxx.net", "*.52ltfw.com", "*.jrcf898.net", "*.wenjuan.pu", "*.med.wanfangdata.com.cn", "*.meizu.cn", "*.xmcimg.com", "*.ggcj.com", "*.chiser.cc", "*.taobao.org", "*.greenxf.com", "*.expotec.com.cn", "*.ccement.com", "*.test.haidii.com", "*.pps.tv", "*.downxia.com", "*.ceaftc.com", "*.qiyipic.com", "*.lkhihfkds.cn", "*.bbaqw.com", "*.zlgjonline.com", "*.hypers.com.cn", "*.lthjjlb.com", "*.wz.twh5.com", "*.royotech.com", "*.volksway.net", "*.gqyy8.com", "*.mydigit.net", "*.ebank.cmbchina.com", "*.51dongshi.com", "*.tencentwm.com", "*.update.kuai8box.com", "*.asklib.com", "*.ggo.net", "*.impactradius-event.com", "*.zol.com", "*.sandai.net", "*.ccdc.com.cn", "*.rneko.com", "*.9136.com", "*.17k.com", "*.liuquanhao.com", "*.kuk8.com", "*.17173cdn.com", "*.leju.com", "*.cctv.com", "*.winxuancdn.com", "*.imdo.co", "*.ifval.com", "*.66997.top", "*.bailitop.com", "*.51cto.com", "*.bjb.com.cn", "*.cgmodel.com", "*.huaxia.com", "*.3s78.com", "*.mofangge.xin", "*.v3n.szbdyd.com", "*.360kan.com", "*.120ask.com", "*.openmsf.3g.qq.com", "*.kcis.org.cn", "*.weitushe.com", "*.zcool.cn", "*.safe.baidu.com", "*.shsixu.com", "*.wulixue.top", "*.szfw.org", "*.xigehuangjia.com", "*.helper.2345.cc", "*.golifemall.com", "*.faw.cn", "*.tonnn.com", "*.hl-avg.com", "*.sdbeta.com", "*.c-s-a.org.cn", "*.miaomiaojia.cc", "*.baa.bitautotech.com", "*.aboutcg.org", "*.sosoyunpan.com", "*.cheshirex.com", "*.tencentcs.com", "*.k73.com", "tool.lu", "*.you.163.com", "*.changingtrip.com", "*.romzj.com", "myhkw.cn", "*.qibaodwight.org", "*.webloom.cn", "*.ideng.com", "*.i.sxl.cn", "*.v1d.pkoplink.com", "*.yuloo.com", "*.bs2.100.com", "*.pic.laogu.wang", "*.365jz.com", "followme-acceleration.com", "*.alibabausercontent.com", "*.dcs.maxthon.com", "*.aiqianxq.com", "*.zuyushop.com", "*.effirst.com", "*.pagechoice.com", "*.bookmarkearth.com", "*.testdaily.cn", "*.shuzilm.cn", "*.lingang-zs.com", "*.meilizai.com", "*.cleafe.com", "*.datangyingxiao.com", "*.ledinside.cn", "*.fkw.com", "*.kebi1.top", "*.kuaizhan.com", "*.stg8.com", "*.segmentfault.net", "*.carrefour.cn", "*.mop.com", "csdnimg.cn", "*.fd.zol-img.com.cn.", "*.bjcathay.com", "*.shicimingju.com", "*.china.com.cn", "*.cntv.baishancdnx.cn", "*.focus.cn", "*.ivdc.org.cn", "*.macdaxue.com", "*.th-water.com", "*.zg234.com", "*.topschool.com", "*.ixigua.com", "*.100font.com", "*.xuesi.cn", "*.anquanzhuomian.com", "*.leiphone.com", "*.114study.com", "*.ssl.qhres2.com", "*.chat.bilibili.com", "*.pcpop.com", "chinaielts.org", "*.chinalawinfo.com", "*.legulegu.com", "*.baicai.cn", "*.ww.taobao.com", "*.ghzs.com", "*.etouch.cn", "*.jcr.cacrnet.org.cn", "*.51img3.com", "*.virshen58.com", "*.eshimin.com", "*.yihaodianimg.com", "*.17sucai.com", "*.gotokeep.com", "*.335i.com.cn", "*.hyyazhaji.com", "*.cx368.com", "*.loushao.net", "*.dns4.cn", "chdbits.cc", "*.famulei.com", "*.bfkdim.com", "*.news.blizzard.com", "*.gaosan.com", "*.ls27.cn", "*.003store.com", "*.usdxz1.net", "*.qqweb.qq.com", "*.stock.sohu.com", "*.sotary.com", "*.thwater.com", "*.antmoe.com", "*.yni84.com", "*.tianya.cn", "*.uve.weibo.com", "*.i4.cn", "*.gangqinpu.com", "*.zenyou.71360.com", "*.ijq.tv", "*.tukuppt.com", "*.hhbrand.net", "*.hongxiu.com", "*.adgoo.cn", "*.dt.dbankcloud.com", "udsdown.xyz", "*.conviva.com", "sangfor.com.cn", "*.kajicam.com", "*.weibo.com", "*.nsiso.com", "*.jdl.cn", "*.027art.com", "*.jumpkj.chuairan.com", "*.takethegre.cn", "*.jisuan.mobi", "*.zhujc.com", "*.weilekangnet.com", "*.xgo-img.com.cn", "*.imgdb.cn", "*.cjmr.org", "*.dhu.edu.cn", "*.hhu.edu.cn", "*.10000.com", "*.18787000118.com", "*.lc1001.com", "*.taoziba.me", "*.brbiotech.com", "*.2144.cn", "*.calibradx.com", "*.qayqa.com", "*.b3log.org", "*.99933.cn", "*.hduofen.cn", "*.smvip8.cn", "egobest.com", "*.hgq26.com", "*.win-winfuture.cn", "*.0mr.cc", "*.79432.com", "*.fapiao.com", "anta.com", "*.bnskd.com", "*.58.com", "*.360.com", "*.linkshop.cn", "*.cscdf.org", "*.antdsp.com", "*.lawinfochina.com", "*.jumpserver.org", "*.music.hicloud.com", "*.mp.oeeee.com", "*.pppf.com.cn", "*.iyunv.com", "*.guojixuexiao.org", "*.oqiao.cn", "*.huabanimg.com", "*.superrl.cn", "*.kkdownload.com", "*.selleck.cn", "*.xhd.cn", "*.agrantsem.com", "*.blob.core.chinacloudapi.cn", "*.163mail.vip", "*.nga.cn", "*.zhidao.baidu.com", "*.osls666.com", "*.push.hicloud.com", "*.ilovezuan.com", "*.sports.cn", "*.officezhushou.com", "*.china.cn", "*.gitv.tv", "*.openspeech.cn", "*.hez70.com", "*.shanbay.com", "*.cartocdn.com", "*.runoob.com", "*.vipstatic.com", "*.iciba.com", "*.acabridge.edu.cn", "*.yuwenmi.com", "*.v.kcdnvip.com", "*.infoqstatic.com", "*.people.cn", "*.365jia.cn", "coyee.com", "*.cdnbye.com", "alibaba-inc.com", "*.videoincloud.com", "*.91feiyong.com", "*.com2.z0.glb.qiniucdn.com", "*.bookln.cn", "*.cghhospital.org", "*.namedq.com", "*.compassedu.hk", "*.fert.cn", "*.seakee.cn", "*.qichetiemo.info", "*.micaiying.com", "*.applysquare.com", "*.orangepi.cn", "*.mindg.cn", "*.52pjb.net", "*.zhihu.com", "beiwaiguoji.com", "*.booksdk.wanyuhudong.com", "*.xueshu.com", "*.yeyushe.cn", "*.chenxixiaoshuo.com", "*.hotjar.com", "*.kdniao.com", "*.126.com", "*.tanx.xom", "*.monidai.com", "*.eu4cn.com", "*.nbcsgo.com", "*.dingtalk.com", "*.news.bandao.cn", "*.fibodata.com", "linux.cn", "*.didistatic.com", "*.jhak.com", "xn--2qux23c9ziyrq.club", "*.asus.com", "sina.net", "*.icoa.cn", "*.hpstore.cn", "*.ext.wps.cn", "*.xiaodutv.com", "*.jjwxc.net", "*.xiahongweishop.com", "*.landian.vip", "*.cfp.cn", "*.sephora.cn", "*.frontjs.com", "1688.com", "*.580590.com", "*.leyuman.com", "ggene.cn", "*.pubg8x.com", "*.ssdfans.com", "*.pplive.cn", "*.chinaz.com", "*.pic.9ht.com", "*.cib.com.cn", "*.eddycjy.com", "*.iflyrec.com", "*.tengrant.com", "yiyouliao.com", "*.baicuoa.com", "*.n.netease.com", "*.kkj.cn", "*.qnqcdn.net", "*.ljcdn.com", "*.neworiental.org", "*.4hw.com.cn", "*.hupu.com", "*.api.lncldapi.com", "*.nbcb.com.cn", "*.zol.com.cn", "*.duba.net", "*.bbtef.cn", "*.cslp.net", "*.xiaosaas.com", "*.tiankong.com", "pc6.com", "*.sunlands.com", "*.api.unipay.qq.com", "*.gk100.com", "*.dplayer.tv", "*.xinhaijiance.com", "*.api.weibo.com", "zhumu.me", "*.chinatool.net", "*.browser.qq.com", "*.xhscdn.com", "koolshare.cn", "*.xiaojukeji.com", "*.99lb.net", "*.mgtv.com.okjx.cc", "*.ganji.com", "*.jinxiuzhilv.com", "*.v0.mgtv.com", "*.image.damor.cn", "*.wanglv.com", "*.guangsuss.com", "*.saicmobility.com", "*.gucci.cn", "*.gomein.net.cn", "*.hao668.net", "*.zhuayoukong.com", "techweb.com.cn", "*.tintuo.com", "*.cdn.vtrois.com", "*.feifei6.com", "youth.cn", "*.file.cache.docer.com", "*.sxhjty.cn", "*.599ku.com", "*.95599.cn", "*.kengso.com", "*.wrating.com", "*.biohope.com.cn", "*.51ctocdn.cn", "*.nosdn.127.net", "*.bookuu.com", "*.weibo.cn", "*.cirs-group.com", "*.qtmojo.com", "*.ixintu.com", "*.saiyouedu.net", "*.ewg1990.com", "johng.cn", "*.netease.im", "*.vankeg.cn", "*.trac.imarvelous.cn", "*.baihexs.com", "*.liebao.cn", "*.hertzhu.com", "*.3sbio.com", "*.api.bsb.baidu.com", "*.heweather.net", "*.xunmzone.com", "*.conf.wsm.360.cn", "*.gtuanb.com", "*.focus-res.cn", "*.letvimg.com", "*.zghncyw.cn", "*.gxfin.com", "thepaper.cn", "*.zip118.com", "iowiki.com", "*.dingxiang-inc.com", "*.qt6.com", "*.xiaorui.cc", "*.supfree.net", "*.fanghuafu.com", "*.mipengine.org", "*.medsci.cn", "*.zhidx.com", "10086.cn", "*.wenshibaowenbei.com", "*.iznb.cn", "*.gkzhan.com", "*.qipao.pptv.com", "*.sohu.com", "*.scdng.com", "*.hanwang.com.cn", "*.538618.com", "*.fishfay.com", "eywedu.com", "*.135958.com", "*.upchord.cn", "*.custeel.com", "*.ad-plus.cn", "*.sic.ac.cn", "*.8684.com", "*.lanzous.com", "*.asiaott.net", "*.vrbrothers.com", "*.hangjianet.com", "*.fearlazy.com", "tiexue.net", "*.w3h5.com", "*.acgjc.com", "*.ymzy.cn", "*.edajin.com", "*.alevel.org.cn", "b3logfile.com", "*.hxswl.com", "*.i1.nxez.com", "*.3gbizhi.com", "*.hankin.cn", "*.acgjie.com", "*.mac163.cn", "*.cnguobin.com", "*.escience.cn", "*.intsci.ac.cn", "*.7x24s.com", "tb.cn", "*.thron.cn", "huanqiu.com", "*.chdbits.cc", "*.sakurajp.com.cn", "*.sm.cn", "*.zizhengjiankang.com", "*.agefans.top", "*.ifengo.com", "*.genomics.cn", "*.gmz88.com", "*.battleofballs.com", "*.simm.cas.cn", "*.qqyou.com", "*.xdplt.com", "*.123bangong.cn", "*.mb.qq.com", "*.cydp5.com", "*.gblhgk.com", "zixizixi.cn", "*.wxsteel.com.cn", "*.shunyu.wang", "*.adutp.com", "*.97973.com", "*.jqhtml.com", "*.easypass.cn", "*.mgtv.com", "*.chongbuluo.com", "*.browser.360.cn", "*.sic.cas.cn", "*.dcloud.net.cn", "*.wts.xinwen.cn", "*.lixianhezi.com", "*.zcool.com.cn", "*.lancdn.com", "*.thermo.com.cn", "*.chainnews.com", "*.bitu360.com", "*.tj.beijing.gov.cn", "*.acc.qq.com.", "*.meldingcloud.com", "*.banma.com", "*.wuhan.net.cn", "*.xfyun.cn", "*.caas.cn", "*.i0f.cn", "suning.com", "*.servicewechat.com", "*.qunhequnhe.com", "*.94nw.com", "*.wall.barkcan.com", "*.diqu114.com", "*.keoaeic.org", "*.skcircle.com", "*.szzbmy.com", "*.xiaomadagege.cn", "*.51job.com", "*.govwza.cn", "*.blog.hexun.com", "*.360buy.com", "*.fxw.la", "*.oit.duke.edu", "*.myalicdn.com", "*.kechuang.org", "*.dm300.com", "*.lrdgb.cn", "*.tupian114.com", "*.upaimv.cn", "*.macdo.cn", "*.eewimg.cn", "*.g.mediav.com", "*.jinshuju.com", "*.ewuqa.com", "*.nugget-bj.com", "*.aiyanqing.com", "*.bitkan.net", "picacgq.com", "*.21cn.com", "*.lz310.com", "*.globalview.cn", "sspai.com", "*.wzcdc.com.cn", "*.guitarchina.com", "*.jiayongluyou.com", "*.cuan.la", "*.trjnd.com", "*.keleyi.com", "*.wejianzhan.com", "*.wan5d.com", "*.inmobi.cn", "*.prep-hplc.com", "*.dmpans.com", "*.ptlogin2.graph.qq.com", "*.workerman.net", "*.csnbgsh.cn", "shengxin.ren", "*.meishij.net", "*.nstool.netease.com", "*.lnka.cn", "*.stat.5054399.net", "*.wxrb.com", "*.soweather.com", "*.126.net", "*.dianzheli.com", "*.job10000.com", "*.airmore.cn", "*.umetrip.com", "*.mh456.com", "*.xuexi.la", "*.racent.com", "*.serum-china.com.cn", "*.yoka.com", "*.fd.zol-img.com.cn", "*.hsylc.cn", "*.qrmanhua.com", "*.scsio.ac.cn", "*.qun.qq.com", "*.imitui.com", "*.fengcv.cn", "*.choupangxia.com", "*.qunar.com", "*.koolshare.cn", "*.workec.com", "*.v6ns.testipv6.cn", "*.macfans.com", "*.qcloudimg.com", "*.damai.cn", "*.moffox.com", "*.zhaoyuntang.com", "*.lvylv.cn", "*.voidcc.com", "*.lim-light.com", "*.gov.cn", "*.felicoz.cn", "*.hypergryph.com", "*.t57.cn", "*.expreview.com", "*.esteelauder.com.cn", "*.ems.com.cn", "*.107788.com", "*.onebox.so.com", "*.luckylion-hongkong.com.cn", "*.cn.miaozhen.com", "*.91danji.com", "*.anyalu.cn", "*.iyuhong.com.cn", "*.nankai.edu.cn", "*.001rz.com", "*.personalsafety-china.com", "*.jianhao666.com", "*.ssp.zxrtb.com", "*.caimoge.net", "*.kejet.net", "youzan.com", "*.i-tongfang.com", "*.yygrammar.com", "*.dwstatic.com", "*.gogo123.com", "*.rechemscience.com", "*.ldmnq.com", "*.jiaoshi.com.cn", "*.cctv.cn", "*.lenovoconnect.com", "*.ijiandao.com", "*.47api.cn", "*.teapm.com", "*.xbingw.com", "*.bowen-craft.com", "*.ylzx.net", "*.orayer.com", "*.wuximediaglobal.com", "*.cn-n1.lcfile.com", "*.wanshifu.com", "*.gfan.com", "*.intech.gdinsight.com", "588ku.com", "*.21cnimg.com", "*.pku.edu.cn", "*.gamedog.cn", "*.langyue123.com", "*.starbucks.com.cn", "*.hq.gedu.org", "*.a.beiing.cn", "*.2exam.com", "bosc.cn", "*.zhaopin.cn", "*.gzledu.com", "*.kdocs.cn", "*.ddssv.com", "*.layuicdn.com", "chaojixue.com.cn", "*.app.cntvwb.cn", "*.qa.igame.163.com", "*.huishenghuiying.com.cn", "*.cache.wpscdn.cn", "*.lizhi.io", "*.xiaoyuanjiu.com", "*.ykimg.com", "*.cnmstl.net", "*.bakaawt.com", "*.dooseen.com", "*.ali.huoxinglaike.com", "*.ldjyhb.com", "*.yunfwe.cn", "*.efapiao.com", "*.zb.qq.com", "*.img.abc188.com", "*.quimg.com", "*.jfsdiwmnbsk005.top", "*.leadingtec.cn", "*.tt114.net", "*.legaldaily.com.cn", "*.w3cschool.cn", "routinepanic.com", "*.lizhi.fm", "*.yxfshop.com", "tudou.com", "*.mengzeda.cn", "*.warnermusic.com.cn", "*.account.mihoyo.com", "*.t-head.cn", "guancha.cn", "*.cn-sh2.ufileos.com", "*.bshare.cn", "*.lanangame.com", "*.kekoku.com", "*.t2wy3.cn", "*.zhipin.com", "*.jianpuw.com", "*.dns.yfcloud.com", "bookinlife.net", "*.dongwm.com", "*.winwin7.com", "*.moore.ren", "*.emui.hicloud.com", "*.saipubbs.com", "*.zoomabc.com", "*.zhlzdhr.cn", "*.wifi8.com", "*.bjyzmz.cn", "*.kutu66.com", "*.wallstcn.com", "*.oversea.cnki.net", "*.xdzgdy.com", "*.pcauto.com.cn", "*.51y5.net", "*.gbzumh.cn", "*.lanzoux.com", "xn--i7qt52bvsr0u0a.com", "*.5156edu.com", "*.tesla.cn", "*.szlcsc.com", "*.ufo001.com", "*.sinnet.com.cn", "*.cnwear.com", "*.bullvet.net", "*.xainjo.com", "*.meipian.me", "*.quan007.com", "*.is.autonavi.com", "aidianji.net", "*.hommk.com", "*.quklive.com", "*.followme-acceleration.com", "*.jhun.edu.cn", "*.chinaventure.com.cn", "*.starbucks.cn", "*.jd.com", "*.aicairen.com", "*.cos.ap-guangzhou.myqcloud.com", "mi.com", "*.xmp.stat.kankan.com", "*.auto.itc.cn", "*.matplotlib.org.cn", "*.udongman.cn", "*.huishij.com", "*.mxmnbkn.cn", "*.qianmu.org", "*.sitp.ac.cn", "*.ednchina.com", "*.gaozhongwuli.com", "*.betteredu.net", "*.assets1.zhufaner.com", "*.map.qq.com", "*.rc03.oray.com", "*.tuicool.com", "*.e-cuttech.com", "*.codercto.com", "*.wmxa.cn", "*.dlied1.cdntips.net", "*.jialingmm.net", "*.saicmotor.com", "*.docx88.com", "*.zkeys.com", "*.read8.org", "*.yhquan365.cn", "*.softtest.com", "mailinstory.com", "*.cjcu.jlu.edu.cn", "*.unispim.com", "*.qzone.com", "*.wdfxw.net", "*.xyaddby.com", "*.foxmail.com", "*.itpwd.com", "*.4008000000.com", "*.fzg360.com", "*.bwcxy.com", "eseewo.com", "*.bjkgjlu.com", "amap.com", "*.sztspi.com", "*.addon.tencentsuite.com", "*.hao61.net", "*.seeocean.top", "*.meipian.cn", "*.shiguangkey.com", "*.gzscbio.com", "*.gentags.net", "*.issjj.com", "*.chinacloudsites.cn", "*.pcsoft.com.cn", "*.lesiclub.cn", "*.91.com", "*.7junshi.com", "*.kanjianshijian.com", "*.ch1-ctc-dd.tv002.com", "*.visionacademy.cn", "*.tt.x.bsgslb.cn", "*.51ldb.com", "*.oodcd.cn", "*.csname.org.cn", "*.ohfrco.com", "*.ruanwenfa.cn", "*.zp68.com", "*.safe524.xyz", "*.elemecdn.com", "*.xcarimg.com", "*.xcar.com.cn", "*.seeyouhealth.com", "*.smartairfilters.com", "*.uscnk.cn", "*.jiakaobaodian.com", "*.mlinks.cc", "*.ibloger.net", "*.favdeb.com", "*.zhinin.com", "*.fznews.com.cn", "*.v1d.szbdyd.com", "*.fifunwl.com", "*.zdline.cn", "*.chedan5.com", "*.hustyx.com", "*.yxgj.net", "*.uniqlo.cn", "*.1xuezhe.exuezhe.com", "codingpy.com", "*.techug.com", "*.zte.com.cn", "*.nhsdlc.cn", "eddycjy.com", "12306.cn", "*.islide.cc", "testipv6.cn", "*.book118.com", "cnjhqxa.cc", "*.candou.com", "*.dxe.jingyuzuo.top", "*.neu.edu.cn", "*.hacpai.com", "*.e-bridge.com.cn", "*.live.com", "*.tianqijun.com", "liulanmi.com", "*.boqiicdn.com", "*.freelycode.com", "*.cgiale.com", "*.ksyungslb.com", "*.smoba.qq.com", "*.baofeng.com", "*.focusky.com.cn", "*.twle.cn", "*.static.promo.phvmax.com", "*.soyohui.com", "*.wall.99downer.com", "*.alimama.com", "*.rjsos.com", "*.chinaztt.cn", "*.nobook.com", "*.oschina.net", "*.gdfm360.com", "cccm-em120.com", "*.ssports.com", "*.verification.jiguang.cn", "*.nie.netease.com", "*.fraudmetrix.cn", "*.wx-qj.cn", "gongzicp.com", "*.jiathis.com", "*.longsays.com", "*.cebbank.com", "*.dibaqu.com", "*.skyfox.org", "*.lietou-edm.com", "*.p2pengine.net", "*.yaoyaoliao.com", "*.vpimg3.com", "*.5054399.com", "*.xmecc.com", "*.hanhanman.top", "topbook.cc", "*.soft.360.cn", "*.jrj.com.cn", "*.r93u.cn", "*.yunlianip.com", "*.yoo800.com", "*.lxwc.com.cn", "*.jjl.cn", "*.tuyitu.com", "*.he2d.com", "*.golink.com", "*.kpzip.com", "*.tplinkcloud.com.cn", "*.t002.ottcn.com", "*.wx.qq.com", "*.xazwy.com", "*.cyberpolice.cn", "*.liangka.vip", "*.ananas.chaoxing.com", "*.eeo.cn", "eallion.com", "*.linkshop.com.cn", "*.lianmeng.360.cn", "*.stgame.cn", "*.vmall.com", "huaban.com", "*.caimoge.org", "*.pptjia.com", "*.lizhigushi.com", "*.alipayobjects.com", "*.ikafan.com", "*.oss-cn-qingdao.aliyuncs.com", "*.ajiaguojiedu.com", "*.paipai.com", "*.go2yd.com", "*.amazon.cn", "*.shop.10010.com", "*.jss.com.cn", "*.jk51.com", "*.guomii.com", "*.vip.xunlei.com", "*.sysceo.net", "vip.com", "huajiakeji.com", "*.jdcloudedge.com", "*.5173cdn.com", "*.ff01s.cn", "*.zlongad.com", "*.investgo.cn", "*.report.qq.com", "*.qpic.cn.fastcdn.com", "*.ziliaoh.com", "*.sigujx.com", "*.chuairan.com", "*.waitsun.com", "*.quickapp.cn", "*.lenovo.net", "*.inktok.com", "*.dahe.cn", "*.pop800.com", "citicbank.com", "*.yateam.clu", "jkeabc.com", "*.zhhainiao.com", "sohu.gg", "*.bootcdn.net", "*.tianji520.cn", "*.testplus.cn", "*.ksjsa.com", "*.xmind.cn", "*.haosou.com", "waqi.info", "pu0glv.cn", "*.myzte.com", "*.kuaishouba.com", "sina.com.cn", "*.rongdingwl.cn", "*.shoujihuifu.com", "*.imgcn.top", "*.bookben.cc", "*.aliapp.org", "*.4008823823.com.cn", "*.xiaoxiangbz.com", "*.xinyuwanju.com", "*.wenxiang.com.cn", "*.webfont.youziku.com", "*.zhongdoulicai.com", "*.lingfengyun.com", "*.sopandas.com", "*.nowcoder.com", "*.jjhaolin.com", "*.pstips.net", "kanbilibili.com", "testerhome.com", "*.huahengbio.com", "jinshuju.net", "*.p2p.qq.com", "*.lzjoy.com", "*.bailiedu.com", "*.meiqiausercontent.com", "*.tu.tudan.cc", "*.highpin.cn", "mh2u.cn", "*.guitarpro.cc", "*.aldwx.com", "*.sptcc.com", "*.cheyisou.com", "*.baidustatic.com", "*.2345daohang.com", "jianshu.com", "*.findingschool.net", "*.digmovie.cn", "*.onvshen.com", "wallstreetcn.com", "*.sfae-cn.com.cn", "*.gtags.net", "*.creditsailing.com", "*.geek-share.com", "*.qianqianxsw.com", "*.wmsj.cn", "*.m1907.cn", "*.artron.net", "*.truerun.com", "*.vankeweekly.com", "*.2345.fkcaijing.com", "*.obs.cn-east-2.myhwclouds.com", "*.btch.edu.cn", "*.iolaw.org.cn", "*.99danji.com", "*.msedge.net", "*.dun.163.com", "*.qhimg.com", "dwz.cn", "amemv.com", "*.gaotime.com", "*.reg.163.com", "douyin.com", "*.qiyel63.com", "*.s3.cn-north-1.jdcloud-oss.com", "*.sanlijia.cn", "*.3conline.com", "*.detaibio.com", "*.anyknew.com", "*.fengyx.com", "*.magtech.com.cn", "*.launcher.battlenet.com.cn", "*.ent-bull.com.cn", "*.vcanbio.com", "*.cjn.cn", "*.zixuekaoshi.net", "*.xiami.net", "*.higeshi.com", "*.smilec.cc", "*.servyou.com.cn", "*.caixin.com", "*.jiaoben.net", "*.anzhuo.cn", "*.bjnews.com.cn", "4kfv18.cn", "*.xc.liaochuo.com", "*.cdntips.com", "*.cncnz.net", "*.weixin.qq.com", "*.cache.weboffice.wpscdn.cn", "*.ereuiib.com", "*.185.hk", "*.show.qq.com", "*.zhuangxiu567.com", "*.baike.com", "*.en998.com", "*.xiaoqinre.com", "*.12349.net", "*.gala.convection.cn", "xiami.com", "*.timelog.xyz", "*.itc.cn", "*.ijournals.cn", "*.bianchengquan.com", "*.toocle.com", "*.mumu.163.com", "*.miaoqulive.com", "*.szrd.com", "*.cwacs.cn", "*.ugdtimg.com", "*.jianke.com", "pyqt5.com", "*.aodepuo.cn", "*.igw2.sdo.com", "3.cn", "*.9ku.com", "qthpp.com", "*.kyhqxx.com", "*.g.com.cn", "*.huohu123.com", "*.liyuxiang123.com", "*.hongranyiliao.com", "*.itools.hk", "*.findlawimg.com", "*.eastchinafair.net", "*.hc360.com", "xn--eqrt2g.xn--vuq861b", "*.icharm.me", "*.ts8.qq.com", "*.dyuadask.com", "*.wildto.com", "*.static.ixueshu.com", "*.yun.ggo.net", "*.zhuhai315.com", "*.kuaishou.com", "*.bxgpay.com", "*.downkuai.com", "*.followme-internet.com", "*.donews.com", "*.chromedownloads.net", "*.airportal.cn", "*.ixarea.com", "*.kankia.com", "gyjyct.com", "*.zhanzhang.net", "macoshome.com", "*.rec.360.cn", "*.keywin.org", "*.rrdyw.cc", "*.cztv.com", "*.alicdn.com", "*.duba.com", "*.itdaan.com", "autonavi.com", "*.qqoi.cn", "*.xhdzx.com", "*.ylface.com", "*.allbrightlaw.com", "*.5173.com", "loggerhead.me", "*.stdaily.com", "*.kgnpwdf.cn", "*.7k7kimg.cn", "*.gendan5.com", "*.lsttnews.com", "*.nqfwx.cn", "*.stcn.com", "*.luyoruv.com", "*.chushoushijian.cn", "*.cncrk.com", "*.juxilm.com", "*.arpun.com", "*.xmu.edu.cn", "*.downza.cn", "*.cnkicheck.info", "*.bjmemc.com.cn", "*.hy.qcloudcdn.com", "*.aiyichuandi.com", "*.leadmanbio.com", "*.chemm.cn", "*.majorbio.com", "*.xitek.com", "*.soshoulu.com", "*.4006787252.com", "*.desktopcal.com", "*.ieway.cn", "*.gionee.com", "*.wedatas.cn", "*.yazuo666.com", "*.metcms.cn", "*.jiajiaoban.cn", "*.pplive.com", "*.3sww.com", "*.sdnlab.com", "*.jianyuweb.com", "*.bendibao.com", "*.cas.cn", "*.langxingoufei.cn", "*.mic.mob.com", "*.nvgs.nvidia.cn", "*.homekoo.com", "*.gdchina.com", "*.bytecdn.cn", "*.app.cn0556.com", "*.macxf.com", "*.shanghaiwow.com", "*.icsmart.cn", "*.soso.com", "*.cctvpic.com", "*.uczzd.cn", "*.bjdgqx.com", "*.jdcloud.com", "*.saigvansp.com", "*.epubit.com", "vpimg2.com", "*.bdimg.com", "*.xbiao.com", "*.523play.com", "*.ecnu.edu.cn", "*.id.qq.com", "*.tianjiunion.cn", "*.973.com", "*.1bianju.com", "*.18183.com", "*.5i4.net", "*.ev123.com", "jj-tv.com", "*.biofeng.com", "*.amobbs.com", "*.baiduyunsousou.com", "*.vip.com", "*.21food.cn", "*.s21i.faiusr.com", "*.clouddeep.cn", "*.meijiedaka.com", "*.zuoyebang.cc", "*.cn.codm.qq.com", "*.bnet.163.com", "*.fusuile.com", "*.woshipm.com", "*.adsame.com", "*.videojj.com", "*.bosc.cn", "*.weiciyun.com", "*.anjiecheng.net", "*.lapetit.cn", "*.dyhjw.com", "*.allyes.com", "*.touqikan.com", "*.yuanlin.com", "*.voovmeeting.com", "*.cb.com.cn", "*.naolifanghealth.com", "*.duoduocdn.com", "*.cnbeta.com", "*.zhongguowangshi.com", "*.kanzhun.com", "*.findlaw.cn", "*.soufunimg.com", "*.photowww.com", "*.5eplay.com", "yinxiang.com", "*.liuliushe.net", "*.p4p.1688.com", "*.faisco.cn", "*.gwdang.com", "4m.cn", "b612kaji.com", "*.ooopic.com", "*.img4399.com", "*.8090yxs.com", "*.dopa.com", "ccia-cleaning.org", "*.htfc.com", "*.jcloud.com", "*.cache.weboffice.wpsgo.com", "*.takefoto.cn", "*.mmszxc.top", "*.hupucdn.com", "fengbj.cn", "*.cnfeol.com", "*.tencentmind.com", "*.sxshcn.com", "*.jl.cn", "*.zoomvip.cn", "*.6wu.cc", "suo.im", "*.aisouk.cn", "*.yfcalc.com", "*.kaitao.cn", "*.xixik.net", "*.analytics.126.net", "*.zxzj.me", "*.dbankcdn.cn", "*.qdwaiqiangbaowen.com", "*.manew.com", "*.mail.163.com", "*.chinathinksbig.com", "*.imququ.com", "*.newrelic.com", "*.vipfinal.com", "*.h3c.com", "*.cheejee.com", "*.chongnikeji.com", "*.getlingxi.cn", "*.pcgeshi.com", "*.ituring.com.cn", "*.zgysyjy.org.cn", "*.match.qq.com", "*.weishi.qq.com", "*.163gz.com", "*.cubead.cn", "qunar.com", "*.hxwglm.com", "*.we39.cn", "yjbys.com", "*.yaoyl.com", "*.gap.cn", "wandoujia.com", "*.wanfem.com", "*.account.itpub.net", "halfrost.com", "*.deeptechchina.com", "*.dataoke.com", "*.zxclqw.com", "*.scbao.com", "*.cm.wmsjsteam.com", "*.nzwgs.com", "*.ningbomicroscope.com", "kingsoft.com", "imququ.com", "*.pupboss.com", "*.firefoxchina.cn", "*.hantop.com.cn", "*.soft7788.com", "*.sf-express.com", "youdao.com", "*.air-level.com", "*.win10down.com", "*.wzu.edu.cn", "*.anjukestatic.com", "*.jiasu.qq.com", "*.sinopharm.com", "*.pocoimg.cn", "*.cn.mooeraudio.com", "ourl.co", "*.homedo.com", "*.macxin.com", "myssl.com", "*.95559.com.cn", "*.jinfangbian.com", "*.9fs.com", "*.msn.cn", "*.img.pcpop.com", "*.ditu.live.com", "*.ranks.xin", "*.meishiedu.com", "*.limei.com", "*.iap.hicloud.com", "*.kaixin001.com", "*.yuque.com", "*.cloud.dbankcloud.cn", "*.229.136.10.prod.hosts.ooklaserver.net", "*.qks.cqut.edu.cn", "*.bfdcdn.com", "*.sccnn.com", "*.cdyee.com", "*.open.com.cn", "*.duohui.co", "*.cfi.net.cn", "*.superlgr.com", "*.downk.cc", "*.kezhaozhao.com", "*.haoword.com", "*.dcocsp.cn", "*.im.weibo.cn", "*.picsh.myqcloud.com", "*.chinaztt.com", "*.jiziyy.com", "*.xlysauc.com", "*.douban.com", "*.kankanews.com", "*.iqair.cn", "*.ydstatic.com", "*.haluoha.com", "*.popin.cc", "*.awaimai.com", "*.acfun.cn", "*.36kr.com", "*.qifeiye.com", "*.7414.cn", "*.beijing-hyundai.com.cn", "*.wuyou.net", "*.msg.toocle.com", "*.qdwght.com", "tonghuacx.com", "*.hjmansion.com", "*.yeboyzq.com", "*.pingseli.com", "*.piimg.com", "*.shjltsg.com", "ocarina-diary.com", "zoom.cn", "*.17223.cn", "*.hqchip.com", "*.hpp360.cn", "*.lexyhome.com", "*.edgesrv.com", "*.sina.cn", "*.66law.cn", "*.j.sinap.ac.cn", "*.baiying.cn", "tesla.cn", "163.com", "xn--ddua45lfy1c.ink", "*.bandao.cn", "*.papersee.org", "*.v1vo.top", "*.zsq55.com", "*.abbisko.com", "*.api.tpns.tencent.com", "*.dtdys.com", "*.3days.cc", "*.stockstar.com", "*.ecorr.cn", "*.btfs.mail.ftn.qq.com", "*.83823.net", "*.5read.com", "*.chinaiprlaw.com", "*.semc.com.cn", "*.et8.net", "*.jc1788.cn", "*.crazyegg.com", "*.df.mob.com", "*.ssl.qhimgs4.com", "*.xqishu.com", "*.zyzj360.com", "*.easypng.com", "ctrip.com", "*.echartsjs.com", "*.jammyfm.com", "*.uimg.cn", "*.838897788.com", "*.dataguru.cn", "*.douyinvod.com", "*.90pan.com", "laod.cn", "*.3dmax8.com", "*.shijian.cc", "*.chinatme.com", "jingkids.com", "*.xingming.com", "*.hanmaker.com", "*.sekorm.com", "*.chunshiedu.com", "cebbank.com", "*.wowoyaya.com", "*.sj.qq.com", "*.hc360.cn", "*.shenyeseo.com", "*.51kaowang.com", "*.daoyihuaxue.com", "*.banzou.name", "*.eduwx.com", "*.photo.store.qq.com", "*.xitongcheng.com", "*.qu2u.com", "*.mi-img.com", "*.m.iqiyi.com", "91.com", "*.askci.com", "*.kxbox.com", "*.ctiku.com", "bitdock.cn", "*.vpimg2.com", "*.laomaotao.net", "*.yuanrenxue.com", "*.kanxue.com", "oldtang.com", "*.image.mucang.cn", "*.apps.apple.com", "bedook.com", "*.baizhiniao.com", "*.risechina.org", "xiaozhanjiaoyu.cn", "*.cmicapm.com", "*.gdtriton.com", "yiweixy.com", "*.shisujie.com", "*.thelittlebridge.cn", "*.geichu.cn", "*.jxzflm.com", "*.ntalker.com", "*.bkt.clouddn.com", "*.apple886.com", "*.dzng.com", "4399.com", "*.acgvideo.com", "*.lingxin-tech.com", "dcdvie.cn", "*.chinatelecom-ec.com", "*.banana123.cn", "*.csno-tarc.cn", "*.hqwx.com", "*.ezhicai.com", "*.beigene.com.cn", "*.fx168.com", "*.heytoefl.com", "*.yo4399.com", "*.canva.sensorsdatavip.com", "*.addthis.com", "*.data.pplive.com", "*.sxqc.com", "xiexingcun.com", "*.orangepi.org", "stackoom.com", "*.amazonaws.com", "*.wendoc.com", "*.pic.paopaoche.net", "*.artlinkart.com", "*.hc-cdn.cn", "*.cos.ap-beijing.myqcloud.com", "*.duiba.com.cn", "*.mycoss.net", "*.yqthjbh.com", "*.818ps.com", "*.hnquxing.com", "*.aicloud.com", "*.166xsk.com", "*.js.xzstatic.com", "*.lmtw.com", "*.qcloudcdn.com", "*.glass.com.cn", "*.hellofont.cn", "*.cumtb.edu.cn", "*.5hte21mz.com", "*.fwqzx.com", "china.com", "*.url.cn", "*.henzan.com", "*.nipic.com", "*.zxjsq.net", "*.tenlonstudio.com", "*.wetest.qq.com", "*.bpimg.com", "*.thinkwithu.com", "*.caijing.com.cn", "*.union.360.cn", "*.5ewin.com", "*.max-c.com", "*.chuimg.com", "wechat.com", "*.weread.qq.com", "*.winemagz.com", "*.paas.cmbchina.com", "*.sameen.art", "*.fjweite.cn", "*.ytbctyy.com", "*.fengmishop.cn", "*.3hbox.com", "*.58.com.cn", "*.ancii.com", "*.ptengine.cn", "*.sh.cn", "*.huawangzhixun.com", "*.busi.inke.cn", "jpsmile.com", "*.infzm.com", "*.ichishu.com", "*.tp-linkshop.com.cn", "*.surveyplus.cn", "*.318yishu.com", "*.gm.mob.com", "*.xinhuanet.com", "*.macx.cn", "*.xlctyd.com", "*.nrcc.com.cn", "*.muchong.com", "*.zybang.com", "*.mos86.com", "csno-tarc.cn", "*.kaola.com", "*.umeng.com", "*.xiuno.com", "*.huadiyingyuan.com", "*.kzhqtx.com", "*.ludashi.com", "*.canva.cn", "*.tuoyuanji88.com", "*.raindi.net", "*.p2hp.com", "*.bookinlife.net", "*.whirlpool.com.cn", "*.radiocarbon.cn", "*.xiang5.com", "fendaiyh.com", "*.bsoft.com.cn", "*.tddmp.com", "*.doutub.com", "*.dwahd.top", "*.tuituifang.com", "ksurl.cn", "*.91tiyu.com.cn", "*.happyyong.com", "*.adxvip.com", "*.gbw114.com", "eywedu.org", "*.fanppp.cn", "*.xyx234.com", "*.fydqw.com", "*.sooyooj.com", "*.so.360.cn", "*.jsimg.cc", "*.bing.com", "*.cmcc-cs.cn", "*.99ys.com", "*.tushu007.com", "kdocs.cn", "*.trs.cn", "*.aftsz.cn", "*.linovel.net", "*.zhongmin.cn", "*.gocn.vip", "*.zuhaohao.com", "qmz5.com", "*.vod.auntec.cn", "*.yunqishi8.com", "*.tctip.com", "*.letv.com", "*.136.la", "*.cn-north-1.jcloudcs.com", "*.pwmqr.com", "*.wjx.top", "*.ceaj.org", "*.oray.com", "*.orsoon.com", "*.langfengblog.cn", "*.v.smtcdns.com", "*.cmos.greencompute.org", "*.webfalse.com", "*.tt.browser.360.cn", "*.jlu.edu.cn", "*.yonyoucloud.com", "*.stream.qqmusic.qq.com", "*.zxkefu.com", "*.jhibs.cn", "*.mymetal.net", "*.pdf-lib.org", "*.amazonaws.com.cn", "*.cc.netease.com", "*.bkw.cn", "apollo.auto", "*.daicuo.cc", "*.made-in-china.com", "*.skhb.com", "*.aldtop.com", "*.darryring.com", "*.chinaielts.org", "*.wanyx.com", "*.addnewer.com", "*.qianyicp.com", "*.shibor.org", "*.qiaomi.cn", "*.ana.microad-z.com", "*.yxssp.com", "*.cosgz.myqcloud.com", "*.geekfan.net", "*.bj.wezhan.cn", "huawei.com", "*.txfund.com", "*.ntimg.cn", "*.005.tv", "*.xdrig.com", "*.openinstall.io", "*.bizhiku.net", "*.ksgnr.com", "*.anyplace.cn", "*.yzppzca.cn", "*.yiche.com", "*.dictapp.youdao.com", "*.qq.huigun.top", "*.95590.cn", "*.chei.com.cn", "*.962600.com", "*.gdsdwan.com", "thron.cn", "4pn.cn", "*.ea3w.com", "*.china-kaoshi.com", "*.ilongyuan.com.cn", "*.yiibai.com", "*.urlaw.cn", "talkimages.cn", "*.quqi.com", "*.wmpvp.com", "*.lorealchina.com", "*.clinicmed.net", "muchong.com", "*.maimemo.com", "*.sho0.cn", "*.ijiaolian.com", "*.jjkk.org", "*.trustutn.org", "*.s3.cn-north-1.amazonaws.com.cn", "*.yhdm.tv", "*.pcfg.cache.wpscdn.cn", "*.vgos.net", "*.zuoyebang.com", "bankofbeijing.com.cn", "*.jb51.net", "*.foxitcloud.cn", "*.gufengmh8.com", "*.verify.mob.com", "*.nxez.com", "*.cjae.net", "*.jintang114.org", "*.map.so.com", "*.seowdw.com", "*.aliexpress.com", "*.pipaw.net", "*.dianji007.com", "*.icoremail.net", "*.afdiancdn.com", "*.linstitute.net", "*.vip.qq.com", "*.2345.cn", "*.2265.com", "*.fudan.edu.cn", "*.dreamhy.com", "*.amingstudio.com", "*.eso999.com", "*.qqwangming6.com", "*.cackui.com", "*.appinn.net", "*.toupiao9.com", "*.qhsetup.com", "*.sinaimg.wuniji123.com", "sohu.com", "*.5cocoi.com", "*.lululemon.cn", "*.intel.cn", "*.shdd01.com", "*.jj1699.cn", "*.sse.com.cn", "*.1xuezhe.com", "*.of-office.com", "*.trustasia.com", "*.sina.com", "*.igxe.cn", "geekfan.net", "*.buyiju.com", "*.bio360.net", "*.9pj8m.com", "*.wan.liebao.cn", "*.alibaba-inc.com", "*.888siv.com", "*.mirrors.tmysam.top", "*.d.163.com", "*.taoshouyou.com", "*.nxkp.org", "*.pp.cn", "*.bnq86.com", "*.laod.wang", "zol.com", "*.dayanzai.me", "*.sports.sohu.com", "*.oss-cn-hangzhou.aliyuncs.com", "*.app.qq.com", "*.diangfu.cn", "*.kfzimg.com", "*.lanzoui.com", "*.mumu3.nie.netease.com", "*.lygbst.cn", "*.pcshadu.cn", "iemblog.com", "*.microsoftstore.com.cn", "*.popkx.com", "*.8090.com", "gocn.vip", "servicewechat.com", "*.abie10.top", "*.1010pic.com", "*.loldk.com", "*.neea.edu.cn", "*.maligugu.com", "*.dfshurufa.comweather", "*.cfi.cn", "*.d1xz.net", "*.2345.com", "*.tiexue.net", "*.sug.so.com", "*.lunwenstudy.com", "lightfc.com", "*.pan131.com", "*.tuoshuiapp.com", "*.luosimao.com", "*.vedamobi.com", "*.tianxiang.com", "*.letvcdn.com", "yangkeduo.com", "*.yiyayan.com", "*.file.myqcloud.com", "segmentfault.com", "prep-hplc.com", "*.blizzard.cn", "*.idp.cn", "*.samsclub-estore.com", "*.chongdiantou.com", "*.st.dl.bscstorage.net", "*.pc.qq.com", "*.shanglearning.com", "novell.me", "*.new1cloud.com", "*.taobao.com", "*.cuplayer.com", "*.daimg.com", "*.autor.com.cn", "*.office.zhuazi.com", "*.ptlogin2.qq.com", "*.198424.com", "iqiqi.me", "*.gvdiguo3.cc", "*.fkpfk.com", "*.lvyoubaotech.com", "*.serengeseba.com", "*.knet.cn", "*.yzftqx.cn", "*.ptbird.cn", "*.m.cn.miaozhen.com", "*.bl.com", "*.ebioweb.com", "*.ucdrs.superlib.net", "*.szlongre.com", "abchina.com", "*.xiaomi.cn", "*.china-drama.com", "*.pcs.baidu.com", "*.shzhanmeng.com", "*.buimg.com", "*.kqidong.com", "*.cn-hangzhou.log.aliyuncs.com", "blueseahr.com"] --------------------------------------------------------------------------------