Skip to content

不可抓取资源

接口说明

该接口用于返回目标网站中被检测为不可抓取资源的列表。所谓“不可抓取”,是指页面 HTML 中对某个资源的引用方式所对应的预期类型,与服务器返回的 Content-Type 不一致。

例如:页面把某资源当作图片引用,但服务器返回的却是类型,此类资源会被识别为不可抓取资源。

注意:

  • 检查返回 200 HTTP 状态码的资源;
  • 该接口基于已创建的 On-Page 抓取任务结果进行查询,因此请求中传任务 id

请求地址

POST https://api.seermartech.cn/v3/on_page/uncrawlable_resources

计费说明

调用该接口不额外收费。任务结果可在接下来的 30 天获取。

参考价约 ¥0.0000 / 次 扣费以响应头 X-SeerMarTech-Charge-CNY 为准。

请求格式

所有 POST 数据均需使用 JSON(UTF-8 编码)提交。

POST 请求体为 JSON 数组格式:

json
[
 {
 "id": "07131248-1535-0216-1000-17384017ad04",
 "limit": 10
 }
]

请求参数

字段名类型说明
idstring。任务 ID。可从 /v3/on_page/task_post/ 接口的响应中获取。示例:07131248-1535-0216-1000-17384017ad04
limitinteger可选。返回的不可抓取资源最大数量。默认值:100;最大值:1000
offsetinteger可选。结果数组中的偏移量。默认值:0;最大值:2000000。例如设置为 10 时,将跳过前 10 条资源,从后续结果开始返回
order_byarray可选。结果排序规则。可使用与 filters 相同的字段作为排序键。排序方式支持:asc(升序)、desc(降序)。单次请求最多支持 3 条排序规则
filtersarray可选。结果过滤条件数组。最多支持 8 个过滤条件;多个条件之间需使用逻辑操作符 andor 连接

filters 支持的运算符

  • regex
  • not_regex
  • <
  • <=
  • >
  • >=
  • =
  • <>
  • in
  • not_in
  • like
  • not_like

使用 like / not_like 时,可通过 % 匹任意长度字符串(空字符串)。

可用过滤字段请参考 /v3/on_page/filters_and_thresholds/

过滤示例

json
[
 {
 "id": "07281559-0695-0216-0000-c269be8b7592",
 "filters": [
 ["meta.content_type", "=", "image/jpeg"],
 "and",
 ["url", "like", "%go%"]
 ],
 "limit": 10
 }
]

排序说明示例

json
[
 {
 "id": "07281559-0695-0216-0000-c269be8b7592",
 "order_by": ["fetch_time,desc"],
 "limit": 10
 }
]

响应结构

接口返回 JSON 数据,顶层 tasks 数组,每个任务对应获取结果。

顶层字段

字段名类型说明
versionstring当前 API 版本
status_codeinteger通用状态码。完整错误码列表见 /v3/appendix/errors
status_messagestring通用状态信息
timestring执行耗时,单位:秒
costfloat本次请求总费用
tasks_countintegertasks 数组中的任务数量
tasks_errorinteger返回错误的任务数量
tasksarray任务结果数组

tasks[] 字段

字段名类型说明
idstring任务唯一标识,UUID 格式
status_codeinteger任务状态码,范围通常为 1000060000
status_messagestring任务状态说明
timestring任务执行耗时
costfloat任务费用
result_countintegerresult 数组数量
patharray请求路径
dataobject与请求中提交参数一致的数据对象
resultarray结果数组

result[] 字段

字段名类型说明
crawl_progressstring抓取会话状态。可选值:in_progressfinished
crawl_statusobject抓取会话
total_items_countinteger在目标域名抓取过程中发现的不可抓取资源总数
items_countinteger当前 items 数组中的资源数量
itemsarray不可抓取资源列表

crawl_status 字段

字段名类型说明
max_crawl_pagesinteger最大抓取页面数,对应创建任务时设置的 max_crawl_pages
pages_in_queueinteger当前仍在抓取队列中的页面数量
pages_crawledinteger已抓取页面数量

items[] 字段

字段名类型说明
urlstring不可抓取资源的 URL
reasonstring资源不可抓取的原因。当前固定为:content_type_inconsistency
status_codeinteger该资源返回的 HTTP 状态码。当前固定为:200
fetch_timestring抓取该资源的时间,UTC 格式:yyyy-mm-dd hh-mm-ss +00:00
metaobject资源数据

meta 字段

字段名类型说明
content_typestring资源返回的类型
expected_content_typesarray抓取器基于页面引用方式推断出的预期类型列表

请求示例

cURL

bash
curl --location --request POST "https://api.seermartech.cn/v3/on_page/uncrawlable_resources" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
 {
 "id": "07281559-0695-0216-0000-c269be8b7592",
 "filters": [
 ["meta.content_type", "=", "image/jpeg"],
 "and",
 ["url", "like", "%go%"]
 ],
 "limit": 10
 }
]'

Python

python
import requests

url = "https://api.seermartech.cn/v3/on_page/uncrawlable_resources"
headers = {
 "Authorization": "Bearer smt_live_YOUR_KEY",
 "Content-Type": "application/json"
}

data = [
 {
 "id": "07281559-0695-0216-0000-c269be8b7592",
 "filters": [
 ["meta.content_type", "=", "image/jpeg"],
 "and",
 ["url", "like", "%go%"]
 ],
 "limit": 10
 }
]

response = requests.post(url, headers=headers, json=data)
print(response.json)

TypeScript

typescript
import axios from "axios";

const postData = [
 {
 id: "07281559-0695-0216-0000-c269be8b7592",
 filters: [
 ["meta.content_type", "=", "image/jpeg"],
 "and",
 ["url", "like", "%go%"]
 ],
 limit: 10
 }
];

axios({
 method: "post",
 url: "https://api.seermartech.cn/v3/on_page/uncrawlable_resources",
 headers: {
 Authorization: "Bearer smt_live_YOUR_KEY",
 "Content-Type": "application/json"
 },
 data: postData
})
 .then((response) => {
 // 输出接口结果
 console.log(response.data);
 })
 .catch((error) => {
 console.error(error);
 });

响应示例

json
{
 "version": "0.1.20260223",
 "status_code": 20000,
 "status_message": "Ok.",
 "time": "0.3232 sec.",
 "cost": 0,
 "tasks_count": 1,
 "tasks_error": 0,
 "tasks": [
 {
 "id": "07281559-0695-0216-0000-c269be8b7592",
 "status_code": 20000,
 "status_message": "Ok.",
 "time": "0.0211 sec.",
 "cost": 0,
 "result_count": 1,
 "path": [
 "v3",
 "on_page",
 "uncrawlable_resources"
 ],
 "data": {
 "api": "on_page",
 "function": "uncrawlable_resources",
 "target": "univers-pc.fr",
 "max_crawl_pages": 2500,
 "max_crawl_depth": null
 },
 "result": [
 {
 "crawl_progress": "finished",
 "crawl_status": {
 "max_crawl_pages": 2500,
 "pages_in_queue": 0,
 "pages_crawled": 2500
 },
 "total_items_count": 4,
 "items_count": 4,
 "items": [
 {
 "url": "https://univers-pc.fr/wp-content/uploads/2024/11/MFC-J5740DW-4.png",
 "reason": "content_type_inconsistency",
 "status_code": 200,
 "fetch_time": "2026-03-09 18:20:36 +00:00",
 "meta": {
 "content_type": "image/png",
 "expected_content_types": [
 "image/jpeg"
 ]
 }
 },
 {
 "url": "https://univers-pc.fr/wp-content/uploads/2025/12/asus-expertbook-b3605cva-mb0197x-1.jpg",
 "reason": "content_type_inconsistency",
 "status_code": 200,
 "fetch_time": "2026-03-09 18:27:28 +00:00",
 "meta": {
 "content_type": "image/jpeg",
 "expected_content_types": [
 "image/png"
 ]
 }
 },
 {
 "url": "https://univers-pc.fr/wp-content/uploads/2025/12/asus-vivobook-flip-tp3407sa-flip-ql131x-3.jpg",
 "reason": "content_type_inconsistency",
 "status_code": 200,
 "fetch_time": "2026-03-09 18:28:35 +00:00",
 "meta": {
 "content_type": "image/jpeg",
 "expected_content_types": [
 "image/webp"
 ]
 }
 }
 ]
 }
 ]
 }
 ]
}

状态码与异常处理

  • 顶层 status_code 表示本次 API 请求的整体状态;
  • tasks[].status_code 表示单个任务的执行状态;
  • 建议同时检查这两个层级的状态码;
  • 完整错误码与状态说明请参考 /v3/appendix/errors

常见处理建议:

  1. 确认顶层 status_code 是否为 20000
  2. 再检查 tasks_error 是否为 0
  3. 最后遍历 tasks[],确认每个任务的 status_code 是否正常;
  4. crawl_progressin_progress,说明抓取尚未完成,此时结果可能不完整,建议稍后重试。

使用说明

该接口通常用于分析页面资源引用是否存在异常,特别适合排查以下问题:

  • 图片、脚本、样式等资源链接指向了错误的类型;
  • 资源可访问,但因响应头异常导致搜索引擎或抓取器无法正确处理;
  • 迁移站点、改版站点或 CDN置调整后出现的资源类型错问题。

如果你需要基于特定资源类型、URL 片段或抓取时间进行筛选,建议结合 filtersorder_by 使用。

实用场景

  • 排查资源类型错误:识别图片、样式表、脚本等资源的返回类型与页面引用类型不一致的问题,减少搜索引擎抓取异常。
  • 定位 CDN 或服务器响应头异常:发现因 CDN、对象存储或反向代理错误导致的 Content-Type 错,提升资源可解析性。
  • 审计站点改版后的静态资源健康度:在域名迁移、模板升级或媒体库替换后,快速筛出异常资源,降低页面展示和抓取风险。
  • 筛选高风险资源进行修复:通过 filters 过滤特定 content_type、URL 路径或时间范围,优处理目录下的问题资源。
  • 监控大规模抓取任务中的异常分布:结合 total_items_countpages_crawleditems 数据,评估整站资源引用规范性并指导技术 SEO 优化。

统一入口:官网 · LLM API · 控制台