作者:端端/Gotchaaa,转载请标明作者,感谢!
感谢脚本真正核心的开源项目:CloudflareSpeedTest
0.建议先备份好 /etc/hosts
中的非优选记录,然后删除MP优选插件、删除 /etc/hosts
中所有优选记录
1.进入需要优选机器的 shell(ssh 连接),下载 cfst.sh 到任意目录,如果命令行下载不了,请尝试另外几个镜像地址,或者到浏览器打开这个链接下载源文件,手动传到你的设备上。
wget -q --show-progress -O cfst.sh https://raw.githubusercontent.com/vanchKong/cloudflare/refs/heads/main/cfst.sh
wget -q --show-progress -O cfst.sh https://ghproxy.net/https://raw.githubusercontent.com/vanchKong/cloudflare/refs/heads/main/cfst.sh
wget -q --show-progress -O cfst.sh https://gh-proxy.com/https://raw.githubusercontent.com/vanchKong/cloudflare/refs/heads/main/cfst.sh
wget -q --show-progress -O cfst.sh https://ghfast.top/https://raw.githubusercontent.com/vanchKong/cloudflare/refs/heads/main/cfst.sh
wget -q --show-progress -O cfst.sh https://ghproxy.com/https://raw.githubusercontent.com/vanchKong/cloudflare/refs/heads/main/cfst.sh
2.在这个脚本的目录下执行 bash cfst.sh
即可。
3.重启相关容器。
新版本的优选已经自动覆盖绝大部分站点,如果你有新的站点,请整理好站点域名和 tracker 域名,已经是否托管在 cf 下的信息,在 QQ 或 微信搜索
端端
来向我提交
脚本做了什么? 每次运行
bash cfst.sh
时,会自动下载远程的加密域名文件,我会尽量保持更新这个域名文件,然后脚本会自动检测这些域名是否托管在 cf 下,以检测结果为准来决定是否添加优选,当无法获取请求头时,以域名文件中预设的结果(这是我事先检查过是否托管的结果,不具备绝对的时效性,仅在你无法获取响应头时会使用)来决定是否添加优选。其他的add、del、list
功能依然照旧
另外,提供一个快捷确认域名是否托管在 cf 下的命令:
curl -sI "https://{domain}" --connect-timeout 10 | grep -i 'server:'
替换{domain}
即可,结果是server: cloudflare
则代表托管在 cf 下
有的时候优选不一定能解决你的连接性问题,你可以通过 curl 命令来确定
curl https://{domain}
如果结果是这样的:curl: (35) Recv failure: Connection reset by peer
,那就是sni阻断,优选也无法解决这个问题,只能等站点提供新的域名或使用代理
开始前,请先关闭代理,防止优选的时候走代理;重置并卸载MP优选插件、删除hosts中所有跟优选相关的记录(vi /etc/hosts,然后使用方向键移动光标到需要删除的那一行,双击 d 即可删除)
进入需要优选设备的ssh,后面基本就是复制粘贴到终端运行即可。需要使用 root 用户运行,如果当前不是root用户,运行 sudo -i
,输入密码。
下载 cfst.sh 到任意目录,如果命令行下载不了,请尝试另外几个镜像地址,或者到浏览器打开这个链接下载源文件,手动传到你的设备上
wget -q --show-progress -O cfst.sh https://raw.githubusercontent.com/vanchKong/cloudflare/refs/heads/main/cfst.sh
wget -q --show-progress -O cfst.sh https://ghproxy.net/https://raw.githubusercontent.com/vanchKong/cloudflare/refs/heads/main/cfst.sh
wget -q --show-progress -O cfst.sh https://gh-proxy.com/https://raw.githubusercontent.com/vanchKong/cloudflare/refs/heads/main/cfst.sh
wget -q --show-progress -O cfst.sh https://ghfast.top/https://raw.githubusercontent.com/vanchKong/cloudflare/refs/heads/main/cfst.sh
wget -q --show-progress -O cfst.sh https://ghproxy.com/https://raw.githubusercontent.com/vanchKong/cloudflare/refs/heads/main/cfst.sh
直接运行 bash cfst.sh
即可,脚本默认有 UB
和 ZM
后续增加站点,或者任意网站,跑下面的命令,该命令会自动检测网站是否托管在CF下,是的情况下会自动添加记录到hosts
bash cfst.sh -add example.com
,同时也支持 bash cfst.sh -add example1.com example2.com
或 bash cfst.sh -add example1.com,example2.com
,删除同理
另外,还有移除优选域名命令: bash cfst.sh -del example.com
,展示当前优选列表命令:bash cfst.sh -list
最新版已经不再需要这样操作,直接执行命令或者直接手动修改hosts文件都可以
需要注意的是,使用这个版本的,不要手动修改hosts文件中优选的记录,需要敲命令来增加和删除,如果一定要手动的话,请一并删除 /opt/CloudflareST/cfst_domains.conf
文件中相应的记录
优选完或是增加域名指向后,如果你是docker启动的相关服务,请重启容器。优选这个操作不需要很频繁,偶尔看看红种情况,发现大面积红种了,就去优选一下(不过也可能被运营商直接阻断了)。
需要重新优选的时候,直接运行 bash cfst.sh
即可(记得保证自己在正确的目录,即当前目录下有 bash cfst.sh
文件)
PS: 无效响应头代表你本身连接性已经很差,很难连上,所以也就获取不到响应头,这个时候就手动确认这个站点或 tracker 实际是否是托管在 cf 的(这个如何确认教程中有),是的话就手动添加该域名或 tracker 到 hosts 文件,ip 就用现在已经出来的
以下是旧版教程,依然适用,上面的脚本也是在做差不多同样的事情
一般我会把它装在 /opt 目录下,当然,如果你知道自己在做什么,你可以按照自己的习惯来,OK,首先切换到 opt 目录、创建文件夹
cd /opt
mkdir CloudflareST && cd CloudflareST
然后下载CloudflareST压缩包
wget -N https://github.com/XIU2/CloudflareSpeedTest/releases/download/v2.2.5/CloudflareST_linux_amd64.tar.gz
如果你是在国内网络环境中下载,那么请使用下面这几个镜像加速之一:
wget -N https://ghp.ci/https://github.com/XIU2/CloudflareSpeedTest/releases/download/v2.2.5/CloudflareST_linux_amd64.tar.gz
wget -N https://ghproxy.net/https://github.com/XIU2/CloudflareSpeedTest/releases/download/v2.2.5/CloudflareST_linux_amd64.tar.gz
wget -N https://gh-proxy.com/https://github.com/XIU2/CloudflareSpeedTest/releases/download/v2.2.5/CloudflareST_linux_amd64.tar.gz
wget -N https://ghproxy.cc/https://github.com/XIU2/CloudflareSpeedTest/releases/download/v2.2.5/CloudflareST_linux_amd64.tar.gz
如果下载失败的话,尝试删除 -N 参数(如果是为了更新,则记得提前删除旧压缩包
rm CloudflareST_linux_amd64.tar.gz
)解压
tar -zxf CloudflareST_linux_amd64.tar.gz
赋予目录执行权限
cd .. && chmod +x CloudflareST && cd CloudflareST
任意打开一个站点,打开控制台切换至
网络/network
选项,保证筛选器选择的是全部
,刷新网页,在网络/network
选项翻到第一个请求,找到响应标头/Response Header
,在里面找server
,如果server
是cloudflare
,则代表该域名可以添加到hosts
文件当中(注意,当前地址栏中是二级域名就添加二级域名,是顶级域名就添加顶级域名,不要自作聪明)。关于tracker:有些站点的 tracker 挂靠在cf下,有些没有,你可以手动添加一个种子下载,查看具体的 tracker 域名是什么(同样,是二级域名就复制二级域名,是顶级域名就复制顶级域名),将域名复制粘贴到浏览器打开,重复刚刚上面对于站点的步骤即可。
你需要编辑的文件是
/etc/hosts
,一般命令是vi /etc/hosts
,进入文件后,按i
进入编辑模式,按Esc
退出编辑模式,退出编辑模式后按:wq
保存退出,按:q!
不保存强制退出如果你之前优选过,但是不知道自己在做什么或者比较模棱两可,建议清空自己的优选(注意!不是清空整个hosts文件),以下基于你已经清空的情况
比如一个站点的域名是 abc.com,经过你的检查,它挂靠在cf下,你可以先随便写个ip,类似这样
1.1.1.1 abc.com
注意中间是有空格的!
为了方便整理,打个比方这个abc站点的tracker域名是 t.abc.com,且同样挂靠在cf下,那么我们可以这样写
1.1.1.1 abc.com t.abc.com
bash /opt/CloudflareST/cfst_hosts.sh
第一次运行此脚本,会让你填写一个ip,该ip就填写你之前随便写的一个ip,这里就填写
1.1.1.1
接下来就会正常进行优选,并替换掉所有和你填写ip匹配的记录
后续添加站点:确认好域名是挂靠在cf下之后,将该域名添加到hosts文件,编辑保存即可
如果你是docker启动的qb、tr、mp、iyuu,优选后,建议重启这些容器。优选周期其实可以拉的很长,所以重启也不会很频繁