我想创建一个小部件来显示用户最近的速度测试结果。 speedtest.net有我可以使用的api吗?我尝试向http://speedtest.net/csv.php?csv=1&ria=0&s=0发出ajax请求,但遇到了跨域错误。我尝试过iframe,但这只是让它出现在下载中。
这将在Google Chrome扩展程序中,因此我可以根据需要使用chrome api。
答案 0 :(得分:10)
speedtest.net由Ookla and their Speed Test application运行。不幸的是,他们没有为你可以使用的speedtest.net提供任何公共API。
虽然我怀疑其中任何一个都满足您的需求,但它们确实提供了Speed Test Mini和hosted reporting solution for their full Speed Test software package(包括CSV导出功能)。
您无法使用AJAX的原因是Chrome不允许JavaScript执行跨网站请求,除非在speedtest.net的响应中设置Access-Control-Allow-Origin
响应标头以允许此类请求。< / p>
但是,在Chrome扩展程序中,您可以通过将网址添加到manifest.json
文件的权限部分来允许跨源请求。例如:
"permissions": [
"http://*/"
],
然后您可以使用一些jQuery将CSV数据检索为字符串(请参阅this answer):
$.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');
答案 1 :(得分:1)
您可以在Chrome扩展程序中创建跨源XMLHttpRequests,只要您已为其请求了权限。
在manifest.json
文件中,添加URI:
"permissions": ["http://speedtest.net/csv.php?*"]
另请参阅:Match patterns。
答案 2 :(得分:1)
Ookla确实提供了API
您需要获取其API密钥。他们还提供了一个示例Python脚本。
答案 3 :(得分:0)
试试MySpeed.today。它可能会有用。