You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用curl进行网络测速?解决调用fast.com返回0无法加载的问题

如何用Curl获取fast.com的网络测速结果

直接请求http://fast.com返回0主要有两个原因:一是fast.com默认强制HTTPS,未处理重定向会导致请求失败;二是它的测速逻辑完全依赖前端JavaScript动态加载节点并计算速度,静态HTML本身不包含测速数据。以下是具体解决步骤:

第一步:修复Curl请求失败问题

先确保能正常发起请求(获取静态页面),需要添加浏览器UA、开启重定向、处理HTTPS:

$url = 'https://fast.com';
$curl = curl_init($url);

// 模拟浏览器UA,避免被拦截
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36');
// 跟随HTTPS重定向
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
// 返回响应内容而非直接输出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// 设置请求超时
curl_setopt($curl, CURLOPT_TIMEOUT, 15);
// 临时禁用SSL验证(生产环境建议配置CA证书)
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($curl);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);

if ($response === false) {
    echo "Curl错误: " . curl_error($curl);
} else {
    echo "请求成功,HTTP状态码: " . $httpCode;
}

curl_close($curl);

第二步:获取真实测速结果

fast.com通过内部API提供测速节点,下载节点文件即可计算速度:

1. 获取测速节点列表

请求官方API提取可用CDN节点:

$apiUrl = 'https://api.fast.com/netflix/speedtest?https=true&token=YXNkZmFzZGxmbnNkYWZoYXNkZmhrYWxm';
$curl = curl_init($apiUrl);

curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$nodeData = curl_exec($curl);
curl_close($curl);

if (!$nodeData) {
    die("无法获取测速节点");
}

$nodes = json_decode($nodeData, true);
$targetUrls = array_column($nodes['targets'], 'url');

2. 执行测速计算

选择节点下载指定大小文件,计算下载速度:

// 取第一个节点测速(可循环多节点取平均值)
$targetUrl = $targetUrls[0];
$startTime = microtime(true);

$curl = curl_init($targetUrl);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36');
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
// 限制最大下载量为10MB,避免下载完整大文件
curl_setopt($curl, CURLOPT_MAXFILESIZE, 10 * 1024 * 1024);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_exec($curl);
$endTime = microtime(true);

$downloadedBytes = curl_getinfo($curl, CURLINFO_SIZE_DOWNLOAD);
curl_close($curl);

// 计算速度并转换为Mbps
$duration = $endTime - $startTime;
if ($duration > 0) {
    $speedMbps = ($downloadedBytes / $duration) / (1024 * 1024) * 8;
    echo "测速结果: " . round($speedMbps, 2) . " Mbps";
} else {
    echo "测速失败,耗时过短";
}

注意事项

  • fast.com的API Token可能会更新,若请求失败需从主页JavaScript中提取最新Token
  • 多节点循环测速取平均值,结果会更准确
  • 生产环境请配置合法SSL证书,不要长期禁用CURLOPT_SSL_VERIFYPEER
  • 避免短时间内频繁请求节点,防止被CDN限制

内容的提问来源于stack exchange,提问作者merve demirel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:05:23