I don't understand this objection. Puppeteer is the client library that you want, and it's not particularly massive. It's the plumbing to handle all of the stuff around starting and connecting to browsers, providing a tidy API to abstract the stuff that's annoying to use directly.
In fact, you can do almost anything you want to using the existing interface that Chrome has built in:
chromium --remote-debugging-port=9222
You can connect to it using e.g. the WS command line tool using the URL it spits out: ws ws://127.0.0.1:9222/devtools/browser/81b9b178-ece0-4953-8ea0-bce6ac31d89c
Then you can make it do things: {"id": 1, "method": "Target.createTarget", "params": {"url": "http://www.google.com"}}
It does what you want, over a web socket interface rather than HTTP.Where does that ws tool come from? Is it this one? https://packages.debian.org/stretch/node-ws
How do you send javascript commands over that protocol?
You can also just start chromium with debugging active `--remote-debugging-port=9222` and then connect to that port and send any dev console commands.
Looks like it's a REST protocol.
You have to connect to a tab and then call e.g.
Runtime.evaluate {expression: "console.log('test')"}