How a probe is wired in
Blink ships an instrumentation framework -- the "probe" system. A method like HTMLCanvasElement::toDataURL() is edited to call a generated hook such as probe::DidCanvasToDataURL(...). The probe definitions live in files like core_probes.pidl/core_probes.json5, and a custom inspector agent receives the call and forwards it as a DevTools event. None of this exists in the JavaScript world: the page calls the same toDataURL it always did, and the native implementation quietly reports the call on the way through.
A custom CDP domain
To surface the observations, you define a new CDP domain -- the post calls its example "Snitch" -- in browser_protocol.pdl, with commands and events. You implement an agent (e.g. SnitchAgent, inheriting InspectorBaseAgent), register it in WebDevToolsAgentImpl::AttachSession, and emit events like Snitch.toDataURLCalled from the probe. A UI -- in that project, an Electron shell -- subscribes to those events and shows every canvas fingerprinting attempt as it happens, across every frame including out-of-process iframes.
Why it leaves no JavaScript-visible trace
Every JavaScript-level approach -- content scripts, CDP pre-load injection, per-frame hooks -- leaves a function that differs from native under a toString or descriptor check. Engine-level instrumentation sidesteps the entire class because it never creates a JavaScript artifact to inspect, so studying a script does not change how it behaves. The same below-JavaScript principle explains why coherent, real-machine browser tooling is built at the engine layer rather than scripted on top: a believable fingerprint comes from one real machine, not a pile of per-field edits that lie detection can pull apart. A managed web-data API takes on that engine-level work so you do not have to fork and compile Chromium yourself.
