13

我想制作一个小部件来显示用户最近的速度测试结果。speedtest.net 有我可以使用的 api 吗?我尝试向http://speedtest.net/csv.php?csv=1&ria=0&s=0发出 ajax 请求,但出现跨域错误。我尝试了一个 iframe,但这只是让它出现在下载中。

这将位于 Google Chrome 扩展程序中,因此我可以在必要时使用 chrome api。

4

4 回答 4

12

speedtest.net 由Ookla 及其 Speed Test 应用程序运行。不幸的是,他们没有为您可以使用的 speedtest.net 提供任何公共 API。

尽管我怀疑其中任何一个都不能满足您的需求,但它们确实为其完整的 Speed Test 软件包(包括 CSV 导出功能)提供了Speed Test Mini和托管报告解决方案。

您无法使用 AJAX 的原因是 Chrome 不允许 JavaScript 执行跨站点请求,除非在Access-Control-Allow-Originspeedtest.net 的响应中设置响应标头以允许此类请求。

但是,在 Chrome 扩展程序中,您可以通过将 URL 添加到文件的权限部分来允许跨域请求manifest.json。例如:

"permissions": [
  "http://*/"
],

然后,您可以使用一些 jQuery 将 CSV 数据作为字符串检索(请参阅此答案):

$.get('http://speedtest.net/csv.php?csv=1&ria=0&s=0', function(data) {
    var csv = new String(data);
    // do stuff with csv
}, dataType='text');
于 2012-04-05T06:50:15.320 回答
3

试试MySpeed.today。它可能会奏效。

于 2016-08-09T08:01:21.090 回答
2

Ookla 确实提供了一个API

您需要获取他们的 API 密钥。他们还提供了一个示例 Python 脚本。

于 2019-09-13T15:22:13.370 回答
1

您可以在 chrome 扩展程序中创建跨域 XMLHttpRequests,前提是您已为其请求权限。

在您的manifest.json文件中,添加 URI:

"permissions": ["http://speedtest.net/csv.php?*"]

另请参阅:匹配模式

于 2012-04-05T06:32:43.757 回答