支持连接到 BrightData Scraping 浏览器
作者: apuigsech创建于 2024年7月17日更新于 2026年9月8日
标签enhancediscuss
我想使用可扩展的浏览器基础设施服务,例如 BrightData Scraping Browser,这些服务与 Puppeteer 很好地集成。但是,我在尝试使用这些服务与 go-rod 时遇到了一些问题。我想请求以下增强,以提高兼容性:
1. WebSocket 身份验证:
连接到这些服务的 WebSocket 需要身份验证(例如,wss://user:pass@host:9222)。但是,go-rod 目前不发送必要的身份验证头,我认为这些头在任何 WebSocket 标准中都没有定义。通过我的研究,我发现身份验证是使用基本令牌进行的。我已经实现了一个可行的解决方案,用于注入授权头。但是,我不确定这是注入的最佳位置。如果这个解决方案符合项目的方向,我愿意提交一个 PR,其中包含我的 实现。
2. 更松散的 WebSocket 响应处理:
这些服务有时会发送偏离预期 go-rod 响应结构的响应,导致解析失败而引发异常。特别是,Error 结构期望有一个整数 Code,但某些响应包含字符串(例如,“navigate_limit”)。响应结构定义如下:
type Response struct {
ID int `json:"id"`
Result json.RawMessage `json:"result,omitempty"`
Error *Error `json:"error,omitempty"`
}
type Error struct {
Code int `json:"code"`
Message string `json:"message"`
Data string `json:"data"`
}Brightdata 向我发送了一个会引发异常的结构,如下所示:
{
"id": 27,
"sessionId": "BRD_461626884EEF95862B6188C2DBB766D1",
"error": {
"message": "Page.navigate limit reached",
"code": "navigate_limit" // 此处预期为整数。
},
"duration": 1.2261550000112038
}为了使 go-rod 更兼容,可能需要放宽 Error 结构的标准严格性。我会很感谢您提供有关实现此灵活性的最佳方法的指导。如果您同意这一点,我很乐意在得到一些指导的情况下开展实现工作。
内容来源: go-rod/rod