Browserjet
headless webkit browser with node.js interface
Install / Use
/learn @briankircho/BrowserjetREADME
Browserjet - headless webkit with a node.js interface
Browserjet gives you access to headless webkit which is often useful for site scraping, testing, page screenshots, saving pdfs, and more.
Installing
To install the node.js module simply use
npm install browserjet
Currently supported is Linux 32/64
Usage
Browserjet provides and easy to use API. To load, manipulate, and save a page as a png you can use:
var browserjet = require('browserjet'),
browser = browserjet.createBrowser();
browser
.chain
.get("http://nodejs.org/")
.run(function() {
document.body.style.backgroundColor = '#000066';
})
.save('nodejs.png')
.end(function(err) {
if(err) { throw err; }
});
API
browser.get(url, callback)
Fetch the given page and pass ok to callback after completely loaded
browser.get("http://google.com/", function(err, ok) {
if(err) { throw err; }
console.log("Page loaded");
});
Also see examples/loadspeed.js for another example
browser.setHtml(html, callback)
Set the browsers content to the given HTML and run callback when completely loaded
browser.setHtml("<html><body>Hello World</body></html>");
browser.html(callback)
Return the browsers HTML
browser.run(js, callback)
Run the supplied javascript synchronously in the context of the currently loaded page and pass the last result to the callback
browser.run("document.getElementsByTagName('p').length", function(err, count) {
console.log("There are "+count+" paragraphs in the currently loaded page");
});
browser.runAsync(js, callback)
An advanced command to run the given javascript asynchronously in the context of the currently loaded page, browserjet.callback is exposed on the page and returns its parameter to the callback.
browser.runAsync(function() {
// This code runs in the context of the loaded page
setTimeout(function() {
browserjet.callback(document.title);
}, 1000);
}, function(err, title) {
console.log(title);
});
After 1s, the title of the currently loaded page is printed
Also see examples/qunit.js for another example of runAsync
browser.save(filename, callback)
Saves the current page, supported file extensions are image formats (png, gif, svg, tiff) and pdf
browser.save("page.pdf");
browser.save("/tmp/page.png");
Tests
The browserjet tests use expresso, which you can install with
npm install -g expresso
Then in the module directory you can just run
expresso
Related Skills
node-connect
342.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
85.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
342.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
342.5kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
