Giter Site home page Giter Site logo

xiu2 / cloudflarespeedtest Goto Github PK

View Code? Open in Web Editor NEW
19.1K 122.0 3.7K 341 KB

🌩「自选优选 IP」测试 Cloudflare CDN 延迟和速度,获取最快 IP !当然也支持其他 CDN / 网站 IP ~

License: GNU General Public License v3.0

Go 100.00%
cloudflare cdn speedtest golang go

cloudflarespeedtest's Introduction

XIU2/CloudflareSpeedTest

Go Version Release Version GitHub license GitHub Star GitHub Fork

国外很多网站都在使用 Cloudflare CDN,但分配给**内地访客的 IP 并不友好(延迟高、丢包多、速度慢)。
虽然 Cloudflare 公开了所有 IP 段 ,但想要在这么多 IP 中找到适合自己的,怕是要累死,于是就有了这个软件。

「自选优选 IP」测试 Cloudflare CDN 延迟和速度,获取最快 IP (IPv4+IPv6)!好用的话点个鼓励一下叭~

分享我其他开源项目:TrackersList.com - 全网热门 BT Tracker 列表!有效提高 BT 下载速度~
UserScript - 🐵 Github 高速下载、知乎增强、自动无缝翻页、护眼模式 等十几个油猴脚本~
SNIProxy - 🧷 自用的简单 SNI Proxy(支持全平台、全系统、前置代理、配置简单等~

本项目也支持对其他 CDN / 网站 IP 延迟测速(如:CloudFrontGcore CDN),但下载测速需自行寻找地址

Important

对于代理套 Cloudflare CDN 的忠告,须知这应为备用方案,而不应该是唯一方案,请勿过度依赖 #382 #383


# 快速使用

下载运行

  1. 下载编译好的可执行文件( Github Releases / 蓝奏云 )并解压。
  2. 双击运行 CloudflareST.exe 文件(Windows 系统),等待测速完成...
「 点击查看 Linux 系统下的使用示例 」

以下命令仅为示例,版本号和文件名请前往 Releases 查看。

# 如果是第一次使用,则建议创建新文件夹(后续更新时,跳过该步骤)
mkdir CloudflareST

# 进入文件夹(后续更新,只需要从这里重复下面的下载、解压命令即可)
cd CloudflareST

# 下载 CloudflareST 压缩包(自行根据需求替换 URL 中 [版本号] 和 [文件名])
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.cc/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
# 如果下载失败的话,尝试删除 -N 参数(如果是为了更新,则记得提前删除旧压缩包 rm CloudflareST_linux_amd64.tar.gz )

# 解压(不需要删除旧文件,会直接覆盖,自行根据需求替换 文件名)
tar -zxf CloudflareST_linux_amd64.tar.gz

# 赋予执行权限
chmod +x CloudflareST

# 运行(不带参数)
./CloudflareST

# 运行(带参数示例)
./CloudflareST -dd -tll 90

如果平均延迟非常低(如 0.xx),则说明 CloudflareST 测速时走了代理,请先关闭代理软件后再测速。
如果在路由器上运行,建议先关闭路由器内的代理(或将其排除),否则测速结果可能会不准确/无法使用


手机上独立运行 CloudflareST 测速的简单教程:AndroidAndroid APPIOS

Note

注意!本软件仅适用于网站,不支持给使用 UDP 协议的 Cloudflare WARP 优选 IP,具体见:#392

结果示例

测速完毕后,默认会显示最快的 10 个 IP,示例:

IP 地址           已发送  已接收  丢包率  平均延迟  下载速度 (MB/s)
104.27.200.69     4       4       0.00    146.23    28.64
172.67.60.78      4       4       0.00    139.82    15.02
104.25.140.153    4       4       0.00    146.49    14.90
104.27.192.65     4       4       0.00    140.28    14.07
172.67.62.214     4       4       0.00    139.29    12.71
104.27.207.5      4       4       0.00    145.92    11.95
172.67.54.193     4       4       0.00    146.71    11.55
104.22.66.8       4       4       0.00    147.42    11.11
104.27.197.63     4       4       0.00    131.29    10.26
172.67.58.91      4       4       0.00    140.19    9.14
...

# 如果平均延迟非常低(如 0.xx),则说明 CloudflareST 测速时走了代理,请先关闭代理软件后再测速。
# 如果在路由器上运行,请先关闭路由器内的代理(或将其排除),否则测速结果可能会不准确/无法使用。

# 因为每次测速都是在每个 IP 段中随机 IP,所以每次的测速结果都不可能相同,这是正常的!

# 注意!我发现电脑开机后第一次测速延迟会明显偏高(手动 TCPing 也一样),后续测速都正常
# 因此建议大家开机后第一次正式测速前,先随便测几个 IP(无需等待延迟测速完成,只要进度条动了就可以直接关了)

# 软件在 默认参数 下的整个流程大概步骤:
# 1. 延迟测速(默认 TCPing 模式,HTTPing 模式需要手动加上参数)
# 2. 延迟排序(延迟 从低到高 排序并按条件过滤,不同丢包率会分开排序,因此可能会有一些延迟低但丢包的 IP 排到后面)
# 3. 下载测速(从延迟最低的 IP 开始依次下载测速,默认测够 10 个就会停止)
# 4. 速度排序(速度从高到低排序)
# 5. 输出结果(通过参数控制是否输出到命令行(-p 0)或输出到文件(-o ""))

# 注意:输出的结果文件 result.csv 通过微软 Excel 表格打开会中文乱码,这是正常的,其他表格软件/记事本都显示正常

测速结果第一行就是既下载速度最快、又平均延迟最低的最快 IP

完整结果保存在当前目录下的 result.csv 文件中,用记事本/表格软件打开,格式如下:

IP 地址,已发送,已接收,丢包率,平均延迟,下载速度 (MB/s)
104.27.200.69,4,4,0.00,146.23,28.64

大家可以按自己需求,对完整结果进一步筛选处理,或者去看一看进阶使用指定过滤条件


# 进阶使用

直接运行使用的是默认参数,如果想要测速结果更全面、更符合自己的要求,可以自定义参数。

C:\>CloudflareST.exe -h

CloudflareSpeedTest vX.X.X
测试 Cloudflare CDN 所有 IP 的延迟和速度,获取最快 IP (IPv4+IPv6)!
https://github.com/XIU2/CloudflareSpeedTest

参数:
    -n 200
        延迟测速线程;越多延迟测速越快,性能弱的设备 (如路由器) 请勿太高;(默认 200 最多 1000)
    -t 4
        延迟测速次数;单个 IP 延迟测速的次数;(默认 4 次)
    -dn 10
        下载测速数量;延迟测速并排序后,从最低延迟起下载测速的数量;(默认 10 个)
    -dt 10
        下载测速时间;单个 IP 下载测速最长时间,不能太短;(默认 10 秒)
    -tp 443
        指定测速端口;延迟测速/下载测速时使用的端口;(默认 443 端口)
    -url https://cf.xiu2.xyz/url
        指定测速地址;延迟测速(HTTPing)/下载测速时使用的地址,默认地址不保证可用性,建议自建;

    -httping
        切换测速模式;延迟测速模式改为 HTTP 协议,所用测试地址为 [-url] 参数;(默认 TCPing)
        注意:HTTPing 本质上也算一种 网络扫描 行为,因此如果你在服务器上面运行,需要降低并发(-n),否则可能会被一些严格的商家暂停服务。
        如果你遇到 HTTPing 首次测速可用 IP 数量正常,后续测速越来越少甚至直接为 0,但停一段时间后又恢复了的情况,那么也可能是被 运营商、Cloudflare CDN 认为你在网络扫描而 触发临时限制机制,因此才会过一会儿就恢复了,建议降低并发(-n)减少这种情况的发生。
    -httping-code 200
        有效状态代码;HTTPing 延迟测速时网页返回的有效 HTTP 状态码,仅限一个;(默认 200 301 302)
    -cfcolo HKG,KHH,NRT,LAX,SEA,SJC,FRA,MAD
        匹配指定地区;地区名为当地机场三字码,英文逗号分隔,支持小写,支持 CloudflareAWS CloudFront,仅 HTTPing 模式可用;(默认 所有地区)

    -tl 200
        平均延迟上限;只输出低于指定平均延迟的 IP,各上下限条件可搭配使用;(默认 9999 ms)
    -tll 40
        平均延迟下限;只输出高于指定平均延迟的 IP;(默认 0 ms)
    -tlr 0.2
        丢包几率上限;只输出低于/等于指定丢包率的 IP,范围 0.00~1.000 过滤掉任何丢包的 IP;(默认 1.00)
    -sl 5
        下载速度下限;只输出高于指定下载速度的 IP,凑够指定数量 [-dn] 才会停止测速;(默认 0.00 MB/s)

    -p 10
        显示结果数量;测速后直接显示指定数量的结果,为 0 时不显示结果直接退出;(默认 10 个)
    -f ip.txt
        IP段数据文件;如路径含有空格请加上引号;支持其他 CDN IP段;(默认 ip.txt)
    -ip 1.1.1.1,2.2.2.2/24,2606:4700::/32
        指定IP段数据;直接通过参数指定要测速的 IP 段数据,英文逗号分隔;(默认 空)
    -o result.csv
        写入结果文件;如路径含有空格请加上引号;值为空时不写入文件 [-o ""];(默认 result.csv)

    -dd
        禁用下载测速;禁用后测速结果会按延迟排序 (默认按下载速度排序);(默认 启用)
    -allip
        测速全部的IP;对 IP 段中的每个 IP (仅支持 IPv4) 进行测速;(默认 每个 /24 段随机测速一个 IP)

    -v
        打印程序版本 + 检查版本更新
    -h
        打印帮助说明

界面解释

为了避免大家对测速过程中的输出内容产生误解(可用、队列等数字,下载测速一半就"中断"?),我特意解释下。

「 点击展开 查看内容 」

该示例把常用参数都给加上了,即为:-ttl 40 -tl 150 -sl 1 -dn 5,最后输出结果如下:

# XIU2/CloudflareSpeedTest vX.X.X

开始延迟测速模式TCP, 端口443, 范围40 ~ 150 ms, 丢包1.00)
321 / 321 [-----------------------------------------------------------] 可用: 30
开始下载测速下限1.00 MB/s, 数量5, 队列103 / 5 [-------------------------------------------------------------]
IP 地址           已发送  已接收  丢包率  平均延迟  下载速度 (MB/s)
XXX.XXX.XXX.XXX   4       4      0.00    83.32    3.66
XXX.XXX.XXX.XXX   4       4      0.00    107.81   2.49
XXX.XXX.XXX.XXX   4       3      0.25    149.59   1.04

完整测速结果已写入 result.csv 文件可使用记事本/表格软件查看按下 回车键  Ctrl+C 退出

刚接触 CloudflareST 的人,可能会迷惑明明延迟测速可用 IP 有 30 个,怎么最后只剩下 3 个了呢?
下载测速里的队列又是什么意思?难道我下载测速还要排队?

CloudflareST 会先延迟测速,在这过程中进度条右侧会实时显示可用 IP 数量(可用: 30),但注意该可用数量指的是测试通过没有超时的 IP 数量,和延迟上下限、丢包条件无关。当延迟测速完成后,因为还指定了延迟上下限、丢包的条件,所以按照条件过滤后只剩下 10 个了(也就是等待下载测速的 队列:10)。

即以上示例中,321 个 IP 延迟测速完成后,只有 30 个 IP 测试通过没有超时,然后根据延迟上下限范围:40 ~ 150 ms 及丢包上限条件过滤后,只剩下 10 个满足要求的 IP 了。如果你 -dd 禁用了下载测速,那么就会直接输出这 10 个 IP 了。当然该示例并未禁用,因此接下来软件会继续对这 10 个 IP 进行下载测速(队列:10)。

因为下载测速是单线程一个个 IP 挨着排队测速的,因此等待下载测速的 IP 数量才会叫做 队列


你可能注意到了,明明指定了要找到 5 个满足下载速度条件的 IP,怎么才 3 个就 “中断” 了呢?

下载测速进度条中的 3 / 5,前者指的是找到了 3 个满足下载速度下限条件的 IP(即下载速度高于 1 MB/s ),后者 5 指的是你要求找到 5 个满足下载速度下限条件的 IP(-dn 5)。

另外,提醒一下,如果你指定的 -dn 大于下载测速队列,比如你延迟测速后只剩下 4 个 IP 了,那么下载测速进度条中后面的数字就会和下载测速队列一样都是 4 个,而非你 -dn 指定的 5 个了。

软件在测速完这 10 个 IP 后,只找到了 3 个下载速度高于 1 MB/s 的 IP,剩下的 7 个 IP 都是 “不及格” 的。

因此,这不是 “每次测速都不到 5 就中断了”,而是所有 IP 都下载测速完了,但却只找到了 3 个满足条件的。


如果不想遇到这种全部测速一遍都没几个满足条件的情况,那么就要调低下载速度上限参数 -sl,或者移除。

因为只要指定了 -sl 参数,那么只要没有凑够 -dn 的数量(默认 10 个),就会一直测速下去,直到凑够或全部测速完。移除 -sl 并添加 -dn 20 参数,这样就是只测速延迟最低的前 20 个 IP,测速完就停止,节省时间。


另外,如果全部队列 IP 都测速完了,但一个满足下载速度条件的 IP 都没有,那么就会直接输出全部队列 IP 的下载测速结果,这样你就能看到这些 IP 的下载速度都有多少,心里也就有数了,然后适当调低 -sl 再试试

同样,延迟测速方面,可用: 30队列:10 这两个数值也可以让你清楚,你设置的延迟条件对你来说是否过于苛刻。如果可用 IP 一大堆,但条件过滤后只剩下 2、3 个,那不用说就知道需要调低预期的延迟/丢包条件了。

这两个机制,一个是告诉你延迟丢包条件是否合适的,一个是告诉你下载速度条件是否合适的。


使用示例

Windows 要指定参数需要在 CMD 中运行,或者把参数添加到快捷方式目标中。

Tip

  • 各参数均有默认值,使用默认值的参数是可以省略的(按需选择),参数不分前后顺序
  • Windows PowerShell 只需把下面命令中的 CloudflareST.exe 改为 .\CloudflareST.exe 即可。
  • Linux 系统只需要把下面命令中的 CloudflareST.exe 改为 ./CloudflareST 即可。

# CMD 带参数运行 CloudflareST

对命令行程序不熟悉的人,可能不知道该如何带参数运行,我就简单说一下。

「 点击展开 查看内容 」

很多人打开 CMD 以绝对路径运行 CloudflareST 会报错,这是因为默认的 -f ip.txt 参数是相对路径,需要指定绝对路径的 ip.txt 才行,但这样毕竟太麻烦了,因此还是建议进入 CloudflareST 程序目录下,以相对路径方式运行:

方式 一

  1. 打开 CloudflareST 程序所在目录
  2. 空白处按下 Shift + 鼠标右键 显示右键菜单
  3. 选择 [在此处打开命令窗口] 来打开 CMD 窗口,此时默认就位于当前目录下
  4. 输入带参数的命令,如:CloudflareST.exe -tll 50 -tl 200即可运行

方式 二

  1. 打开 CloudflareST 程序所在目录
  2. 直接在文件夹地址栏中全选并输入 cmd 回车来打开 CMD 窗口,此时默认就位于当前目录下
  3. 输入带参数的命令,如:CloudflareST.exe -tll 50 -tl 200即可运行

当然你也可以随便打开一个 CMD 窗口,然后输入如 cd /d "D:\Program Files\CloudflareST" 来进入程序目录

提示:如果用的是 PowerShell 只需把命令中的 CloudflareST.exe 改为 .\CloudflareST.exe 即可。


# Windows 快捷方式带参数运行 CloudflareST

如果不经常修改运行参数(比如平时都是直接双击运行)的人,建议使用快捷方式,更方便点。

「 点击展开 查看内容 」

右键 CloudflareST.exe 文件 - [创建快捷方式],然后右键该快捷方式 - [属性],修改其目标

# 如果要不输出结果文件,那么请加上 -o " ",引号里的是空格(没有空格会导致该参数被省略)。
D:\ABC\CloudflareST\CloudflareST.exe -n 500 -t 4 -dn 20 -dt 5 -o " "

# 如果文件路径包含引号,则需要把启动参数放在引号外面,记得引号和 - 之间有空格。
"D:\Program Files\CloudflareST\CloudflareST.exe" -n 500 -t 4 -dn 20 -dt 5 -o " "

# 注意!快捷方式 - 起始位置 不能是空的,否则就会因为绝对路径而找不到 ip.txt 文件

# IPv4/IPv6

「 点击展开 查看内容 」
# 指定自带的 IPv4 数据文件可测速这些 IPv4 地址(-f 默认值就是 ip.txt,所以该参数可省略)
CloudflareST.exe -f ip.txt

# 指定自带的 IPv6 数据文件可测速这些 IPv6 地址
# 另外,v2.1.0 版本后支持 IPv4+IPv6 混合测速并移除了 -ipv6 参数,因此一个文件内可以同时包含 IPv4+IPv6 地址
CloudflareST.exe -f ipv6.txt

# 也可以直接通过参数指定要测速的 IP
CloudflareST.exe -ip 1.1.1.1,2606:4700::/32

测速 IPv6 时,可能会注意到每次测速数量都不一样,了解原因: #120
因为 IPv6 太多(以亿为单位),且绝大部分 IP 段压根未启用,所以我只扫了一部分可用的 IPv6 段写到 ipv6.txt 文件中,有兴趣的可以自行扫描增删,ASN 数据源来自:bgp.he.net


# HTTPing

「 点击展开 查看内容 」

目前有两种延迟测速模式,分别为 TCP 协议、HTTP 协议
TCP 协议耗时更短、消耗资源更少,超时时间为 1 秒,该协议为默认模式。
HTTP 协议适用于快速测试某域名指向某 IP 时是否可以访问,超时时间为 2 秒。
同一个 IP,各协议去 Ping 得到的延迟一般为:ICMP < TCP < HTTP,越靠右对丢包等网络波动越敏感。

注意:HTTPing 本质上也算一种网络扫描行为,因此如果你在服务器上面运行,需要降低并发(-n),否则可能会被一些严格的商家暂停服务。如果你遇到 HTTPing 首次测速可用 IP 数量正常,后续测速越来越少甚至直接为 0,但停一段时间后又恢复了的情况,那么也可能是被 运营商、Cloudflare CDN 认为你在网络扫描而触发临时限制机制,因此才会过一会儿就恢复了,建议降低并发(-n)减少这种情况的发生。

另外,本软件 HTTPing 仅获取响应头(response headers),并不获取正文内容(即 URL 文件大小不影响 HTTPing 测试,但如果你还要下载测速的话,那么还是需要一个大文件的),类似于 curl -i 功能。

# 只需加上 -httping 参数即可切换到 HTTP 协议延迟测速模式
CloudflareST.exe -httping

# 软件会根据访问时网页返回的有效 HTTP 状态码来判断可用性(当然超时也算),默认对返回 200 301 302 这三个 HTTP 状态码的视为有效,可以手动指定认为有效的 HTTP 状态码,但只能指定一个(你需要提前确定测试地址正常情况下会返回哪个状态码)
CloudflareST.exe -httping -httping-code 200

# 通过 -url 参数来指定 HTTPing 测试地址(可以是任意网页 URL,不局限于具体文件地址)
CloudflareST.exe -httping -url https://cf.xiu2.xyz/url
# 如果你要 HTTPing 测试其他网站/CDN,那么指定一个该网站/使用该 CDN 的地址(因为软件默认地址是 Cloudflare 的,只能用于测试 Cloudflare 的 IP)

# 注意:如果测速地址为 HTTP 协议,记得加上 -tp 80(这个参数会影响 延迟测速/下载测速 时使用的端口)
# 同理,如果要测速 80 端口,那么也需要加上 -url 参数来指定一个 http:// 协议的地址才行(且该地址不会强制重定向至 HTTPS),如果是非 80 443 端口,那么需要确定该下载测速地址是否支持通过该端口访问。
CloudflareST.exe -httping -tp 80 -url http://cdn.cloudflare.steamstatic.com/steam/apps/5952/movie_max.webm

# 匹配指定地区(colo 机场三字码)

「 点击展开 查看内容 」
# 该功能支持 Cloudflare CDN、AWS CloudFront CDN,且这两个 CDN 的机场三字码是通用的
# 注意:如果你要用于筛选 AWS CloudFront CDN 地区,那么要通过 -url 参数指定一个使用该 CDN 的地址(因为软件默认地址是 Cloudflare 的)

# 指定地区名后,延迟测速后得到的结果就都是指定地区的 IP 了(也可以继续进行下载测速)
# 节点地区名为当地 机场三字码,指定多个时用英文逗号分隔,v2.2.3 版本后支持小写

CloudflareST.exe -cfcolo HKG,KHH,NRT,LAX,SEA,SJC,FRA,MAD

# 注意,该参数只有在 HTTPing 延迟测速模式下才可用(因为要访问网页来获得)

两个 CDN 机场三字码通用,因此各地区名可见:https://www.cloudflarestatus.com/


# 文件相对/绝对路径

「 点击展开 查看内容 」
# 指定 IPv4 数据文件,不显示结果直接退出,输出结果到文件(-p 值为 0)
CloudflareST.exe -f 1.txt -p 0 -dd

# 指定 IPv4 数据文件,不输出结果到文件,直接显示结果(-p 值为 10 条,-o 值为空但引号不能少)
CloudflareST.exe -f 2.txt -o "" -p 10 -dd

# 指定 IPv4 数据文件 及 输出结果到文件(相对路径,即当前目录下,如含空格请加上引号)
CloudflareST.exe -f 3.txt -o result.txt -dd


# 指定 IPv4 数据文件 及 输出结果到文件(相对路径,即当前目录内的 abc 文件夹下,如含空格请加上引号)
# Linux(CloudflareST 程序所在目录内的 abc 文件夹下)
./CloudflareST -f abc/3.txt -o abc/result.txt -dd

# Windows(注意是反斜杠)
CloudflareST.exe -f abc\3.txt -o abc\result.txt -dd


# 指定 IPv4 数据文件 及 输出结果到文件(绝对路径,即 C:\abc\ 目录下,如含空格请加上引号)
# Linux(/abc/ 目录下)
./CloudflareST -f /abc/4.txt -o /abc/result.csv -dd

# Windows(注意是反斜杠)
CloudflareST.exe -f C:\abc\4.txt -o C:\abc\result.csv -dd


# 如果要以【绝对路径】运行 CloudflareST,那么 -f / -o 参数中的文件名也必须是【绝对路径】,否则会报错找不到文件!
# Linux(/abc/ 目录下)
/abc/CloudflareST -f /abc/4.txt -o /abc/result.csv -dd

# Windows(注意是反斜杠)
C:\abc\CloudflareST.exe -f C:\abc\4.txt -o C:\abc\result.csv -dd

# 测速其他端口

「 点击展开 查看内容 」
# 如果你想要测速非默认 443 的其他端口,则需要通过 -tp 参数指定(该参数会影响 延迟测速/下载测速 时使用的端口)

# 如果要延迟测速 80 端口+下载测速(如果 -dd 禁用了下载测速则不需要),那么还需要指定 http:// 协议的下载测速地址才行(且该地址不会强制重定向至 HTTPS,因为那样就变成 443 端口了)
CloudflareST.exe -tp 80 -url http://cdn.cloudflare.steamstatic.com/steam/apps/5952/movie_max.webm

# 如果是非 80 443 的其他端口,那么需要确定你使用的下载测速地址是否支持通过该非标端口访问。

# 自定义测速地址

「 点击展开 查看内容 」
# 该参数适用于下载测速 及 HTTP 协议的延迟测速,对于后者该地址可以是任意网页 URL(不局限于具体文件地址)

# 地址要求:可以直接下载、文件大小超过 200MB、用的是 Cloudflare CDN
CloudflareST.exe -url https://cf.xiu2.xyz/url

# 注意:如果测速地址为 HTTP 协议(该地址不能强制重定向至 HTTPS),记得加上 -tp 80(这个参数会影响 延迟测速/下载测速 时使用的端口),如果是非 80 443 端口,那么需要确定下载测速地址是否支持通过该端口访问。
CloudflareST.exe -tp 80 -url http://cdn.cloudflare.steamstatic.com/steam/apps/5952/movie_max.webm

# 自定义测速条件(指定 延迟/丢包/下载速度 的目标范围)

「 点击展开 查看内容 」

注意:延迟测速进度条右边的可用数量,仅指延迟测速过程中未超时的 IP 数量,和延迟上下限条件无关。

  • 仅指定 [平均延迟上限] 条件
# 平均延迟上限:200 ms,下载速度下限:0 MB/s
# 即找到平均延迟低于 200 ms 的 IP,然后再按延迟从低到高进行 10 次下载测速
CloudflareST.exe -tl 200

如果没有找到一个满足延迟条件的 IP,那么不会输出任何内容。


  • 仅指定 [平均延迟上限] 条件,且只延迟测速,不下载测速
# 平均延迟上限:200 ms,下载速度下限:0 MB/s,数量:不知道多少 个
# 即只输出低于 200ms 的 IP,且不再下载测速(因为不再下载测速,所以 -dn 参数就无效了)
CloudflareST.exe -tl 200 -dd
  • 仅指定 [丢包几率上限] 条件
# 丢包几率上限:0.25
# 即找到丢包率低于等于 0.25 的 IP,范围 0.00~1.00,如果 -tlr 0 则代表过滤掉任何丢包的 IP
CloudflareST.exe -tlr 0.25

  • 仅指定 [下载速度下限] 条件
# 平均延迟上限:9999 ms,下载速度下限:5 MB/s,数量:10 个(可选)
# 即需要找到 10 个平均延迟低于 9999 ms 且下载速度高于 5 MB/s 的 IP 才会停止测速
CloudflareST.exe -sl 5 -dn 10

如果没有找到一个满足速度条件的 IP,那么会忽略条件输出所有 IP 测速结果(方便你下次测速时调整条件)。

没有指定平均延迟上限时,如果一直凑不够满足条件的 IP 数量,就会一直测速下去。
所以建议同时指定 [下载速度下限] + [平均延迟上限],这样测速到指定延迟上限还没凑够数量,就会终止测速。


  • 同时指定 [平均延迟上限] + [下载速度下限] 条件
# 平均延迟上限、下载速度下限均支持小数(如 -sl 0.5)
# 平均延迟上限:200 ms,下载速度下限:5.6 MB/s,数量:10 个(可选)
# 即需要找到 10 个平均延迟低于 200 ms 且下载速度高于 5 .6MB/s 的 IP 才会停止测速
CloudflareST.exe -tl 200 -sl 5.6 -dn 10

如果没有找到一个满足延迟条件的 IP,那么不会输出任何内容。
如果没有找到一个满足速度条件的 IP,那么会忽略条件输出所有 IP 测速结果(方便你下次测速时调整条件)。
所以建议先不指定条件测速一遍,看看平均延迟和下载速度大概在什么范围,避免指定条件过低/过高

因为 Cloudflare 公开的 IP 段是回源 IP+任播 IP,而回源 IP是无法使用的,所以下载测速是 0.00。
运行时可以加上 -sl 0.01(下载速度下限),过滤掉回源 IP(下载测速低于 0.01MB/s 的结果)。


# 单独对一个或多个 IP 测速

「 点击展开 查看内容 」

方式 一: 直接通过参数指定要测速的 IP 段数据。

# 先进入 CloudflareST 所在目录,然后运行:
# Windows 系统(在 CMD 中运行)
CloudflareST.exe -ip 1.1.1.1,2.2.2.2/24,2606:4700::/32

# Linux 系统
./CloudflareST -ip 1.1.1.1,2.2.2.2/24,2606:4700::/32

方式 二: 或者把这些 IP 按如下格式写入到任意文本文件中,例如:1.txt

1.1.1.1
1.1.1.200
1.0.0.1/24
2606:4700::/32

单个 IP 的话可以省略 /32 子网掩码了(即 1.1.1.1等同于 1.1.1.1/32)。
子网掩码 /24 指的是这个 IP 最后一段,即 1.0.0.1~1.0.0.255

然后运行 CloudflareST 时加上启动参数 -f 1.txt 来指定 IP 段数据文件。

# 先进入 CloudflareST 所在目录,然后运行:
# Windows 系统(在 CMD 中运行)
CloudflareST.exe -f 1.txt

# Linux 系统
./CloudflareST -f 1.txt

# 对于 1.0.0.1/24 这样的 IP 段只会随机最后一段(1.0.0.1~255),如果要测速该 IP 段中的所有 IP,请加上 -allip 参数。

# 一劳永逸加速所有使用 Cloudflare CDN 的网站(不需要再一个个添加域名到 Hosts 了)

我以前说过,开发该软件项目的目的就是为了通过改 Hosts 的方式来加速访问使用 Cloudflare CDN 的网站

但就如 #8 所说,一个个添加域名到 Hosts 实在太麻烦了,于是我就找到了个一劳永逸的办法!可以看这个 还在一个个添加 Hosts?完美本地加速所有使用 Cloudflare CDN 的网站方法来了! 和另一个依靠本地 DNS 服务来修改域名解析 IP 为自选 IP 的教程。


# 自动更新 Hosts

考虑到很多人获得最快 Cloudflare CDN IP 后,需要替换 Hosts 文件中的 IP。

可以看这个 Issues 获取 Windows/Linux 自动更新 Hosts 脚本


问题反馈

如果你遇到什么问题,可以先去 IssuesDiscussions 里看看是否有别人问过了(记得去看下 Closed 的)。
如果没找到类似问题,请新开个 Issues 来告诉我!

Note

注意与 CloudflareST 本身 反馈问题、功能建议 无关的,请前往项目内部 论坛 讨论(顶部的 💬 Discussions


赞赏支持

微信赞赏支付宝赞赏


衍生项目

此处仅收集了在本项目中宣传过的部分 CloudflareST 相关衍生项目,如果有遗漏可以告诉我~


感谢项目

因为该项目已经很长时间没更新了,而我又产生了很多功能需求,所以我临时学了下 Go 语言就上手了(菜)...
本软件基于该项目制作,但已添加大量功能及修复 BUG,并根据大家的使用反馈积极添加、优化功能(闲)...


手动编译

「 点击展开 查看内容 」

为了方便,我是在编译的时候将版本号写入代码中的 version 变量,因此你手动编译时,需要像下面这样在 go build 命令后面加上 -ldflags 参数来指定版本号:

go build -ldflags "-s -w -X main.version=v2.3.3"
# 在 CloudflareSpeedTest 目录中通过命令行(例如 CMD、Bat 脚本)运行该命令,即可编译一个可在和当前设备同样系统、位数、架构的环境下运行的二进制程序(Go 会自动检测你的系统位数、架构)且版本号为 v2.3.3

如果想要在 Windows 64位系统下编译其他系统、架构、位数,那么需要指定 GOOSGOARCH 变量。

例如在 Windows 系统下编译一个适用于 Linux 系统 amd 架构 64 位的二进制程序:

SET GOOS=linux
SET GOARCH=amd64
go build -ldflags "-s -w -X main.version=v2.3.3"

例如在 Linux 系统下编译一个适用于 Windows 系统 amd 架构 32 位的二进制程序:

GOOS=windows
GOARCH=386
go build -ldflags "-s -w -X main.version=v2.3.3"

可以运行 go tool dist list 来查看当前 Go 版本支持编译哪些组合。


当然,为了方便批量编译,我会专门指定一个变量为版本号,后续编译直接调用该版本号变量即可。
同时,批量编译的话,还需要分开放到不同文件夹才行(或者文件名不同),需要加上 -o 参数指定。

:: Windows 系统下是这样:
SET version=v2.3.3
SET GOOS=linux
SET GOARCH=amd64
go build -o Releases\CloudflareST_linux_amd64\CloudflareST -ldflags "-s -w -X main.version=%version%"
# Linux 系统下是这样:
version=v2.3.3
GOOS=windows
GOARCH=386
go build -o Releases/CloudflareST_windows_386/CloudflareST.exe -ldflags "-s -w -X main.version=${version}"

License

The GPL-3.0 License.

cloudflarespeedtest's People

Contributors

charslee013 avatar crazyboyfeng avatar imashen avatar mac-zhou avatar mikuru996 avatar seek4self avatar spedoske avatar vanishs avatar xiu2 avatar zhangsean avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cloudflarespeedtest's Issues

百度云合作cdn

我发现自行添加修改ip网段 然后打不开程序
162.159.208.0/103
162.159.209.0/103
162.159.210.0/103
162.159.211.0/103
请教大神看一下

IPRange 没必要排除第一个和最后一个

我想测试某些单独的 ip,结果发现不支持裸 IP 这个格式,必须带子网。然后我发现掩码 /31/32 也不识别。
根据 RFC3021,子网 255.255.255.254 表示两个主机,255.255.255.255 表示一个主机。没有号段标识地址和广播地址。
其实网络号和广播地址在广域网里是没有意义的。所以都可以当作正常的主机地址使用,1.0.0.0104.16.2.255 都是合法主机地址,都可以 ping 通,所以 IPRange 没必要排除第一个和最后一个。网络号和广播地址现如今只在局域网才有用。

此外,我写入 104.16.2.148/30 但程序返回的测试结果是 104.16.2.1104.16.2.2,也就是 104.16.2.0/30 的测试结果,这应该是个 bug?

功能建议

强迫症患者想要实现完全的自动化,但ip最后一位完全一致,外加输出的结果可能带宽并不算高,还需要手工筛选甚至ip不足要再次运行,能否实现以下功能:

  1. 随机生成ip地址最后一位
  2. 筛选出给定数量高质量的(如30个延迟300ms内,带宽8M以上)仅输出ip

这样结果就是确定数目的高质量纯ip,后续无论paste为hosts还是sed到adguardhome等里面去都方便了

关于Ping测试时延的建议

目前ping采用的是tcp ping的方式,其时延为当前host到cloudflare节点建立连接的速度。这样其实是不太合理的,还应当考虑CF节点到VPS的时延。比如香港的CF节点很快,但是HTTP服务在美国,这样的速度可能不如在美西的CF节点效果好。

一个小建议是使用HTTP Ping时延作为衡量节点好坏的时延。具体的思路是对于未指定url的,走默认的tcp;而指定了测速url的,通常都是自建的HTTP(s)服务器,因此可以使用http测速

CloudflareSpeedTest测速异常

大佬,您好!现在出现一个问题,向您请教一下:
公司的网络是100M的联通,使用CloudflareSpeedTest可以找到速度为10M/s的节点。
家里的网络是300M的联通(最快下载速度32M/s),同样使用CloudflareSpeedTest只能找到1.5M/s的节点。
这是为什么啊?如何解决这个问题呢?

为何删除了某几个IP?

35.200.109.86/32
202.81.235.61/32
202.81.235.92/32

旧版还有的哦,新版删除了?
难道有什么秘密?

Win10 1909无法使用

image
如图,无论是双击还是cmd,拒绝访问,命令提示符管理员也试过了

请问可以去掉最后的按键确认吗?

程序运行结束时,用户必须按键确认才能退出,这样如果我希望自动化整个过程,就必须要在程序中模拟用户的行为,增加了复杂性。请问是否可以结束时直接退出?

IP段多了两个202的IP

我看ip地址段后面跟了两个202地址,速度还很快,这是哪边的?也是cloudflare的?

自动更新 Hosts 为最快 IP(Windows/Linux 脚本)

因为每个域名解析网站的 API 都不同,而这些域名解析网站需要我托管的有域名才能写 API 相关教程/脚本,所以想了一种替代方案,可以把域名写在 Hosts,这样效果也一样,不过缺点就是只能在当前设备上体验最快的 IP。

如果用的是基于 Linux 系统的路由器(如 OpenWrt),则这个整个局域网都有效。

再考虑到很多人获得最快 Cloudflare CDN IP 后,需要替换 Hosts 文件中的 IP。

那我干脆写个简单的脚本吧!大家使用过程中遇到什么问题或者建议都可以告诉我。 如果用着不错,就点个 ⭐ 吧!


还在一个个添加 Hosts?完美本地加速所有使用 Cloudflare CDN 的网站方法来了!


  1. Windows 脚本
  2. Linux 脚本
  3. 定时任务

测速仍为0.00

向上个issues中学习,加上了参数 -url "https://gh.con.sh/https://github.com/AaronFeng753/Waifu2x-Extension-GUI/releases/download/v2.21.12/Waifu2x-Extension-GUI-v2.21.12-Portable.7z"

C:\Users\Downloads\CloudflareST_windows_amd64>CloudflareST.exe -p 20 -f ipv6.txt -dd -ipv6 -n 888

XIU2/CloudflareSpeedTest v1.4.6

开始延迟测速(模式:TCP IPv6,端口:443):
77548 / 77548 [-----------------------------------------------------------------------------------------------] 100.00%
IP 地址 已发送 已接收 丢包率 平均延迟 下载速度 (MB/s)
2606:4700:3030:96:fa5b:236d:4eed:312c 4 4 0.00 270.41 0.00
2606:4700:3030:cc27:13bb:6960:73d2:91f5 4 4 0.00 270.91 0.00
2606:4700:3034:9abd:14bd:ef32:1788:f773 4 4 0.00 270.91 0.00
2606:4700:3034:9abd:14bd:5be8:69d3:1c9a 4 4 0.00 271.15 0.00

仍得到0.00结果 且过程中任务管理器始终显示网络利用率极低

不能识别/24 IP段

测试指定IP时,例如 1.1.1.1/24 。还是会随机选取IP段里的IP进行测试。

IPv6 测速模式报错

如题,出现一下错误信息:
G:\CloudflareST>CloudflareST.exe -p 0 -f ipv6.txt -dd -ipv6
panic: invalid argument to Intn

goroutine 1 [running]:
math/rand.(*Rand).Intn(0xc0000b8330, 0xffffffffffffffff, 0x10)
C:/Program1/Go/src/math/rand/rand.go:169 +0xa5
math/rand.Intn(...)
C:/Program1/Go/src/math/rand/rand.go:337
main.randipEndWith(...)
C:/Github/CloudflareSpeedTest/util.go:95
main.loadFirstIPOfRangeFromFile(0xc0000a20a8, 0x8, 0xc0000b90e0, 0xc0000a20c9, 0x4)
C:/Github/CloudflareSpeedTest/IPRangeLoader.go:48 +0x1d9
main.main()
C:/Github/CloudflareSpeedTest/main.go:135 +0x88

CloudflareST版本是 -v1.4.1

能否加入以下cf的ip段呢

或许有的重复了(
108.162.236.1/24
172.64.32.1/24
104.16.160.1/24
172.64.0.0/24
104.20.157.0/24
104.28.14.0/24
104.23.240.0-104.23.243.254
162.159.208.4-162.159.208.103
162.159.209.4-162.159.209.103
162.159.210.4-162.159.210.103
162.159.211.4-162.159.211.103
104.20.157.2
104.18.62.2
141.101.115.3
104.16.160.3
162.159.211.4-103
103.21.244.0/22
103.22.200.0/22
103.31.4.0/22
104.16.0.0/12
108.162.192.0/18
131.0.72.0/22
141.101.64.0/18
162.158.0.0/15
172.64.0.0/13
173.245.48.0/20
188.114.96.0/20
190.93.240.0/20
197.234.240.0/22
198.41.128.0/17
104.23.240.*
172.64.32.*
104.16.160.*
108.162.236.*
162.158.133.*
198.41.214.*
198.41.212.*
198.41.208.*
198.41.209.*
172.64.32.*
141.101.115.*
172.64.0. *
172.64.16.*
104.18.48.0-104.18.63.255
104.24.112.0-104.24.127.255
104.27.128.0-104.27.143.255
104.28.0.0-104.28.15.255
104.28.16.0-31.255
104.27.144.0-243.254
104.23.240.0-243.254
1.0.0.0-254
1.1.1.0-254
104.16.0.0-79.255
104.16.96.0-175.254
104.16.192.0-207.255

English language

Need English Language for the interface, please. I'm not Chinese citizenship, and it's hard to use all the time Google Translate

测速准备

这个软件 运行时是在直通的情况,还是要挂梯子测?

请问如何写hosts

具体地,hosts里填写的域名应该是什么呢?
因为Cloudflare给出的DNS record都是A,并非CNAME……我不知道该如何操作hosts以解析最快的IP地址。

使用 -tl -sl 5 -dn 10 测不出来

有bug

开始下载测速(延迟时间上限:200 ms,下载速度下限:5 MB/s):
0 / 10 [________________________________________________________________________________________________________] 0.00%
IP 地址 已发送 已接收 丢包率 平均延迟 下载速度 (MB/s)
198.41.220.24 4 4 0.00 260.25 0.00
198.41.222.204 4 4 0.00 260.71 0.00
198.41.209.100 4 4 0.00 261.01 0.00
198.41.221.8 4 4 0.00 261.50 0.00
190.93.247.46 4 4 0.00 263.24 0.00
1.0.0.238 4 4 0.00 265.19 0.00
190.93.245.55 4 4 0.00 274.14 0.00
141.101.113.236 4 4 0.00 275.64 0.00
198.41.214.130 4 4 0.00 277.21 0.00
198.41.212.23 4 4 0.00 327.14 0.00
141.101.121.79 4 4 0.00 328.64 0.00
190.93.246.237 4 4 0.00 329.88 0.00
173.245.49.234 4 4 0.00 330.89 0.00
198.41.211.213 4 4 0.00 376.90 0.00

UDP testing

Right now tool allow scanning only TCP ipv4 so is it possible to add additionally for testing UDP ipv4?

速度限制单位 MB/s 太粗且不支持小数

下载速度下限;只输出高于指定下载速度的 IP,凑够指定数量 [-dn] 才会停止测速;(默认 0 MB/s)

该参数使用的IntVar只能是整数,而不支持小数。如果以 MB/s 为单位进行速度筛选,那么只能设置 1MB/s 2MB/s 这样。这个单位太粗糙了,无法对 1.5MB/s 和 0.5MB/s 进行精细筛选。因此建议让该参数支持小数Float64Var,或者将该参数单位变更为KB/s

添加支持 测速单个、全部 IP

cloudflare使用的ssl协议在部分电脑上不支持,软件就扫不出来,希望改进通过https的证书来识别cloudflare,结果更精确

我哪里弄错了么?似乎不好使。

Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。

尝试新的跨平台 PowerShell https://aka.ms/pscore6

PS C:\Users\Htm_w> cd G:\CloudflareST_windows_amd64
PS G:\CloudflareST_windows_amd64> .\CloudflareST.exe -tl 170 -sl 8 -dn 10
# XIU2/CloudflareSpeedTest v1.4.5

开始延迟测速(模式:TCP IPv4,端口:443):
27928 / 27928 [-----------------------------------------------------------------------------------------------] 100.00%
开始下载测速(延迟时间上限:170 ms,下载速度下限:8 MB/s):
62 / 2230 [-->__________________________________________________________________________________________________] 2.78%
IP 地址           已发送  已接收  丢包率  平均延迟  下载速度 (MB/s)
104.31.141.88     4       4       0.00    151.66    0.22
104.25.97.251     4       4       0.00    155.25    4.05
104.31.70.245     4       4       0.00    156.49    3.40
104.31.14.119     4       4       0.00    159.58    0.37
104.27.146.228    4       4       0.00    159.68    0.15
172.67.48.153     4       4       0.00    159.99    0.23
172.67.52.177     4       4       0.00    160.05    0.18
172.67.74.235     4       4       0.00    161.20    0.20
172.67.60.5       4       4       0.00    161.27    0.17
172.67.35.32      4       4       0.00    161.38    0.21
104.23.130.6      4       4       0.00    161.46    0.32
172.67.47.242     4       4       0.00    161.73    0.43
104.16.242.183    4       4       0.00    161.90    0.28
172.67.45.245     4       4       0.00    161.95    0.58
104.25.112.130    4       4       0.00    162.01    0.11
104.23.134.186    4       4       0.00    162.21    0.32
104.25.108.134    4       4       0.00    162.24    0.12
104.27.73.70      4       4       0.00    162.66    0.23
172.67.166.46     4       4       0.00    162.70    0.04
104.16.247.130    4       4       0.00    163.04    0.20

完整测速结果已写入 result.csv 文件,请使用记事本/表格软件查看。
按下 回车键 或 Ctrl+C 退出。

大佬,路由器openwrt上跑,我感觉结果不准

前几天我咨询过,现在后半夜跑完,上午的速度还行,下午的不快,晚上更慢,没有windows上运行的准。ip是换了,但是不知道为啥不准。跑的时候肯定是没挂梯子。是不是脚本有问题

能否支持 ipv6?

目前版本好像不支持测 cloudflare ipv6 的速度或延迟。
如果把较大的 ipv6 range 输进 ip.txt 里的话,则程序会卡很久,并且在不断的消耗内存,一段 /64 的 ipv6 程度占用了近 20G 的内存都还没有终止的迹象。
如果把较小的 ipv6 range 输进 ip.txt 里的话,比如一段 /110,则程序瞬间(0.2 秒内)完成,并输出:

# XIU2/CloudflareSpeedTest 

开始延迟测速(模式:TCP,端口:443):
4096 / 4096 [-------------------------------------------------------------------------------------------------------] 100.00%

[信息] IP数量为 0,跳过下载测速。

[信息] IP数量为 0,跳过输出结果。

征集可用的 Cloudflare [下载测速地址] !


该问题下只能交流 [下载测速地址] 相关内容,其他内容请新开问题,否则会被隐藏。


因为 Cloudflare 官方的下载测速地址存在上限,用的人多了就容易出现超出资源上限而导致下载测速失败的问题。
我一再调低测速文件大小也无法彻底解决该问题(因为不止我一个项目在使用该测速地址,似乎是共用一个上限),所以特开此问题来征集可用于 [下载测速] 的地址!大家可以各取所需!

在 v1.2.9 版本后,大家可以使用 -url "https://xxxx" 参数来指定下载测速地址!
在 v1.3.0 版本后,已经将默认下载测速地址改为我自建的下载测速地址了!


最低要求:

  1. 访问地址可以直接下载文件。
  2. 文件大小不能低于 200 MB(太小测速不准确)。
  3. 网站用的是 Cloudflare CDN(这是最起码的)。

提交示例:

当然如果你不会 Markdown 排版,那么直接写就行了,这只是个大概示例。

如何提取 result.csv 测速结果文件中的最快的第一个 IP

如题,Linux 下我是这样操作的,可以提取到第二行的 IP,然后在 ddns 或者 host。

绝对路径:

# 运行测速
/root/cf/CloudflareST -f /root/cf/ip.txt  -o /root/cf/result.csv

# 获取测速结果第一个 IP
# 输出到文件:
sed -n "2,1p" /root/cf/result.csv | awk -F, '{print $1}' > /root/cf/best_ip.txt
# 赋值到变量 BEST_IP 中:
BEST_IP=$(sed -n "2,1p" /root/cf/result.csv | awk -F, '{print $1}')
# 使用 ${BEST_IP} 来调用变量,如 echo ${BEST_IP} 这样

如果当前位于 CloudflareST 程序所在目录下,则看下面的相对路径命令。

相对路径:

# 运行测速
./CloudflareST

# 获取测速结果第一个 IP
# 输出到文件:
sed -n "2,1p" result.csv | awk -F, '{print $1}' > best_ip.txt
# 赋值到变量 BEST_IP 中:
BEST_IP=$(sed -n "2,1p" result.csv | awk -F, '{print $1}')
# 使用 ${BEST_IP} 来调用变量,如 echo ${BEST_IP} 这样

大家有好的写法也可以贴出来。
现在请问一下,Windows 下如何用默认的命令写类似批处理出来?

自动更新 Cloudflare 中的域名解析记录为最快 IP(Windows/Linux 脚本+手动教程)

如果你的域名托管在 Cloudflare,那么其实可以通过 Cloudflare 官方提供的 API 去更新域名解析记录。

写完才反应过来受众面比较窄,不过可以用于 Cloudflare Workers 的自选 IP~

Cloudflare Workers 自选 IP 很简单,只要在添加域名解析时,不要开启橙色云朵,而解析 IP 填写为任意 CF CDN IP 即可。



# 操作步骤观看顺序:

  1. 获取 API 令牌
  2. 准备依赖
  3. 获取域名 ID
  4. 获取域名解析记录 ID
  5. 更新域名解析记录
  6. 自动更新脚本
  7. 定时任务

因为我没有 MacOS 设备,所以没有写相关教程,但查了下 MacOS 已经内置了 cURL,而命令是相通的,和 Linux 差不多。


如果看不到图片,只需把下面这条内容添加到 C:\Windows\System32\drivers\etc\hosts 文件中并重启浏览器:

151.101.88.133 user-images.githubusercontent.com

关于本项目的用途的一点疑问

开发者,你好
我看issue的时候发现,你说你开发这个工具的目的是为了寻找较快的cf cdn,然后改写host,以便更快地访问常去的国外网站。
改写host的意思是通过改写本机hosts文件,将cf cdn的ip与目标网站的域名相映射吗?比如在hosts文件中添加 1.1.1.1 www.coursera.org
另外,不管目标网站是否托管于cloudflare都可以通过这样的方式访问吧?
这样改写host的方法也是由cf cdn节点来中转访问流量的吧?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.