-
Notifications
You must be signed in to change notification settings - Fork 3.9k
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
自动更新 Hosts 为最快 IP(Windows/Linux 脚本) #42
Comments
# Windows 脚本
然后将其放到 CloudflareST 测速程序所在目录下,双击运行脚本,脚本会申请管理员权限,因此如果你没有关闭 UAC,就会看到用户账户控制提示,选择 [是] 继续。
|
# Linux 脚本
请先进入 CloudflareST 目录下, # 因为脚本已经内置到压缩包中了,所以不再需要下载步骤了,直接执行下面的赋予执行权限命令就行了。
chmod +x cfst_hosts.sh 运行脚本:
首次运行时,脚本会提示以下内容:
即你需要先去 然后在脚本中输入该 IP,按下回车键继续(IP 会存储在 随后脚本就会开始测速、备份 Hosts 文件、替换 IP 等操作,提示内容大概如下:
## 其他说明
如果有什么问题或者更好的建议,请务必告诉我! |
# 定时任务## Linux 系统Linux 自然要用 Cron 来定时执行脚本。 ### 安装 Cron一般各 Linux 系统都自带了 Cron,执行 # 确认你是哪个系统,然后选择对应的命令安装 Cron 程序。
# CentOS 系统:
yum install vixie-cron
yum install crontabs
# Debian/Ubuntu 系统:
apt-get install cron ### 配置 Cron开始编辑定时任务, crontab -e 首次使用可能会提示你如下内容: # 这就是让你选一个文本编辑器,新手建议用默认的 nano,直接回车即可。
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed 然后就会看到一大片的文本,不用管,那些只是注释(井号 # 开头的都是注释),写的是使用方法。
定时任务格式其实很简单: * * * * * cd /xxx && ./cfst_hosts.sh
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 7) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59) 还是看不懂?没关系,我直接给你几个示例(脚本下载): # 假设脚本位于 /root/CloudflareST 目录下(其他位置自己改下面示例),那么:
# 每天凌晨 5 点 0 分,执行一次脚本
0 5 * * * cd /root/CloudflareST && ./cfst_hosts.sh
# 每天凌晨 5 点 30 分,执行一次脚本
30 5 * * * cd /root/CloudflareST && ./cfst_hosts.sh
# 每 6 个小时(0 分时),执行一次脚本
0 */6 * * * cd /root/CloudflareST && ./cfst_hosts.sh
# 每小时 0 分,执行一次脚本
0 * * * * cd /root/CloudflareST && ./cfst_hosts.sh 写入后,保存定时任务:
这时候再去查看定时任务,看看是否保存成功: crontab -l |
你好,请问这个脚本测速是直连的情况下吧?比如我已经 用客户端上网后再运行该脚本,是不是会不准?据说直连的情况下最准,可不可以把它改成在服务器上测速,这样肯定是直连,比较准 |
不是很明白你具体指的是什么?你说的客户端是什么? |
如果要测试结果准确,必须在你的当前网络下进行测速(不管是在电脑还是路由器中运行)。 你要得到的是你链接速度最快的 IP,而不是服务器链接速度最快的 IP。 一般而言,除非你是在路由器上配置了代理账号,否则代理软件是不会影响 CloudflareST 测速结果的。 |
你好, 感谢回复。 我实际是和Winxray结合起来用的,把每次测速的节点放到winxray上,让其测速挑出最快的运行。
那些节点并不失效,只是过了一段时间后速度下降了,时间并不确定,有时一周,有时只有一天,可以理解为动态吧。
我们有个群友他把badafans的测速脚本改了, 直接放到路由器里定时启动测速,并且定时杀进程以防测速没有结果
死循环。最后用微信推送测速结果。我在想如果你能把每次的结果写入winxray,或者是把新的IP与以往的速度做个
比较就更完美了,有时测速并不准确,速度 最快但是油管表现却差强人意。
发件人: XIU2
发送时间: 2021-02-02 07:47
收件人: XIU2/CloudflareSpeedTest
抄送: mongoliabao555; Mention
主题: Re: [XIU2/CloudflareSpeedTest] 自动更新 Hosts 为最快 IP(Windows/Linux 脚本) (#42)
@huanx9
默认不写入 Hosts ?
那你看这个 Issues 就行了。
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
我没用过 winxray,所以并不清楚,因此也不会去专门适配这些软件(或者说这不应该我来做)。 “把新的IP与以往的速度做个比较” 这个只要把新 IP 和旧 IP 单独写到一个文本文件
然后再运行 CloudflareST 并加上
另外,虽然现在很多人拿 CloudflareST 来选择代理速度最快的 IP,但是我写这个软件的初衷只是简单的为了访问使用 Cloudflare CDN 的网站速度更快,自己改 Hosts 用的,只是后来用的人多了,我才发现大家的新用法。 因此,我不会去保证 CloudflareST 测速出来的 IP 用作代理会更快、看油管会更快。 |
exe文件运行后能否静默运行,不会弹出cmd窗口? |
我记得我写 bat 脚本的时候,查过能不能隐藏 CMD 窗口,但是似乎很麻烦,就没继续研究了... 批处理 bat 自身是无法实现的,似乎是需要依赖 vbs 脚本,而且始终会有黑窗口一闪而过... 至于直接运行程序自身,也只能用以上方法,因为 CloudflareST 是个控制台程序,因此无法自己隐藏自己,程序无法控制。 |
但是有个方法可以默认最小化运行 bat 脚本(只显示在任务栏)。 在 bat 文件头部 插入代码后效果如下所示: @echo off
if not "%~1"=="p" start /min cmd.exe /c %0 p&exit
Setlocal Enabledelayedexpansion
... |
软路由openwrt里提示env: can't execute 'bash': No such file or directory |
查了下,这是因为你的 openwrt 系统中没有 Bash 这个 Shell 解释器。 |
确实,opkg update && opkg install bash即可,忘记update了,还以为装不了 |
新年好!我是centos7,我碰到的问题是手动在服务器上执行bash没问题,可是在定时计划里就失败。opkg update && opkg install bash这个命令
我显示
-bash: opkg: command not found。
发件人: ljm1447669873
发送时间: 2021-02-11 18:15
收件人: XIU2/CloudflareSpeedTest
抄送: mongoliabao555; Mention
主题: Re: [XIU2/CloudflareSpeedTest] 自动更新 Hosts 为最快 IP(Windows/Linux 脚本) (#42)
@ljm1447669873
查了下,这是因为你的 openwrt 系统中没有 Bash 这个 Shell 解释器。
确实,opkg update && opkg install bash即可,忘记update了,还以为装不了
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
他那个是 openwrt 系统下缺少 Bash 时用的命令。 你的 CentOS 7 系统肯定不会缺少 Bash 的,所以不需要执行那个人用的命令。 |
大神您好。先膜拜撒花~~ |
是的,软件上填写你的域名,Hosts 文件中把你的域名指向某个 Cloudflare CDN IP。 |
这是正常的,因为你只是在电脑上 Hosts 文件中指向了自定义 IP,因此只有在你电脑上访问该域名才会被强制解析为自定义 IP。 修改 Hosts 文件的影响范围只有你的电脑,除你电脑外的设备去访问/解析该域名,得到的都是默认的 IP。 |
@XIU2 非常感谢。跟着大佬学知识了。尤其感谢您认真仔细的回复。赠人玫瑰,手有余香。 |
感谢大佬,好久不来,出了这个超级工具。
另外,批处理下如何更新CloudflareST.exe 和xray的二进制文件? |
@lost1984 我对批处理(bat/cmd)也不熟,我更擅长 Linux Shell 脚本,当然原理都是一样的。
不过 Windows 下的批处理如果想要下载文件,还需要额外安装命令行工具,例如 curl 。 |
# OpenWrt 下 PassWall 替换脚本小白一个,OpenWrt 我用的 PassWall 刚才自己试了下修改可以替换。
|
@avijxiong 看你排版比较乱,替你优化了下。 |
感谢作者,知乎过来的,我有一个疑问,我们想要访问亚马逊的最快网址写入host我现在一直用的boce.com这个网站测速,把最快的手动写入hosts,现在这个脚本需要怎么修改才能。 |
@lp380490944
这样运行 我平时除了用这个工具测速 Cloudflare CDN 外,也会有和你类似的需求,在访问一些海外网站速度慢的时候,我就会去搜集下这个网站的所有 IP,然后用我这个工具去测速获得 TCPing 延迟最低最稳定的那个 IP 并写入 Hosts 中。 如果你实在不知道怎么做的话,我可以远程协助,需要的话下载这个被控端(单文件用完即删),并告诉我设备代码+临时密码:https://dl.todesk.com/windows/ToDesk_Lite.exe |
太感谢了,感谢无私分享,耐心细致,我先自己弄,实在弄不好,再向您请教。再次感谢~! |
共享一个脚本,自动切换为可用的ip,可以定时执行,需要把xxx.com换成自己hosts里面实际有的一个域名,重启xxx换成自己的命令如systemctl,我是Alpine。 脚本大概意思是,检查对应域名连接是否可用,不可用就把当前ip写到黑名单,从result.csv取一个可用的替换掉。 #!/bin/sh
wget -T 2 -O /dev/null www.google.com > /dev/null 2>&1
if [ $? -eq 0 ];then
echo "connect ok"
exit 0
fi
echo 'connect bad, need change ip'
bad=`cat /etc/hosts|grep xxx.com|awk '{print $1}'`
echo "bad ip: $bad"
grep $bad bad.txt > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "write $bad to bad.txt"
echo $bad >> bad.txt
fi
for new in `cat result.csv |awk -F ',' 'NR>1{print $1}'`;do
grep $new bad.txt > /dev/null 2>&1
if [ $? -eq 0 ];then
sed -i "/^$new/d" result.csv
else
echo "new ip: $new"
echo "change hosts ip"
sed -i "s/$bad/$new/" /etc/hosts
echo "restart xxx"
rc-service xxx restart
break
fi
done |
错别字:
|
大佬,cfst_hosts.sh 这个脚本能不能在开头写入一个判断?查询本机当前使用中的代理服务(v2ray xray或Trojan),如果有就先关闭服务,等测试跑完hosts修改完成后,再重启相对应的服务。这样代理客户端挂载linux服务器上的用户就不用自己先关闭代理再跑测试了。 |
@neilt2016 你自己在开头和结尾处加上停止、启动命令不就行啦。 我这个脚本相当于一个示例模板,大家可以在此基础上修改、扩展、完善等等。 就像我这个项目 CloudflareST 一样,只需要实现最基本、最核心的测速功能,然后大家完全可以自己发挥,根据自己的需求让 CloudflareST 与各种软件、脚本对接/搭配使用(就像我写的这几个脚本一样)。 |
@XIU2 那也是,是我想的太简单,我这边加进去然后功能实现了,最后,感谢您的辛勤付出 |
请教一下大佬,我还没理解修改hosts里面的IP是怎么让访问速度提升的。 比如说,访问自己的远程服务器,其域名为myserver.com,实际IP为123.124.125.126。如果hosts文件中没有定义,那么windows是会去询问DNS服务器的,DNS服务器上存在231.232.233.234与myserver.com的映射关系,那么能找到myserver.com,这个就是通常的访问方式。如果hosts里面做出了定义,那么Windows会首先去看hosts文件,发现文件里面把myserver.com的IP设定为CF给出的231.232.233.234,也就是用您的工具找出来的最快的IP,那么windows就直接连接这个IP。但是问题是,这个IP应该是个公共服务的节点,也许有很多域名都是通过这个IP加速。那么,通过hosts直接访问IP的怎么能对应到自己的域名?除非说,尽管通过IP直接连接,windows发出的访问请求中的发射包仍然存在域名信息,那么CF的这个节点接收到了这个对域名的请求,从而能把请求对应到123.124.125.126。 |
@potus2030
自选一个最快的 IP 实际上就是加速第一个环节(即用户 <=> Cloudflare Anycast IP 之间的速度) 另外,科普一个知识: |
@soxft 我知道,以前有人反馈过,Mac 版本压缩包里的 cfst_hosts.sh 脚本是修改过的。 |
请问AC68U 怎么用? |
大佬,想问一下文中提到执行cfst_hosts.sh之前先去/etc/hosts文件中修改cloudflare CDN ip为统一。我打开我的host文件却找不到有关cloudflare CDN ip,只能看到127.0.0.1。我应该在这些127.0.0.1下边再新建一行把CDN IP及我的域名写入,还是在cfst_hosts.sh首次执行时填写127.0.0.1,让cfst_hosts.sh自动把所有的127.0.0.1都替换成CDN IP?我看见楼上有一个人问过,但是并没有得到我想要知道的答案!所以我想在问问👀 |
@zjwztttt cfst_hosts 脚本是用来测试并替换 hosts 中的 Cloudflare CDN IP 的。 如果 hosts 文件中事先并没有添加任何 Cloudflare CDN IP 相关的解析,那么你可以随意添加一行(IP 是随意的,但不要和 hosts 里其他已有内容重复):
然后运行脚本,根据提示填写 1.1.1.1,脚本就会生成一个 |
配合这里的脚本需要 |
你好,请问这个脚本有可以安装到梅林路由器上应用的吗?应该下载安装哪个?谢谢! |
随便找个 Cloudflare CDN 的 IP 加在 Hosts 里。 说实话,我自认不算小白了,但是今天第一次研究这个愣是没看懂这句话是什么意思,估计很多第一次用这个功能的朋友都不懂把。
|
随便找个 Cloudflare CDN 的 IP 加在 Hosts 里。 说实话,我自认不算小白了,但是今天第一次研究这个愣是没看懂这句话是什么意思,估计很多第一次用这个功能的朋友都不懂把。
|
谢谢你的来信指教,我去尝试一下!
FreeLancer *FD*
***@***.***
…------------------ 原始邮件 ------------------
发件人: "XIU2/CloudflareSpeedTest" ***@***.***>;
发送时间: 2023年2月24日(星期五) 晚上11:27
***@***.***>;
抄送: "FreeLancer ***@***.******@***.***>;
主题: Re: [XIU2/CloudflareSpeedTest] 自动更新 Hosts 为最快 IP(Windows/Linux 脚本) (#42)
Hosts 文件里没有 Cloudflare CDN IP
随便找个 Cloudflare CDN 的 IP 加在 Hosts 里。
我帮你随便找了个 IP 吧,把以下内容写入到 Hosts 文件中(记得要单独一行):
104.21.61.174 dash.cloudflare.com
说实话,我自认不算小白了,但是今天第一次研究这个愣是没看懂这句话是什么意思,估计很多第一次用这个功能的朋友都不懂把。
即你需要先去 C:\Windows\System32\drivers\etc\hosts 文件中将所有 Cloudflare CDN IP 统一改为一个 IP。
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: ***@***.***>
|
@uunxcom 我试着给这段文字扩充了下,应该会好理解一些了。。。 |
感谢分享。很多小白第一次优选ip的话,hosts里面确实没有 Cloudflare CDN IP 。赞一个。 |
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
因为每个域名解析网站的 API 都不同,而这些域名解析网站需要我托管的有域名才能写 API 相关教程/脚本,所以想了一种替代方案,可以把域名写在 Hosts,这样效果也一样,不过缺点就是只能在当前设备上体验最快的 IP。
再考虑到很多人获得最快 Cloudflare CDN IP 后,需要替换 Hosts 文件中的 IP。
那我干脆写个简单的脚本吧!大家使用过程中遇到什么问题或者建议都可以告诉我。 如果用着不错,就点个 ⭐ 吧!
还在一个个添加 Hosts?完美本地加速所有使用 Cloudflare CDN 的网站方法来了!
The text was updated successfully, but these errors were encountered: