在R语言中调用GTmetrix REST API v2.0实现网站性能测试的问题咨询
GTmetrix API 2.0 R语言对接实现指导
身份认证规则
GTmetrix 2.0 API使用HTTP基本认证方式:请求时用户名字段填写你在GTmetrix后台获取的API密钥,密码字段为空字符串即可。
完整实现代码
基于你已写的代码扩展如下:
library(httr) library(jsonlite) # -------------------------- 参数配置 -------------------------- # 替换为你自己的GTmetrix API密钥 API_KEY <- "你的GTmetrix API密钥" # 测试目标站点 test_url <- "https://www.berkeley.edu" # 测试地区ID location_id <- 1 # 测试浏览器ID browser_id <- 3 # 轮询间隔时间(秒,避免触发频率限制) poll_interval <- 5 # -------------------------- 1. 提交测试请求 -------------------------- test_submit_res <- POST( url = "https://gtmetrix.com/api/2.0/tests", authenticate(user = API_KEY, password = ""), content_type("application/vnd.api+json"), body = toJSON(list( data = list( type = "test", attributes = list( url = test_url, location = location_id, browser = browser_id ) ) ), auto_unbox = TRUE) ) # 解析提交结果 submit_data <- fromJSON(content(test_submit_res, "text")) test_id <- submit_data$data$id test_state_url <- submit_data$data$links$self # -------------------------- 2. 轮询等待测试完成 -------------------------- repeat { state_res <- GET(test_state_url, authenticate(user = API_KEY, password = "")) state_data <- fromJSON(content(state_res, "text")) current_state <- state_data$data$attributes$state if (current_state == "completed") { message("测试完成,开始提取结果") test_result <- state_data break } else if (current_state == "error") { stop("测试失败,错误信息:", state_data$data$attributes$error) } else { message("测试进行中,当前状态:", current_state, ",等待", poll_interval, "秒后重试") Sys.sleep(poll_interval) } } # -------------------------- 3. 提取测试结果 -------------------------- # 核心性能指标示例 performance_score <- test_result$data$attributes$scores$performance structure_score <- test_result$data$attributes$scores$structure lcp <- test_result$data$attributes$metrics$largest_contentful_paint cls <- test_result$data$attributes$metrics$cumulative_layout_shift fid <- test_result$data$attributes$metrics$first_input_delay # 打印结果 cat("性能得分:", performance_score, "\n", "结构得分:", structure_score, "\n", "最大内容绘制:", lcp, "ms\n", "累积布局偏移:", cls, "\n", "首次输入延迟:", fid, "ms\n", sep = "")
注意事项
- 调用前请先确认你使用的location_id、browser_id与GTmetrix提供的参数枚举值匹配
- 免费版账号有请求频率和并发测试数限制,建议轮询间隔不低于3秒,不要短时间内提交大量测试
- 所有测试指标均可从
test_result$data$attributes路径下提取,可根据自身需求筛选需要的字段
内容的提问来源于stack exchange,提问作者Mohanasundaram
相关产品推荐
相关产品推荐

