You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 7-8.RSVP
Socket
Socket
Sign inDemoInstall

puppeteer-stream

Package Overview
Dependencies
Maintainers
1
Versions
38
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.1.4 to 3.0.0

dist/Server.d.ts

34

dist/PuppeteerStream.d.ts
/// <reference types="node" />
/// <reference types="node" />
import { LaunchOptions, Browser, Page, BrowserLaunchArgumentOptions, BrowserConnectOptions } from "puppeteer-core";
import { Readable, ReadableOptions } from "stream";
type PageWithExtension = Omit<Page, "browser"> & {
browser(): BrowserWithExtension;
};
export declare class Stream extends Readable {
private page;
constructor(page: PageWithExtension, options?: ReadableOptions);
timecode: number;
_read(): void;
destroy(): Promise<this>;
}
declare module "puppeteer-core" {
interface Page {
index: number;
getStream(opts: getStreamOptions): Promise<Stream>;
}
}
type BrowserWithExtension = Browser & {
encoders?: Map<number, Stream>;
videoCaptureExtension?: Page;
};
import { Readable } from "stream";
import { Socket } from "dgram";
export declare function launch(arg1: (LaunchOptions & BrowserLaunchArgumentOptions & BrowserConnectOptions) | any, opts?: LaunchOptions & BrowserLaunchArgumentOptions & BrowserConnectOptions): Promise<Browser>;

@@ -34,4 +16,12 @@ export type BrowserMimeType = "video/webm" | "video/webm;codecs=vp8" | "video/webm;codecs=vp9" | "video/webm;codecs=vp8.0" | "video/webm;codecs=vp9.0" | "video/webm;codecs=vp8,opus" | "video/webm;codecs=vp8,pcm" | "video/WEBM;codecs=VP8,OPUS" | "video/webm;codecs=vp9,opus" | "video/webm;codecs=vp8,vp9,opus" | "audio/webm" | "audio/webm;codecs=opus" | "audio/webm;codecs=pcm";

frameSize?: number;
delay?: number;
}
export declare function getStream(page: PageWithExtension, opts: getStreamOptions): Promise<Stream>;
export declare function getStream(page: Page, opts: getStreamOptions): Promise<UDPStream>;
declare class UDPStream extends Readable {
onDestroy: Function;
socket: Socket;
constructor(port: number, onDestroy: Function);
_read(size: number): void;
destroy(error?: Error): Promise<this>;
}
export {};

@@ -34,33 +34,16 @@ "use strict";

};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = exports.launch = exports.Stream = void 0;
exports.getStream = exports.launch = void 0;
const puppeteer_core_1 = require("puppeteer-core");
const path = __importStar(require("path"));
const stream_1 = require("stream");
const path = __importStar(require("path"));
const dgram_1 = __importDefault(require("dgram"));
const extensionPath = path.join(__dirname, "..", "extension");
const extensionId = "jjndjgheafjngoipoacpjgeicjeomjli";
let currentIndex = 0;
class Stream extends stream_1.Readable {
constructor(page, options) {
super(options);
this.page = page;
}
_read() { }
// @ts-ignore
destroy() {
const _super = Object.create(null, {
destroy: { get: () => super.destroy }
});
var _a;
return __awaiter(this, void 0, void 0, function* () {
yield ((_a = this.page.browser().videoCaptureExtension) === null || _a === void 0 ? void 0 : _a.evaluate((index) => {
// @ts-ignore
STOP_RECORDING(index);
}, this.page.index));
_super.destroy.call(this);
return this;
});
}
}
exports.Stream = Stream;
function launch(arg1, opts) {
var _a, _b, _c, _d;
var _a, _b;
return __awaiter(this, void 0, void 0, function* () {

@@ -75,30 +58,27 @@ //if puppeteer library is not passed as first argument, then first argument is options

opts.args = [];
const extensionPath = path.join(__dirname, "..", "extension");
const extensionId = "jjndjgheafjngoipoacpjgeicjeomjli";
let loadExtension = false;
let loadExtensionExcept = false;
let whitelisted = false;
opts.args = opts.args.map((x) => {
if (x.includes("--load-extension=")) {
loadExtension = true;
return x + "," + extensionPath;
function addToArgs(arg, value) {
if (!value) {
if (opts.args.includes(arg))
return;
return opts.args.push(arg);
}
else if (x.includes("--disable-extensions-except=")) {
loadExtensionExcept = true;
return "--disable-extensions-except=" + extensionPath + "," + x.split("=")[1];
}
else if (x.includes("--whitelisted-extension-id")) {
whitelisted = true;
return x + "," + extensionId;
}
return x;
});
if (!loadExtension)
opts.args.push("--load-extension=" + extensionPath);
if (!loadExtensionExcept)
opts.args.push("--disable-extensions-except=" + extensionPath);
if (!whitelisted)
opts.args.push("--whitelisted-extension-id=" + extensionId);
let found = false;
opts.args = opts.args.map((x) => {
if (x.includes(arg)) {
found = true;
return x + "," + value;
}
return x;
});
if (!found)
opts.args.push(arg + value);
}
addToArgs("--load-extension=", extensionPath);
addToArgs("--disable-extensions-except=", extensionPath);
addToArgs("--whitelisted-extension-id=", extensionId);
// needed for the https2 server to receive the stream as it uses a self signed certificate
addToArgs("--ignore-certificate-errors-spki-list=", "bgCsqE/dKTUFLVdLcQ6D6sUoCtwEAu0T5QGOxQ+MS7w=");
addToArgs("--autoplay-policy=no-user-gesture-required");
if (((_a = opts.defaultViewport) === null || _a === void 0 ? void 0 : _a.width) && ((_b = opts.defaultViewport) === null || _b === void 0 ? void 0 : _b.height))
opts.args.push(`--window-size=${(_c = opts.defaultViewport) === null || _c === void 0 ? void 0 : _c.width}x${(_d = opts.defaultViewport) === null || _d === void 0 ? void 0 : _d.height}`);
opts.args.push(`--window-size=${opts.defaultViewport.width}x${opts.defaultViewport.height}`);
opts.headless = false;

@@ -112,36 +92,21 @@ let browser;

}
browser.encoders = new Map();
const extensionTarget = yield browser.waitForTarget(
// @ts-ignore
(target) => target.type() === "background_page" &&
target.url() === `chrome-extension://${extensionId}/_generated_background_page.html`);
if (!extensionTarget) {
return browser;
});
}
exports.launch = launch;
function getExtensionPage(browser) {
return __awaiter(this, void 0, void 0, function* () {
const extensionTarget = yield browser.waitForTarget((target) => {
return target.type() === "page" && target.url() === `chrome-extension://${extensionId}/options.html`;
});
if (!extensionTarget)
throw new Error("cannot load extension");
}
const videoCaptureExtension = yield extensionTarget.page();
if (!videoCaptureExtension) {
if (!videoCaptureExtension)
throw new Error("cannot get page of extension");
}
browser.videoCaptureExtension = videoCaptureExtension;
yield browser.videoCaptureExtension.exposeFunction("sendData", (opts) => {
var _a;
const encoder = (_a = browser.encoders) === null || _a === void 0 ? void 0 : _a.get(opts.id);
if (!encoder) {
return;
}
const data = Buffer.from(str2ab(opts.data));
encoder.timecode = opts.timecode;
encoder.push(data);
});
yield browser.videoCaptureExtension.exposeFunction("log", (...opts) => {
console.log("videoCaptureExtension", ...opts);
});
return browser;
return videoCaptureExtension;
});
}
exports.launch = launch;
function getStream(page, opts) {
var _a, _b;
return __awaiter(this, void 0, void 0, function* () {
const encoder = new Stream(page);
if (!opts.audio && !opts.video)

@@ -157,24 +122,40 @@ throw new Error("At least audio or video must be true");

opts.frameSize = 20;
const extension = yield getExtensionPage(page.browser());
const index = currentIndex++;
const stream = new UDPStream(55200 + index, () =>
// @ts-ignore
extension.evaluate((index) => STOP_RECORDING(index), index));
yield page.bringToFront();
if (page.index === undefined) {
page.index = currentIndex++;
}
yield ((_a = page.browser().videoCaptureExtension) === null || _a === void 0 ? void 0 : _a.evaluate((settings) => {
// @ts-ignore
START_RECORDING(settings);
}, Object.assign(Object.assign({}, opts), { index: page.index })));
(_b = page.browser().encoders) === null || _b === void 0 ? void 0 : _b.set(page.index, encoder);
return encoder;
extension.evaluate(
// @ts-ignore
(settings) => START_RECORDING(settings), Object.assign(Object.assign({}, opts), { index }));
return stream;
});
}
exports.getStream = getStream;
function str2ab(str) {
// Convert a UTF-8 String to an ArrayBuffer
var buf = new ArrayBuffer(str.length); // 1 byte for each char
var bufView = new Uint8Array(buf);
for (var i = 0, strLen = str.length; i < strLen; i++) {
bufView[i] = str.charCodeAt(i);
class UDPStream extends stream_1.Readable {
constructor(port = 55200, onDestroy) {
super({ highWaterMark: 1024 * 1024 * 8 });
this.onDestroy = onDestroy;
this.socket = dgram_1.default
.createSocket("udp4", (data) => {
this.push(data);
})
.bind(port, "127.0.0.1", () => { });
this.resume();
}
return buf;
_read(size) { }
// @ts-ignore
destroy(error) {
const _super = Object.create(null, {
destroy: { get: () => super.destroy }
});
return __awaiter(this, void 0, void 0, function* () {
yield this.onDestroy();
this.socket.close();
_super.destroy.call(this);
return this;
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVwcGV0ZWVyU3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1B1cHBldGVlclN0cmVhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQU93QjtBQUN4QixtQ0FBbUQ7QUFDbkQsMkNBQTZCO0FBSTdCLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQUVyQixNQUFhLE1BQU8sU0FBUSxpQkFBUTtJQUNuQyxZQUFvQixJQUF1QixFQUFFLE9BQXlCO1FBQ3JFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQURJLFNBQUksR0FBSixJQUFJLENBQW1CO0lBRTNDLENBQUM7SUFJRCxLQUFLLEtBQUksQ0FBQztJQUVWLGFBQWE7SUFDUCxPQUFPOzs7Ozs7WUFDWixNQUFNLENBQUEsTUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLHFCQUFxQiwwQ0FBRSxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDbkUsYUFBYTtnQkFDYixjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQztZQUNwQixPQUFNLE9BQU8sWUFBRztZQUNoQixPQUFPLElBQUksQ0FBQzs7S0FDWjtDQUNEO0FBbEJELHdCQWtCQztBQVdELFNBQXNCLE1BQU0sQ0FDM0IsSUFBa0YsRUFDbEYsSUFBMkU7OztRQUUzRSxzRkFBc0Y7UUFDdEYsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksVUFBVSxFQUFFO1lBQ3JDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDWjtRQUVELElBQUksQ0FBQyxJQUFJO1lBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVyQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztR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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVwcGV0ZWVyU3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1B1cHBldGVlclN0cmVhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQU93QjtBQUN4QiwyQ0FBNkI7QUFDN0IsbUNBQWtDO0FBQ2xDLGtEQUFzQztBQUV0QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDOUQsTUFBTSxXQUFXLEdBQUcsa0NBQWtDLENBQUM7QUFDdkQsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBRXJCLFNBQXNCLE1BQU0sQ0FDM0IsSUFBa0YsRUFDbEYsSUFBMkU7OztRQUUzRSxzRkFBc0Y7UUFDdEYsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksVUFBVSxFQUFFO1lBQ3JDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDWjtRQUVELElBQUksQ0FBQyxJQUFJO1lBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUUvQixTQUFTLFNBQVMsQ0FBQyxHQUFXLEVBQUUsS0FBYztZQUM3QyxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNYLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO29CQUFFLE9BQU87Z0JBQ3BDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDM0I7WUFDRCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUMvQixJQUFJLENB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

@@ -1,99 +0,4 @@

// @ts-nocheck
/* global chrome, MediaRecorder, FileReader */
// need to reload extension when puppeteer-extra plugin is provided
chrome.storage.local.get(/* String or Array */["done"], function(items){
let done = items?.done;
setTimeout(() => {
console.log(done)
if (done) return;
chrome.storage.local.set({ "done": true }, function(){
chrome.runtime.reload ()
});
}, 1000);
});
const recorders = {};
function START_RECORDING({ index, video, audio, frameSize, audioBitsPerSecond, videoBitsPerSecond, bitsPerSecond, mimeType, videoConstraints }) {
chrome.tabCapture.capture(
{
audio,
video,
videoConstraints
},
(stream) => {
if (!stream) return;
const recorder = new MediaRecorder(stream, {
ignoreMutedMedia: true,
audioBitsPerSecond,
videoBitsPerSecond,
bitsPerSecond,
mimeType,
});
recorders[index] = recorder;
// TODO: recorder onerror
recorder.ondataavailable = async function (event) {
if (event.data.size > 0) {
const buffer = await event.data.arrayBuffer();
const data = arrayBufferToString(buffer);
if (window.sendData) {
window.sendData({
id: index,
data,
timecode: event.timecode
});
}
}
};
recorder.onerror = () => recorder.stop();
recorder.onstop = function () {
try {
const tracks = stream.getTracks();
tracks.forEach(function (track) {
track.stop();
});
} catch (error) {}
};
stream.oninactive = () => {
try {
recorder.stop();
} catch (error) {}
};
recorder.start(frameSize);
}
);
}
function STOP_RECORDING(index) {
//chrome.extension.getBackgroundPage().console.log(recorders)
if (!recorders[index]) return;
recorders[index].stop();
}
function arrayBufferToString(buffer) {
// Convert an ArrayBuffer to an UTF-8 String
var bufView = new Uint8Array(buffer);
var length = bufView.length;
var result = "";
var addition = Math.pow(2, 8) - 1;
for (var i = 0; i < length; i += addition) {
if (i + addition > length) {
addition = length - i;
}
result += String.fromCharCode.apply(null, bufView.subarray(i, i + addition));
}
return result;
}
chrome.tabs.create(
{ pinned: true, active: false, url: `chrome-extension://${chrome.runtime.id}/options.html` },
(tab) => {}
);

@@ -5,8 +5,20 @@ {

"key": "ackedhmjjinfocdcekpnbdocpmiffaac",
"manifest_version": 2,
"manifest_version": 3,
"background": {
"persistent": true,
"scripts": ["background.js"]
"service_worker": "background.js"
},
"permissions": ["tabs", "<all_urls>", "tabCapture", "storage"]
"content_scripts": [
{
"matches": ["*://*/*"],
"js": ["content.js"]
}
],
"sockets": {
"tcp": {
"connect": ""
},
"udp": { "send": ["*:*"], "bind": ["*:*"] }
},
"permissions": ["tabs", "tabCapture", "storage", "activeTab", "scripting", "sockets.tcp"],
"host_permissions": ["*://*/*", "<all_urls>", "https://*/*", "http://*/*"]
}
{
"name": "puppeteer-stream",
"version": "2.1.4",
"version": "3.0.0",
"description": "",

@@ -5,0 +5,0 @@ "main": "dist/PuppeteerStream.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc