主题
OnPage 不可索引页面
POST /v3/on_page/non_indexable
本接口用于获取无法被 Google 及搜索引擎索引的页面列表。页面被判定为不可索引的原因可能 robots.txt、HTTP 响应头、Meta 标签或页面属性设置。
请求方法与路径:
http
POST https://api.seermartech.cn/v3/on_page/non_indexable计费说明
本接口不额外收取任务查询费用。任务结果生成后,可在 30 天获取。
参考价约 ¥0.0000 / 次。扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
所有 POST 请求体使用 UTF-8 编码的 JSON 格式,并将任务参数放通用 POST 数组中。
请求参数
请求体格式为 JSON 数组:
json
[
{
"id": "07131248-1535-0216-1000-17384017ad04",
"limit": 100,
"offset": 0,
"filters": [
["reason", "=", "robots_txt"],
"and",
["url", "like", "%example%"]
]
}
]任务参数
| 参数 | 类型 | 填 | 说明 |
|---|---|---|---|
id | string | 是 | 任务 ID。该 ID 来自 /v3/on_page/task_post 接口的任务创建响应。示例:07131248-1535-0216-1000-17384017ad04 |
limit | integer | 否 | 返回页面的最大数量。默认值:100,最大值:1000 |
offset | integer | 否 | 结果数组的偏移量。默认值:0,最大值:2000000。例如设置为 10 时,将跳过结果数组中的前 10 条记录 |
filters | array | 否 | 结果过滤条件数组。最多支持 8 个过滤条件,可使用 and 或 or 连接多个条件 |
过滤条件
支持以下运算符:
text
regex
not_regex
<
<=
>
>=
=
<>
in
not_in
like
not_likelike 和 not_like 支持使用 % 匹零个或多个任意字符。
示例:
json
[
["reason", "=", "robots_txt"],
"and",
["url", "like", "%blog%"]
]也可以组合多个条件:
json
[
["reason", "in", ["robots_txt", "meta_tag"]],
"or",
["url", "not_like", "%archive%"]
]响应结构
接口返回 JSON 数据,主要位于 tasks 数组中。
顶层响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
version | string | 当前 API 版本 |
status_code | integer | 通用响应状态码。20000 表示成功 |
status_message | string | 通用状态信息 |
time | string | 接口执行耗时,例如 0.1075 sec. |
cost | float | 平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。 |
tasks_count | integer | tasks 数组中的任务数量 |
tasks_error | integer | tasks 数组中返回错误的任务数量 |
tasks | array | 任务结果数组 |
tasks 任务字段
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 任务唯一标识,UUID 格式 |
status_code | integer | 当前任务状态码,通常位于 10000 至 60000 范围 |
status_message | string | 当前任务状态信息 |
time | string | 任务执行耗时 |
cost | float | 平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。 |
result_count | integer | result 数组中的数量 |
path | array | 请求 URL 路径 |
data | object | 创建任务时提交的参数 |
result | array | 任务结果数组 |
result 结果字段
| 字段 | 类型 | 说明 |
|---|---|---|
crawl_progress | string | 抓取会话状态。可选值:in_progress、finished |
crawl_status | object | 抓取会话 |
items | array | 不可索引页面列表 |
crawl_status 字段
| 字段 | 类型 | 说明 |
|---|---|---|
max_crawl_pages | integer | 最大抓取页面数,对应创建任务时设置的 max_crawl_pages |
pages_in_queue | integer | 当前排队抓取的页面数 |
pages_crawled | integer | 已抓取页面数 |
total_items_count | integer | 数据库中符合条件的项目总数 |
items_count | integer | 当前结果数组中的项目数量 |
items 页面字段
| 字段 | 类型 | 说明 |
|---|---|---|
reason | string | 页面不可索引的原因。可选值:robots_txt、meta_tag、http_header、attribute、too_many_redirects |
url | string | 不可索引页面的 URL |
请求示例
cURL
bash
curl --location --request POST \
"https://api.seermartech.cn/v3/on_page/non_indexable" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"id": "07281559-0695-0216-0000-c269be8b7592",
"filters": [
["reason", "=", "robots_txt"],
"and",
["url", "like", "%go%"]
],
"limit": 10
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/on_page/non_indexable"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
}
post_data = [
{
"id": "07281559-0695-0216-0000-c269be8b7592",
"filters": [
["reason", "=", "robots_txt"],
"and",
["url", "like", "%go%"],
],
"limit": 10,
}
]
response = requests.post(url, headers=headers, json=post_data)
result = response.json()
if result.get("status_code") == 20000:
print(result)
else:
print(
"请求失败,状态码:%s,信息:%s"
% (result.get("status_code"), result.get("status_message"))
)TypeScript
typescript
import axios from "axios";
const postData = [
{
id: "07281559-0695-0216-0000-c269be8b7592",
filters: [
["reason", "=", "robots_txt"],
"and",
["url", "like", "%go%"],
],
limit: 10,
},
];
axios({
method: "post",
url: "https://api.seermartech.cn/v3/on_page/non_indexable",
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
},
data: postData,
})
.then((response) => {
// 处理响应数据
console.log(response.data);
})
.catch((error) => {
console.error("请求失败:", error.response?.data || error.message);
});响应示例
json
{
"version": "0.1.20200805",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.1075 sec.",
"cost": 0,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "07281559-0695-0216-0000-c269be8b7592",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.1021 sec.",
"cost": 0,
"result_count": 1,
"path": [
"v3",
"on_page",
"non_indexable"
],
"data": {
"api": "on_page",
"function": "non_indexable",
"id": "07281559-0695-0216-0000-c269be8b7592",
"limit": 10
},
"result": [
{
"crawl_progress": "finished",
"crawl_status": {
"max_crawl_pages": 1000,
"pages_in_queue": 0,
"pages_crawled": 1000,
"total_items_count": 24,
"items_count": 2
},
"items": [
{
"reason": "robots_txt",
"url": "https://example.com/private/page"
},
{
"reason": "meta_tag",
"url": "https://example.com/archive/page"
}
]
}
]
}
]
}状态码与错误处理
请根据响应中的 status_code 和 status_message 判断请求及任务是否成功。建议在业务系统中实现以下处理逻辑:
- 检查顶层
status_code是否为20000。 - 检查
tasks_error是否大于0。 - 对每个任务分别检查
status_code。 - 当
crawl_progress为in_progress时,保留任务 ID 并稍后重新获取结果。 - 记录
status_message,便于定位参数错误、任务不存在或抓取异常。
实用场景
- 定位被
robots.txt阻止的页面,帮助 SEO 团队发现重要是否因爬虫规则错误而无法搜索引擎索引。 - 筛查
noindexMeta 标签的页面,产品页、落地页或高价值文章被误设为不可索引。 - 检查 HTTP 头中的索引控制指令,识别通过
X-Robots-Tag等响应头阻止收录的 URL。 - 批量监控大型网站的不可索引页面,为技术 SEO 审计和站点迁移后的索引问题排查提供数据支持。
- 按不可索引原因和 URL 规则筛选页面,快速生成问题单并交给开发或团队处理。