主题
提交 Lighthouse 任务
接口说明
OnPage Lighthouse API 基于 Google 开源的 Lighthouse 项目,用于评估网页或 Web 应用的质量。
Lighthouse 会针对页面的不同能力项执行一系列独立审计,输出数值评分与结构化报告,可覆盖以下方向:
- 性能(performance)
- 可访问性(accessibility)
- 渐进式 Web 应用能力
- SEO
- 最佳实践(best_practices)
通过本接口创建任务后,您可以对指定页面发起 Lighthouse 检测,并在任务完成后获取审计结果,用于发现并修复页面质量问题。
可用审计项列表请参考 /v3/on_page/lighthouse/audits/。 可用版本列表请参考 /v3/on_page/lighthouse/versions/。 语言列表请参考 /v3/on_page/lighthouse/languages。
请求地址
POST https://api.seermartech.cn/v3/on_page/lighthouse/task_post
计费说明
该接口按请求计费。扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
提交规则
- 请求方法:
POST - 请求体格式:JSON 数组
[{ ... }] - 编码要求:
UTF-8 - 每分钟最多可发送
2000次 API 调用 - 单次 POST 最多
100个任务 - 如果单次提交
100个任务,出部分会返回错误40006
任务提交成功后,您可以通过返回的唯一任务标识 id 获取结果。
如果在创建任务时指定了 pingback_url,任务完成后平台会主动回调通知您。 注意事项:
- 回调方式为
GET - 可在 URL 中使用
$id和$tag变量 - 平台发送回调前会自动替换这些变量
- 如果您的服务器在
10秒未响应,请求会因时中断 -时后,该任务可在/v3/on_page/lighthouse/tasks_ready/列表中继续获取
另请注意,pingback_url 中的特殊字符会被 URL 编码,例如 # 会编码为 %23。
请求参数
| 字段名 | 类型 | 说明 |
|---|---|---|
url | string | 目标页面 URL。填。传绝对地址, http:// 或 https://。例如:https://example.com/ |
for_mobile | boolean | 是否启用移动端模拟。可选。true 表示按移动设备环境进行检测;false 表示返回桌面端结果。默认值:false |
categories | array | Lighthouse 分类。可选。每个分类是一组审计项及评分权重。若省略该字段,且未指定 audits,默认返回所有分类数据。可选值:seo、performance、best_practices、accessibility |
audits | array | 指定 Lighthouse 审计项。可选。若省略该字段,默认返回所有审计项。可用于获取某些特定审计,或在指定 categories 的同时补返回不属于这些分类的独立审计项。完整列表请参考 /v3/on_page/lighthouse/audits/ |
version | string | 指定 Lighthouse 版本。可选。用于获取特定版本下的检测结果。可用版本请参考 /v3/on_page/lighthouse/versions/ |
language_name | string | Lighthouse 语言名称。可选。可用语言可通过 /v3/on_page/lighthouse/languages 查询。默认值:English |
language_code | string | Lighthouse 语言代码。可选。可用语言可通过 /v3/on_page/lighthouse/languages 查询。默认值:en |
custom_user_agent | string | 自定义 User-Agent。可选。最长 254 个字符 |
browser_screen_width | integer | 浏览器屏幕宽度。可选。用于模拟特定设备环境。取值范围:240–9999 |
browser_screen_height | integer | 浏览器屏幕高度。可选。用于模拟特定设备环境。取值范围:240–9999 |
browser_screen_scale_factor | float | 浏览器屏幕缩放系数,即设备像素比。可选。取值范围:0.5–3 |
browser_network_throttling_method | string | 网络限速方式。可选。可选值:simulate、devtools、provided。:simulate 表示不显式限速,而是估算性能指标;devtools 表示应用 browser_network_throttling 与 browser_cpu_throttling_multiplier 的限速;provided 表示使用抓取环境的网络条件 |
browser_cpu_throttling_multiplier | float | CPU 限速倍数。当 browser_network_throttling_method=devtools 时填。用于模拟设备性能条件。取值范围:1–4 |
browser_network_throttling | string | 网络限速。当 browser_network_throttling_method=devtools 时填。可选值:no_throttling、fast_4g、slow_4g、regular_3g、pc |
tag | string | 自定义任务标识。可选。最长 255 个字符。便于将任务与业务数据,提交后会原样出现在响应的 data 对象中 |
pingback_url | string | 任务完成通知地址。可选。任务完成后平台会向该地址发起 GET 请求。支持 $id 与 $tag 变量,例如:https://your-server.com/pingscript?id=$id 或 https://your-server.com/pingscript?id=$id&tag=$tag |
categories 与 audits 的使用说明
categories 和 audits 可单独使用,也可组合使用,常见方式如下:
不传
categories,只传audits返回指定的审计项结果。传
categories,不传audits返回指定分类下的审计结果。同时传
categories和audits返回指定分类中的审计结果,并可额外不属于这些分类的独立审计项。
响应结构
接口返回 JSON 数据,顶层 tasks 数组,每个对应一个提交的任务。
顶层字段
| 字段名 | 类型 | 说明 |
|---|---|---|
version | string | 当前 API 版本 |
status_code | integer | 通用状态码。完整列表请参考 /v3/appendix/errors |
status_message | string | 通用状态信息 |
time | string | 执行耗时,单位秒 |
cost | float | 本次请求总费用,单位 USD |
tasks_count | integer | tasks 数组中的任务数量 |
tasks_error | integer | 返回错误的任务数量 |
tasks | array | 任务数组 |
tasks[] 字段
| 字段名 | 类型 | 说明 |
|---|---|---|
id | string | 任务唯一标识,UUID 格式 |
status_code | integer | 任务状态码,范围通常为 10000–60000 |
status_message | string | 任务状态信息 |
time | string | 任务执行耗时,单位秒 |
cost | float | 单个任务费用,单位 USD |
result_count | integer | result 数组中的数量 |
path | array | 请求路径 |
data | object | 您在 POST 请求中提交的任务参数 |
result | array | null | 结果数组。对于任务提交接口,此处通常为 null |
状态码与错误处理
- 顶层
status_code=20000表示请求成功 - 单个任务的处理状态以
tasks[].status_code为准 - 建议同时处理:
- HTTP 状态码
- 顶层 API 状态码
- 单任务状态码
- 错误码完整列表请参考
/v3/appendix/errors
特别注意:
- 单次 POST过
100个任务时,出部分会返回40006 - 使用
pingback_url时,如您的服务端时或拒绝连接,错误表现将取决于服务端
请求示例
cURL
bash
curl --location --request POST "https://api.seermartech.cn/v3/on_page/lighthouse/task_post" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"url": "https://example.com",
"for_mobile": true,
"tag": "some_string_123",
"pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag"
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/on_page/lighthouse/task_post"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
}
# POST 请求体是 JSON 数组
payload = [
{
"url": "https://example.com",
"for_mobile": True
},
{
"url": "https://example.com",
"for_mobile": True,
"tag": "some_string_123",
"pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag"
}
]
response = requests.post(url, headers=headers, json=payload)
print(response.json)TypeScript
typescript
import axios from "axios";
const postArray = [
{
url: "https://example.com",
for_mobile: true,
tag: "some_string_123",
pingback_url: "https://your-server.com/pingscript?id=$id&tag=$tag"
}
];
axios({
method: "post",
url: "https://api.seermartech.cn/v3/on_page/lighthouse/task_post",
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
},
data: postArray
})
.then((response) => {
// 输出任务提交结果
console.log(response.data);
})
.catch((error) => {
console.error(error);
});响应示例
json
{
"version": "0.1.20200805",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.0815 sec.",
"cost": 0.00425,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status_code": 20000,
"status_message": "Ok.",
"time": "0 sec.",
"cost": 0.00425,
"result_count": 0,
"path": [
"v3",
"on_page",
"lighthouse",
"task_post"
],
"data": {
"api": "on_page",
"function": "lighthouse",
"url": "https://example.com",
"for_mobile": true,
"tag": "some_string_123",
"pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag"
},
"result": null
}
]
}响应示例说明
cost: 0.00425表示本次请求费用为USD 0.00425- 按人民币参考价换算,约为 ¥0.0680 / 次
- 实扣费以响应头
X-SeerMarTech-Charge-CNY为准 result为null属于正常现象,因为该接口用于创建任务,不直接返回 Lighthouse 检测结果- 后续可通过任务
id查询对应结果,或通过pingback_url接收完成通知
使用建议
- 批量提交时,建议每次控制在
100个任务 - 如需统一回收结果,优使用任务
id轮询获取 - 如需异步自动通知,可
pingback_url - 若对移动端体验更敏感,建议设置
for_mobile=true - 若需要稳定复现特定测试环境,可结合以下参数一起使用:
browser_screen_widthbrowser_screen_heightbrowser_screen_scale_factorbrowser_network_throttling_methodbrowser_cpu_throttling_multiplierbrowser_network_throttling
实用场景
- 批量检测落地页质量:对广告页、专题页或产品页批量发起 Lighthouse 审计,快速定位性能、SEO 与最佳实践问题,提升页面转化基础。
- 对比移动端与桌面端表现:分别设置
for_mobile=true/false创建任务,比较不同终端下的页面质量差异,为移动优优化提供依据。 - 监控版本发布后的页面退化:在前端发布后自动提交 Lighthouse 任务,对核心页面进行回归检测,及时发现性能下降或可访问性问题。
- 聚焦审计项排查问题:通过
audits只拉取特定检测项,例如首屏性能或 SEO 指标,减少无数据干扰,提高排查效率。 - 构建异步质量巡检流程:结合
pingback_url在任务完成后接收通知,将 Lighthouse 结果自动接告警、报表或 SEO 运营系统。