@paulallen87/chaturbate-browser
v1.2.1
Published
Headless browser for interacting with Chaturbate's websocket
Downloads
16
Readme
Chaturbate Browser
A wrapper around a headless Chrome instance that intercepts WebSocket messages from Chaturbate.
Requirements
- Chrome >= version 59
Installation
npm install @paulallen87/chaturbate-browser
Usage
const username = '<username>';
const cb = new ChaturbateBrowser();
cb.on('init', async (e) => {
console.dir(e.settings);
console.dir(e.chatSettings);
console.dir(e.initializerSettings);
console.log(e.csrftoken);
console.log(e.hasWebsocket);
console.log(await cb.fetch(`/api/panel/${e.settings.room}/`));
});
cb.on('message', (e) => {
console.log(e.timestamp);
console.log(e.method);
console.dir(e.args);
});
await cb.start();
cb.profile(username);
setTimeout(() => cb.stop(), 10 * 1000);
Methods
start
Starts the browser instance.
await cb.start();
profile
Navigates the browser to a specific profile page.
cb.profile('my username');
stop
Stops the browser instance.
cb.stop();
fetch
Fetchs the content from a specific URL.
const result = await cb.fetch('/some/url');
wait
Perform an action (form submittion) and wait for page to load.
await cb.wait(async () => {
await cb.evaluate('document.querySelector(\'form\').submit()')
});
goto
Navigate to a specific page.
await cb.goto('http://www.google.com');
cookies
Get a list of cookies.
const cookies = await cb.cookies();
session
Check if a login session exists.
const loggedIn = await cb.session();
login
Login and create a session.
await cb.login('username', 'password');
purchase
Request a token purchase with BitCoin.
const result = await cb.putchase(100);
console.log(`amount to send: ${result.amount}`)
console.log(`send to: ${result.address}`)
evaluate
Run a script.
const result = await cb.evaluate('document.querySelector(\/title\/).innerText');
Events
login
Called after a login.
cb.on('login', (username) => {
console.log(`logged in as '${username}'`);
});
profile
Called after a page has loaded.
cb.on('profile', () => {
console.log(`profile loaded for '${username}'`);
});
profile
Called after a purchase has been setup.
cb.on('purchase', (e) => {
console.log(`send '${e.amount}' to '${e.address}'`);
});
init
Called after the websocket hook is initialized.
cb.on('init', (e) => {
const status = e.hasWebsockets ? 'online' : 'offline';
console.log(`welcome to ${e.settings.room}'s room`);
console.log(`the broadcaster is ${status}`)
});
params
- settings (Object)
- chatSettings (Object)
- initializerSettings (Object)
- csrftoken (string)
- hasWebsocket (boolean)
open
Called when the websocket is being opened.
cb.on('open', () => {
console.log(`the socket is open`);
});
message
Called when the websocket receives a message.
cb.on('message', (e) => {
console.log(`method: ${e.method}`);
console.log(`callback: ${e.callback}`);
e.args.forEach((arg) => {
console.log(`arg: ${arg}`);
});
});
params
- timestamp (number)
- method (string)
- callback (?number)
- args (Array)
error
Called when the websocket has an error.
cb.on('error', (e) => {
console.error(`socket error: ${e}`);
});
close
Called when the websocket is closed.
cb.on('close', (e) => {
console.error(`socket closed`);
});
Tests
npm test