error_code、status_code 和原始 error 消息一起判断失败原因和后续处理方式。
这些是 Scraper Studio 的采集错误,不是 API 认证错误或 API 请求错误。关于 Scraper Studio 之外返回的代理层 HTTP 错误,请参见错误目录。
如何解读 Scraper Studio 错误?
Scraper Studio 使用五个系统字段描述每条记录的状态。
请基于
error_code 而非原始 error 字符串编写判断逻辑,因为错误消息文本会随爬虫更新而变化:
Scraper Studio 状态码分别代表什么?
status_code 以类 HTTP 数值的形式概括爬取结果。
错误与警告有什么区别?
错误表示该记录采集失败;警告表示该记录已投递,但存在需要复查的问题。- 错误(Error): 记录失败,应视为未成功。失败记录通常包含
error、error_code和status_code - 警告(Warning): 记录已投递,但存在需要复查的问题。带非致命问题的已投递记录通常包含
warning、warning_code和status_code - 成功记录:
error、error_code、warning和warning_code均未填充
dead_page 错误被降级为警告时,输出中会包含:
Scraper Studio 错误来自哪里?
Scraper Studio 的错误来自以下三个层级之一。哪些原因会导致爬虫错误?
爬虫错误来自爬虫的交互代码、解析器代码或输入处理,例如无效输入、wait_element_timeout、parse_error、click_timeout、dead_page、bad_input 和 blocked 等。
通常通过更新爬虫逻辑、解析器选择器、校验规则或输入数据来解决。
哪些原因会导致代理和解锁器错误?
代理和解锁器错误来自 Bright Data 的代理、路由或解锁层,例如代理连接问题、目标网站封锁、地理位置或 zone 配置问题、无可用节点以及速率限制等。 通常需要重试、降低请求速率、更改国家或地理位置设置;若问题持续存在,请联系 Bright Data 支持团队。哪些原因会导致平台和基础设施错误?
平台和基础设施错误来自 Scraper Studio 平台、浏览器 worker、解析器沙箱、存储层或内部基础设施,例如 worker 超时、浏览器断开连接、解析器超出内存限制、上传失败以及 WebSocket 连接问题等。 这类错误通常是临时性的,重试即可解决。若问题持续存在,请提交支持工单,并附上爬虫 ID、作业 ID、失败的输入以及原始错误消息。常见爬虫错误代码
这类错误代码表示爬虫执行阶段的问题。请求失败的原因可能是输入无效、页面元素缺失或发生变化、目标网站封锁、解析问题、速率限制、CAPTCHA 处理,或爬虫逻辑需要更新。block 与 blocked 有什么区别?
block 和 blocked 是两个不同的错误代码。blocked 由爬虫逻辑触发,block 由抓取页面的下层触发。
blocked 通常由爬虫逻辑触发。当爬虫检测到封锁页面、登录墙、CAPTCHA 页面或其他应标记为封锁的情况时,会调用 blocked():
block 通常来自导航、请求拒绝、目标网站封锁或代理层响应处理,可能携带目标网站或上游层返回的真实 HTTP 状态码。block 已观察到的状态码包括:
blocked是采集器层面的封锁检测,通常由爬虫逻辑触发block是目标网站、代理或导航层面的拒绝,通常带有 HTTP 状态码
导航和浏览器错误代码
这类错误代码表示导航或浏览器加载问题。失败原因可能是页面未在规定时间内加载、浏览器无法访问该 URL、目标网站持续保持网络请求打开,或连接在完成前超时或关闭。浏览器和基础设施生命周期错误
这类错误代码表示浏览器会话、runner 或浏览器控制连接在爬取过程中被中断,通常是临时性的平台或浏览器生命周期错误。 常见的生命周期错误代码包括runner_disconnected、network_error、cdp_conn_err、cdp_cmd_timeout、cdp_disconnect、bad_browser、browser_disconnected 和 ipc_timeout。
建议操作: 重试该作业。若错误持续存在,请提交支持工单,并附上作业 ID、响应 ID、失败的输入以及原始错误消息。
速率限制类错误
global_rate_limit 和 bucket_rate_limit 表示对目标域名的请求受到了速率限制。通常出现在目标网站对高请求量敏感,或并发请求过多的情况下。
建议操作: 短暂延迟后重试。若问题反复出现,请降低并发数并将作业排队,而不是并行运行大量作业。
作业生命周期错误代码
这类错误代码表示采集因运行时长、截止时间、取消操作或页面数量限制而未能完成。基础设施和存储错误代码
这类错误代码表示平台、worker、存储或投递方面的问题。采集失败的原因可能是内部服务不可用、worker 过载、结果过大,或投递到外部目标失败。代理和解锁器错误代码
这类错误代码表示 Scraper Studio 与底层代理网络之间存在路由或连接问题,通常出现在代理网络无法与目标网站建立或维持稳定连接时。解析器和负载错误代码
这类错误代码表示解析器执行或负载大小问题。失败原因可能是解析器代码遇到无效或缺失的数据、发送给解析器的负载过大,或解析器执行超出内存或 CPU 限制。访问和权限错误代码
这类错误代码表示访问或合规方面的问题。请求被终止的原因是目标受 Bright Data 合规保护机制限制,或账户权限需要复核。采集失败时的排查流程
当采集运行返回错误时,请按以下顺序排查。- 查看
error_code。 - 查看
status_code(若存在)。 - 阅读原始
error消息。 - 手动打开失败的 URL,确认页面是否存在且可访问。
- 使用 Debug crawl 或 Crawl inspector 检查失败的输入、爬取阶段、子页面、文件、警告和输出记录。
- 若错误与解析器相关,请运行预览并检查 HTML、Output 和 Last errors。
- 若大量输入出现相同错误,请检查请求速率、并发数、封锁情况、worker 类型以及目标网站近期的变更。
- 若问题持续存在,请提交支持工单,并附上爬虫 ID、作业或响应 ID、失败的输入以及原始错误消息。
常见问题
为什么失败记录中没有 status_code?
部分 Scraper Studio 错误路径不会分配数字状态码,因此 status_code 有时会缺失或为 undefined。请将该字段视为可选,并改用 error_code 编写判断逻辑。
出现警告是否意味着记录丢失?
不是。警告表示记录已投递,但存在需要复查的问题,例如部分爬取、被配置为非错误的条件,或输出校验问题。只有包含error 和 error_code 的记录才算失败。
哪些错误适合自动重试?
适合自动重试的是临时性的平台、浏览器生命周期、代理和速率限制错误,例如infra_error、runner_disconnected、browser_disconnected、worker_too_busy、proxy_error、global_rate_limit 和 bucket_rate_limit。bad_input、ERR_INVALID_URL 和 dead_page 不应重试,这些需要修复输入或发现逻辑。