自建下载测速地址的方法,测试你的 IP 到底到底够不够快

自建下载测速地址的方法,测试你的 IP 到底到底够不够快

测速工具

1. Cloudflare Workers 文件反代(无需服务器,需要域名)

注意:因为 *.workers.dev 域名被 DNS 污染,所以默认分配的子域名将无法使用,有域名的可以将 Workers 服务路由绑定至自己的域名就能访问了。

可以利用 Cloudflare Workers 服务,这个只限制访问次数不限制流量,免费版每日 10 万次数限制(每天 8 点重置)。

搭建 Workers 文件反代很简单,也就在 Cloudflare 后台点几下就完事了,连服务器都省了。

「点击展开 查看快速搭建步骤」


简单来说就是:创建服务、粘贴代码、保存部署,完事~

  1. 打开 Cloudflare Workers,点击中间橙色的 Start building 按钮。
    如果是第一次用,则会让你取个 "专属于你" 的二级子域名,即 YYY.workers.dev,以后可以改…

  1. 点击 创建服务 按钮(如下图所示)


  1. 输入服务名称(三级子域名),选择第二个 HTTP 处理程序,点击 创建服务 按钮(如下图所示)


  1. 点击右下角的 快速编辑 按钮


  1. 清空原内容并粘贴以下代码,点击 保存并部署(通常 10 秒内就完成了,如下图所示)
1
2
3
4
5
6
7
addEventListener("fetch", event => {
let url = new URL(event.request.url);
url.protocol = 'https:'
url.hostname = "cachefly.cachefly.net";
let request = new Request(url, event.request);
event.respondWith(fetch(request));
})

这里是以 https://cachefly.cachefly.net/200mb.test 为反代目标(不建议只照着这一个薅),不过最大只有 200MB,想要更大的请修改反代目标(下面有可用的大文件 URL),另外如果目标是 http 地址则记得将上面代码中的 https: 改为 http:

为了减少回源,提高下载测速准确度。建议反代目标选择文件小于 512MB 且 **支持 CDN 缓存的文件后缀**。


  1. 最后尝试浏览器访问 https://XXX.YYY.workers.dev/200mb.test 如果可以正常下载则代表部署成功

注意:因为 *.workers.dev 域名被 DNS 污染,所以默认分配的子域名将无法使用,有域名的可以将 Workers 服务路由绑定至自己的域名就能访问了。

具体可以看看 #189 这里提到了 Workers 自定义域名。

后续使用 CloudflareST 时,记得加上 -url 参数,例如:

1
2
3
4
# Windows
CloudflareST.exe -url https://XXX.YYY.workers.dev/200mb.test

# Linux/Mac

./CloudflareST -url https://XXX.YYY.workers.dev/200mb.test

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

> 访问这个 URL 其实就是在反代 [https://cachefly.cachefly.net/200mb.test](https://cachefly.cachefly.net/200mb.test)
> 如果想要改成其他大文件 URL(下面写的有),只需要修改 Workers 代码中的 `cachefly.cachefly.net` 域名和协议即可

---

## 1.1【可选】自定义 Workers 地址的 URL 路径(简短好记)

**「 点击展开 查看简单说明 」**

---

把上面原先的 Workers 代码改成下面这样,即可把原先很长/不好记的 URL 路径改为简短好记:

```js
addEventListener("fetch", event => {
let url = new URL(event.request.url);
if (url.pathname == "/test" && url.search == "") {
url.href="https://cachefly.cachefly.net/200mb.test"
let request = new Request(url, event.request);
event.respondWith(fetch(request));
}
})

其中第 3 行的 /test 就是你可以自定义的 URL 路径,最终下载测速地址为:https://xxx.yyy/test

你可以将其改为 /,这样的话最终下载测速地址为:https://xxx.yyy/ 可省略不写


2. 服务器套 Cloudflare CDN(需要服务器 + 域名)

「点击展开 查看简单说明」


首先你需要有个域名,然后在你的服务器上面创建一个虚拟主机(如 Nginx/Caddy),并在其目录下生成一个空文件即可:

1
2
3
4
5
6
7
8
# 以下命令会在 /XXX 目录下,生成一个文件名为 cfst.bin 大小为 300MB 的文件
# (超过 512M 的文件不会被 CDN 缓存,会导致次次回源,即大量消耗服务器流量不说,还会影响下载测速准确度,因为多了个回源环节)
# 记得修改命令中的 /XXX/ 示例路径,否则直接运行会提示找不到文件夹!

dd if=/dev/zero of=/XXX/cfst.bin bs=1M count=0 seek=300

# 因为是空文件,所以 Cloudflare 在缓存时 300MB 就会被压缩为 300KB 了,不占用 Cloudflare 的节点缓存空间,因此 Cloudflare 并没有追究文件正不正常的问题,顶多像我这样因流量太大(每天 10TB)而被域名限速了。。。
# 另外,不建议搞太多不同大小的文件,这样不利于缓存,因此 Cloudflare 的缓存机制还会看文件热度,如果流量分散到几个文件上,可能会导致文件热度不足早早就被清理,从而增加回源次数,消耗服务器流量。

也可以使用其他 Cloudflare CDN 支持缓存的文件后缀,具体见:#default-cached-file-extensions

最后给你的网站套上 Cloudflare CDN 即可。

使用初期的时候,会因为回源而消耗部分服务器流量并缓存到 CDN 节点,后续访问 URL 就直接从 CDN 缓存中读取了。

另外,建议去缓存 - Tiered Cache 中开启 Argo Tiered Cache 功能,这样可以进一步降低回源次数,节省服务器流量。


# 一些可用于 Cloudflare Workers 文件反代 的大文件 URL

文件反代不知道在哪里找大文件的话,可以去看看各 IDC 的官方测速文件(可以谷歌搜索 VPS looking glass 或 testfile MB 就能找到很多,建议优先选择美西),建议选择 512MB 以下且 **支持 CDN 缓存的文件后缀**,我举几个例子:

1
2
3
4
5
6
# 这几个小于 512 MB,且都是会被 CDN 缓存的 .zip 文件后缀(常见的 文档、图片、音视频、压缩包、安装包、静态文件 后缀)
http://ipv4.download.thinkbroadband.com/200MB.zip
http://ipv4.download.thinkbroadband.com/512MB.zip
https://testfileorg.netwet.net/500MB-CZIPtestfile.org.zip

# 这几个 .test 的后缀是不支持缓存的,可以用但会影响下载测速准确度

https://cachefly.cachefly.net/200mb.test

https://lg-seattle.cloudzy.com/500MB.test

https://lg-miami.cloudzy.com/500MB.test

https://lg-chicago.cloudzy.com/500MB.test

https://lg.my.controlvm.com/500MB.test

http://23.145.48.48/500MB.test

http://speedtest-sfo3.digitalocean.com/1gb.test


> **注意**:这些文件地址是让你 **Workers 反代**用的,不能直接用于 `-url` 参数!