go-rod/rod
GitHub: go-rod/rod
Rod 是一个基于 Chrome DevTools Protocol 的 Go 语言高级浏览器驱动,用于 Web 自动化和网页抓取。
Stars: 7030 | Forks: 476
# 概述
[](https://pkg.go.dev/github.com/go-rod/rod)
[][discord room]
## [文档](https://go-rod.github.io/) | [API 参考](https://pkg.go.dev/github.com/go-rod/rod?tab=doc) | [常见问题](https://go-rod.github.io/#/faq/README)
Rod 是一个直接基于 [DevTools Protocol](https://chromedevtools.github.io/devtools-protocol) 的高级驱动。
它专为高级和低级用途的 Web 自动化和抓取而设计,资深开发者可以使用低级包和函数轻松
自定义或构建他们自己的 Rod 版本,高级函数只是构建默认版 Rod 的一些示例。
[中文 API 文档](https://pkg.go.dev/github.com/go-rod/go-rod-chinese)
## 特性
- 链式 context 设计,直观地对长时间运行的任务进行超时处理或取消
- 自动等待元素就绪
- 调试友好,自动输入追踪,远程监控无头浏览器
- 所有操作均线程安全
- 自动查找或下载[浏览器](lib/launcher)
- 诸如 WaitStable、WaitRequestIdle、HijackRequests、WaitDownload 等高级辅助功能
- 两步式 WaitEvent 设计,绝不漏掉任何事件([工作原理](https://github.com/ysmood/goob))
- 正确处理嵌套的 iframe 或 shadow DOM
- 崩溃后不会产生僵尸浏览器进程([工作原理](https://github.com/ysmood/leakless))
- [CI](https://github.com/go-rod/rod/actions) 强制实现 100% 测试覆盖率
## 示例
请先查看 [examples_test.go](examples_test.go) 文件,然后查看 [examples](lib/examples) 文件夹。
如需更详细的示例,请搜索单元测试。
例如,关于 `HandleAuth` 方法的使用,您可以搜索所有包含 `HandleAuth` 的 `*_test.go` 文件,
例如,使用 GitHub 在线[在仓库中搜索](https://github.com/go-rod/rod/search?q=HandleAuth&unscoped_q=HandleAuth)。
您也可以搜索 GitHub 的 [issues](https://github.com/go-rod/rod/issues) 或 [discussions](https://github.com/go-rod/rod/discussions),
那里记录了大量的使用示例。
[这里有一份](lib/examples/compare-chromedp) rod 与 Chromedp 的示例对比。
如果您有疑问,请发起 [issues](https://github.com/go-rod/rod/issues)/[discussions](https://github.com/go-rod/rod/discussions) 或加入[聊天室][discord room]。
## 加入我们
竭诚欢迎您的帮助!哪怕仅仅是提一个 issue 来问一个问题,也可能会极大地帮助到其他人。
在提问之前,请阅读[提问的智慧](http://www.catb.org/~esr/faqs/smart-questions.html)。
标签:ChromeDevTools, EVTX分析, Go, Ruby工具, Web自动化, 无头浏览器, 日志审计