patrols

patrols

CDPEx is a Chrome DevTools Protocol client for Elixir. It drives a real Chrome straight over CDP, with no ChromeDriver, Selenium, or WebDriver sitting in between. I wrote it to replace Wallaby/ChromeDriver in a production scraping app, and it’s now the only browser engine that app runs on.

You launch a Chrome, drive a page, and CDPEx reaps the OS process for you when the page is done, so you don’t end up with a pile of orphaned Chrome processes.

CDPEx.with_page([], fn page ->
  {:ok, _} = CDPEx.Page.navigate(page, "https://example.com")
  CDPEx.Page.wait_for_network_idle(page)
  CDPEx.Page.screenshot(page, path: "shot.png")
end)
# Chrome launched, driven, and cleaned up. Nothing left running.

What it does:

  • with_page/3 runs your code with a fresh page and guarantees teardown, even if your function raises
  • Real, trusted input: clicks and keystrokes go through Chrome as genuine user gestures (event.isTrusted == true), not synthetic JS events
  • Connects to a remote or already-running Chrome over ws(s)://, as well as launching one locally
  • Navigation, evaluate, screenshots, and PDF rendering
  • Network observation, including waiting for the network to go idle
  • Proxy support with authentication
  • :telemetry instrumentation and an optional warm browser pool

It’s running in production right now, rendering JS-heavy pages, including ones behind JS challenges and Cloudflare. It’s a real browser running real JS, so no stealth tricks are involved.

It’s pre-1.0, so the API can still change, and stealth or anti-bot evasion is out of scope on purpose. It has held up well under daily load so far.

The package is on Hex and the docs are on HexDocs. Happy to answer questions or hear what you think is missing.

Showing Posts 1 to 3

felix-starman

felix-starman

Hey, just curious if there was anything in particular missing that you needed that Bibbidi did not have?

I’m trying to make sure that Bibbidi can be resilient and bulletproof for everyone regardless of browser

patrols

patrols OP

Hey Felix! honest answer: I didn’t know about Bibbidi when I started. When I looked around, most of what I found either wrapped ChromeDriver/WebDriver or pulled in a full Playwright/Puppeteer-style layer, and I wanted something small that talks CDP directly, mainly for a scraping pipeline I run in production. So it wasn’t a specific feature Bibbidi was missing; I just didn’t find it when I searched, and by the time I might have, I’d already built the thing.

I’ll take a proper look at Bibbidi though, curious how you approached it

felix-starman

felix-starman

All good.

Version 0.4 is basically ready but I’m adding usage docs to a bunch of modules.

And then I have a plan for library called Bobbidi that is more high level but would still be like a middleware for an RPA library

— All posts loaded —

Where Next? Top

Trending in Announcing Top

type1fool
WebAuthnLiveComponent WebAuthnComponents See this post about renaming the package. Passwordless authentication for Phoenix LiveView app...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
ausimian
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
kip
In 2021 I started a new library called Tempo with the objective of modelling time as a set of intervals - not as instants. In 2022 I gave...
New
quatermain
Hello, I’m sharing my plugin here in forum after some time so it has time to mature and proof yourself. I use Claude Code daily on a pr...
New
gtcode
Aloha gang, There’s a new class of AI model out from TypeSafe. Jev is their flagship model. You can learn about it here: ...
New

Other Trending Topics Top

dominicletz
Hey there, I haven’t seen a list of useful Elixir specific skills for the popular AI tools yet so I’m starting one here with my first. ...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New
OndrejValenta
(I just needed to vent somewhere and LinkedIn is full of hope, or hype, I’m not sure which exactly) AI dream has many faces, but general...
New
alexslade
Fly’s CEO posted this recently - Turn And Face The Strange · The Fly Blog It says that Fly is going all-in on sprites, which is a worry ...
New
CodeSync
Code BEAM Europe 2026 – Call for Talks is Open! We’re excited to announce that Code BEAM Europe 2026 is now open for talk submissions :t...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews