Chrome DevTools Protocol (CDP) is a WebSocket-based protocol used by Chrome DevTools (DevTools in Chromium are written in HTML/CSS/JS and communicate with the browser via CDP) — and by all browser automation tools.
Domains (method categories):
Page— navigation, screenshots, lifecycle eventsDOM— query elements, modify DOMNetwork— intercept requests, modify responses, throttleRuntime— execute JS, evaluate expressionsInput— dispatch mouse/keyboard eventsBrowser— manage browser-level stateStorage— cookies, localStorage, IndexedDBPerformance— metrics, traces
Total ~150 methods, ~200 events, ~500 types. Largest browser protocol in use.
Practical implications:
- Playwright and Puppeteer under the hood are wrappers around CDP — you can drop to raw CDP when you need something non-standard
- Detection by anti-bot: CDP usage has specific signatures (Runtime.evaluate in certain places, specific event sequences)
- All other Chromium-based browsers (Edge, Brave, Vivaldi, Arc) support CDP
- Firefox has its own protocol (Marionette), Playwright translates both under one API
Documentation: chromedevtools.github.io/devtools-protocol