我想制作一个小部件来显示用户最近的速度测试结果。speedtest.net 有我可以使用的 api 吗?我尝试向http://speedtest.net/csv.php?csv=1&ria=0&s=0发出 ajax 请求,但出现跨域错误。我尝试了一个 iframe,但这只是让它出现在下载中。
这将位于 Google Chrome 扩展程序中,因此我可以在必要时使用 chrome api。
我想制作一个小部件来显示用户最近的速度测试结果。speedtest.net 有我可以使用的 api 吗?我尝试向http://speedtest.net/csv.php?csv=1&ria=0&s=0发出 ajax 请求,但出现跨域错误。我尝试了一个 iframe,但这只是让它出现在下载中。
这将位于 Google Chrome 扩展程序中,因此我可以在必要时使用 chrome api。
speedtest.net 由Ookla 及其 Speed Test 应用程序运行。不幸的是,他们没有为您可以使用的 speedtest.net 提供任何公共 API。
尽管我怀疑其中任何一个都不能满足您的需求,但它们确实为其完整的 Speed Test 软件包(包括 CSV 导出功能)提供了Speed Test Mini和托管报告解决方案。
您无法使用 AJAX 的原因是 Chrome 不允许 JavaScript 执行跨站点请求,除非在Access-Control-Allow-Origin
speedtest.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');
试试MySpeed.today。它可能会奏效。
Ookla 确实提供了一个API
您需要获取他们的 API 密钥。他们还提供了一个示例 Python 脚本。
您可以在 chrome 扩展程序中创建跨域 XMLHttpRequests,前提是您已为其请求权限。
在您的manifest.json
文件中,添加 URI:
"permissions": ["http://speedtest.net/csv.php?*"]
另请参阅:匹配模式。