Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@lifeofcoding
Created June 16, 2020 17:29
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lifeofcoding/33cfd11b62bfbb10566c2aae2bf5d28f to your computer and use it in GitHub Desktop.
Save lifeofcoding/33cfd11b62bfbb10566c2aae2bf5d28f to your computer and use it in GitHub Desktop.
Cow Wifi Free Trial Bypass
const puppeteer = require("puppeteer");
const sh = require("shelljs");
const random_name = require("node-random-name");
const random_useragent = require("random-useragent");
const fs = require("fs");
const path = require("path");
const randomMac = require("random-mac");
const notifier = require("node-notifier");
const argv = require("yargs")
.option("iface", {
alias: "i",
describe: "Interfaceto use",
demandOption: true,
})
.option("debug", {
alias: "d",
type: "boolean",
description: "Run with debug output",
})
.option("timeout", {
alias: "t",
default: 60000,
description: "Time to wait for page loads",
}).argv;
const cmd = `
macchanger -s "${argv.iface}" && \
sudo service network-manager stop && \
sudo ifconfig "${argv.iface}" down && \
sudo macchanger -a "${argv.iface}" && \
macchanger -s "${argv.iface}" && \
sudo ifconfig "${argv.iface}" up && \
sudo service network-manager start
`;
const rand = (min, max) => {
return Math.floor(Math.random() * (max - min + 1)) + min;
};
const domains = [
"gmail.com",
"yahoo.com",
"outlook.com",
"live.com",
"aol.com",
];
const emailMixer = (firstName, lastName) => {
let first = rand(0, 1)
? firstName + "." + lastName
: lastName + "." + firstName;
return `${first}@${domains[Math.floor(Math.random() * domains.length)]}`;
};
(async function run() {
const name = random_name();
const firstName = name.split(" ")[0];
const lastName = name.split(" ")[1];
const agent = random_useragent.getRandom(function (ua) {
return !ua.userAgent.includes("Mobile") && ua.userAgent.includes("Windows");
});
const args = [
"--user-agent=" + agent,
"--no-sandbox",
"--disable-setuid-sandbox",
"--disable-infobars",
"--window-position=0,0",
"--ignore-certifcate-errors",
"--ignore-certifcate-errors-spki-list",
];
const options = {
args,
headless: true,
ignoreHTTPSErrors: true,
};
sh.exec(cmd, async (code, output) => {
notifier.notify({
icon: path.join(__dirname, "wifi.png"),
title: "Cox Wifi Connecting...",
message: "Attempting to connect to Cox Wifi.",
});
var macParts = output.match(/(?<=New MAC: \s*).*?(?=\s* )/gs);
const mac = macParts[0];
await new Promise((r) => setTimeout(r, argv.timeout));
const browser = await puppeteer.launch(options);
const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();
try {
page.on("error", (msg) => {
throw msg;
});
const preloadFile = fs.readFileSync("./preload.js", "utf8");
await page.evaluateOnNewDocument(preloadFile);
await page.goto(
`http://cwifi-new.cox.com/?mac-address=${mac}&ap-mac=${randomMac()}&ssid=CoxWiFi&vlan=103&nas-id=BTNRWAGB01.at.at.cox.net&block=false&unique=$HASH`,
{
waitUntil: "networkidle2",
timeout: 60000,
}
);
if (argv.debug) {
await page.screenshot({
path: path.resolve(__dirname) + "/landing.jpeg",
type: "jpeg",
quality: 100,
});
console.log(
"[DEBUG]: Landing page screenshot: ",
path.resolve(__dirname) + "/landing.jpeg"
);
}
await page.waitForSelector(
"#signIn > .signInText > .freeAccessPassSignup > .floatleft > .coxRegisterButton"
);
await page.keyboard.down("Tab");
await page.keyboard.down("Tab");
await page.keyboard.press("Enter");
await page.waitForNavigation({ timeout: argv.timeout });
var userAgent = await page.evaluate(() => {
return (function () {
return window.navigator.userAgent;
})();
});
if (argv.debug) {
console.log("Using usere-agent:", userAgent);
}
await page.setViewport({ width: 1440, height: 779 });
await page.waitForSelector("table #trial_request_voucher_form_firstName");
await page.click("table #trial_request_voucher_form_firstName");
await page.type(
"table #trial_request_voucher_form_firstName",
firstName,
{
delay: rand(100, 300),
}
);
await page.type("table #trial_request_voucher_form_lastName", lastName, {
delay: rand(100, 300),
});
await page.waitForSelector("table #trial_request_voucher_form_isp");
await page.click("table #trial_request_voucher_form_isp");
await page.select("table #trial_request_voucher_form_isp", "Verizon");
await page.waitForSelector("table #trial_request_voucher_form_email");
await page.click("table #trial_request_voucher_form_email");
await page.type(
"table #trial_request_voucher_form_email",
emailMixer(firstName, lastName),
{
delay: rand(100, 300),
}
);
await page.waitForSelector(
".decisionBlock > table > tbody > tr > .top:nth-child(2)"
);
await page.click(
".decisionBlock > table > tbody > tr > .top:nth-child(2)"
);
await page.waitForSelector(
"table #trial_request_voucher_form_serviceTerms"
);
await page.click("table #trial_request_voucher_form_serviceTerms");
await page.keyboard.down("Tab");
await page.keyboard.down("Tab");
await page.keyboard.press("Enter");
await page.waitForNavigation({ timeout: argv.timeout });
var pageText = await page.evaluate(() => {
return (function () {
var s = window.getSelection();
s.removeAllRanges();
var r = document.createRange();
r.selectNode(document.body);
s.addRange(r);
var c = s.toString();
s.removeAllRanges();
return c;
})();
});
if (argv.debug) {
console.log("[DEBUG]: pageText:", pageText);
}
if (pageText.toLowerCase().includes("you are now connected")) {
let t = new Date().toLocaleString();
notifier.notify({
icon: path.join(__dirname, "wifi.png"),
title: "Cox Wifi Connected",
message: "Wifi Connected Successfully",
});
console.log("Wifi Connected Successfully", t);
if (argv.debug) {
await page.screenshot({
path: path.resolve(__dirname) + "/result.jpeg",
type: "jpeg",
quality: 100,
});
console.log(
"[DEBUG]: Result page screenshot: ",
path.resolve(__dirname) + "/result.jpeg"
);
}
setTimeout(run, 60000 * 60);
} else {
await page.screenshot({
path: path.resolve(__dirname) + "/error-result.jpeg",
type: "jpeg",
quality: 100,
});
console.log(
"[DEBUG]: Error screenshot: ",
path.resolve(__dirname) + "/error-result.jpeg"
);
notifier.notify({
icon: path.join(__dirname, "error.png"),
title: "Error",
message: "Error, Cox Wifi failed to connect, please check output.",
});
}
await browser.close();
} catch (err) {
console.warn("Error: ", err);
setTimeout(run, 30000);
}
});
})();
@Malachi26-g
Copy link

const puppeteer = require("puppeteer");
const sh = require("shelljs");
const random_name = require("node-random-name");
const random_useragent = require("random-useragent");
const fs = require("fs");
const path = require("path");
const randomMac = require("random-mac");
const notifier = require("node-notifier");
const argv = require("yargs")
.option("iface", {
alias: "i",
describe: "Interfaceto use",
demandOption: true,
})
.option("debug", {
alias: "d",
type: "boolean",
description: "Run with debug output",
})
.option("timeout", {
alias: "t",
default: 60000,
description: "Time to wait for page loads",
}).argv;

const cmd = macchanger -s "${argv.iface}" && \ sudo service network-manager stop && \ sudo ifconfig "${argv.iface}" down && \ sudo macchanger -a "${argv.iface}" && \ macchanger -s "${argv.iface}" && \ sudo ifconfig "${argv.iface}" up && \ sudo service network-manager start;

const rand = (min, max) => {
return Math.floor(Math.random() * (max - min + 1)) + min;
};

const domains = [
"gmail.com",
"yahoo.com",
"outlook.com",
"live.com",
"aol.com",
];

const emailMixer = (firstName, lastName) => {
let first = rand(0, 1)
? firstName + "." + lastName
: lastName + "." + firstName;

return ${first}@${domains[Math.floor(Math.random() * domains.length)]};
};

(async function run() {
const name = random_name();
const firstName = name.split(" ")[0];
const lastName = name.split(" ")[1];

const agent = random_useragent.getRandom(function (ua) {
return !ua.userAgent.includes("Mobile") && ua.userAgent.includes("Windows");
});

const args = [
"--user-agent=" + agent,
"--no-sandbox",
"--disable-setuid-sandbox",
"--disable-infobars",
"--window-position=0,0",
"--ignore-certifcate-errors",
"--ignore-certifcate-errors-spki-list",
];

const options = {
args,
headless: true,
ignoreHTTPSErrors: true,
};

sh.exec(cmd, async (code, output) => {
notifier.notify({
icon: path.join(__dirname, "wifi.png"),
title: "Cox Wifi Connecting...",
message: "Attempting to connect to Cox Wifi.",
});

var macParts = output.match(/(?<=New MAC:       \s*).*?(?=\s* )/gs);

const mac = macParts[0];

await new Promise((r) => setTimeout(r, argv.timeout));

const browser = await puppeteer.launch(options);

const context = await browser.createIncognitoBrowserContext();

const page = await context.newPage();

try {
  page.on("error", (msg) => {
    throw msg;
  });

  const preloadFile = fs.readFileSync("./preload.js", "utf8");
  await page.evaluateOnNewDocument(preloadFile);

  await page.goto(
    `http://cwifi-new.cox.com/?mac-address=${mac}&ap-mac=${randomMac()}&ssid=CoxWiFi&vlan=103&nas-id=BTNRWAGB01.at.at.cox.net&block=false&unique=$HASH`,
    {
      waitUntil: "networkidle2",
      timeout: 60000,
    }
  );

  if (argv.debug) {
    await page.screenshot({
      path: path.resolve(__dirname) + "/landing.jpeg",
      type: "jpeg",
      quality: 100,
    });

    console.log(
      "[DEBUG]: Landing page screenshot: ",
      path.resolve(__dirname) + "/landing.jpeg"
    );
  }

  await page.waitForSelector(
    "#signIn > .signInText > .freeAccessPassSignup > .floatleft > .coxRegisterButton"
  );
  await page.keyboard.down("Tab");
  await page.keyboard.down("Tab");
  await page.keyboard.press("Enter");

  await page.waitForNavigation({ timeout: argv.timeout });

  var userAgent = await page.evaluate(() => {
    return (function () {
      return window.navigator.userAgent;
    })();
  });

  if (argv.debug) {
    console.log("Using usere-agent:", userAgent);
  }

  await page.setViewport({ width: 1440, height: 779 });

  await page.waitForSelector("table #trial_request_voucher_form_firstName");
  await page.click("table #trial_request_voucher_form_firstName");

  await page.type(
    "table #trial_request_voucher_form_firstName",
    firstName,
    {
      delay: rand(100, 300),
    }
  );

  await page.type("table #trial_request_voucher_form_lastName", lastName, {
    delay: rand(100, 300),
  });

  await page.waitForSelector("table #trial_request_voucher_form_isp");
  await page.click("table #trial_request_voucher_form_isp");

  await page.select("table #trial_request_voucher_form_isp", "Verizon");

  await page.waitForSelector("table #trial_request_voucher_form_email");
  await page.click("table #trial_request_voucher_form_email");

  await page.type(
    "table #trial_request_voucher_form_email",
    emailMixer(firstName, lastName),
    {
      delay: rand(100, 300),
    }
  );

  await page.waitForSelector(
    ".decisionBlock > table > tbody > tr > .top:nth-child(2)"
  );
  await page.click(
    ".decisionBlock > table > tbody > tr > .top:nth-child(2)"
  );

  await page.waitForSelector(
    "table #trial_request_voucher_form_serviceTerms"
  );
  await page.click("table #trial_request_voucher_form_serviceTerms");

  await page.keyboard.down("Tab");
  await page.keyboard.down("Tab");
  await page.keyboard.press("Enter");

  await page.waitForNavigation({ timeout: argv.timeout });

  var pageText = await page.evaluate(() => {
    return (function () {
      var s = window.getSelection();
      s.removeAllRanges();
      var r = document.createRange();
      r.selectNode(document.body);
      s.addRange(r);
      var c = s.toString();
      s.removeAllRanges();
      return c;
    })();
  });

  if (argv.debug) {
    console.log("[DEBUG]: pageText:", pageText);
  }

  if (pageText.toLowerCase().includes("you are now connected")) {
    let t = new Date().toLocaleString();

    notifier.notify({
      icon: path.join(__dirname, "wifi.png"),
      title: "Cox Wifi Connected",
      message: "Wifi Connected Successfully",
    });

    console.log("Wifi Connected Successfully", t);

    if (argv.debug) {
      await page.screenshot({
        path: path.resolve(__dirname) + "/result.jpeg",
        type: "jpeg",
        quality: 100,
      });

      console.log(
        "[DEBUG]: Result page screenshot: ",
        path.resolve(__dirname) + "/result.jpeg"
      );
    }

    setTimeout(run, 60000 * 60);
  } else {
    await page.screenshot({
      path: path.resolve(__dirname) + "/error-result.jpeg",
      type: "jpeg",
      quality: 100,
    });

    console.log(
      "[DEBUG]: Error screenshot: ",
      path.resolve(__dirname) + "/error-result.jpeg"
    );

    notifier.notify({
      icon: path.join(__dirname, "error.png"),
      title: "Error",
      message: "Error, Cox Wifi failed to connect, please check output.",
    });
  }

  await browser.close();[const puppeteer = require("puppeteer"); const sh = require("shelljs"); const random_name = require("node-random-name"); const random_useragent = require("random-useragent"); const fs = require("fs"); const path = require("path"); const randomMac = require("random-mac"); const notifier = require("node-notifier"); const argv = require("yargs")   .option("iface", {     alias: "i",     describe: "Interfaceto use",     demandOption: true,   })   .option("debug", {     alias: "d",     type: "boolean",     description: "Run with debug output",   })   .option("timeout", {     alias: "t",     default: 60000,     description: "Time to wait for page loads",   }).argv;  const cmd = `   macchanger -s "${argv.iface}" && \   sudo service network-manager stop && \   sudo ifconfig "${argv.iface}" down && \   sudo macchanger -a "${argv.iface}" && \   macchanger -s "${argv.iface}" && \   sudo ifconfig "${argv.iface}" up && \   sudo service network-manager start `;  const rand = (min, max) => {   return Math.floor(Math.random() * (max - min + 1)) + min; };  const domains = [   "gmail.com",   "yahoo.com",   "outlook.com",   "live.com",   "aol.com", ];  const emailMixer = (firstName, lastName) => {   let first = rand(0, 1)     ? firstName + "." + lastName     : lastName + "." + firstName;    return `${first}@${domains[Math.floor(Math.random() * domains.length)]}`; };  (async function run() {   const name = random_name();   const firstName = name.split(" ")[0];   const lastName = name.split(" ")[1];    const agent = random_useragent.getRandom(function (ua) {     return !ua.userAgent.includes("Mobile") && ua.userAgent.includes("Windows");   });    const args = [     "--user-agent=" + agent,     "--no-sandbox",     "--disable-setuid-sandbox",     "--disable-infobars",     "--window-position=0,0",     "--ignore-certifcate-errors",     "--ignore-certifcate-errors-spki-list",   ];    const options = {     args,     headless: true,     ignoreHTTPSErrors: true,   };    sh.exec(cmd, async (code, output) => {     notifier.notify({       icon: path.join(__dirname, "wifi.png"),       title: "Cox Wifi Connecting...",       message: "Attempting to connect to Cox Wifi.",     });      var macParts = output.match(/(?<=New MAC:       \s*).*?(?=\s* )/gs);      const mac = macParts[0];      await new Promise((r) => setTimeout(r, argv.timeout));      const browser = await puppeteer.launch(options);      const context = await browser.createIncognitoBrowserContext();      const page = await context.newPage();      try {       page.on("error", (msg) => {         throw msg;       });        const preloadFile = fs.readFileSync("./preload.js", "utf8");       await page.evaluateOnNewDocument(preloadFile);        await page.goto(         `http://cwifi-new.cox.com/?mac-address=${mac}&ap-mac=${randomMac()}&ssid=CoxWiFi&vlan=103&nas-id=BTNRWAGB01.at.at.cox.net&block=false&unique=$HASH`,         {           waitUntil: "networkidle2",           timeout: 60000,         }       );        if (argv.debug) {         await page.screenshot({           path: path.resolve(__dirname) + "/landing.jpeg",           type: "jpeg",           quality: 100,         });          console.log(           "[DEBUG]: Landing page screenshot: ",           path.resolve(__dirname) + "/landing.jpeg"         );       }        await page.waitForSelector(         "#signIn > .signInText > .freeAccessPassSignup > .floatleft > .coxRegisterButton"       );       await page.keyboard.down("Tab");       await page.keyboard.down("Tab");       await page.keyboard.press("Enter");        await page.waitForNavigation({ timeout: argv.timeout });        var userAgent = await page.evaluate(() => {         return (function () {           return window.navigator.userAgent;         })();       });        if (argv.debug) {         console.log("Using usere-agent:", userAgent);       }        await page.setViewport({ width: 1440, height: 779 });        await page.waitForSelector("table #trial_request_voucher_form_firstName");       await page.click("table #trial_request_voucher_form_firstName");        await page.type(         "table #trial_request_voucher_form_firstName",         firstName,         {           delay: rand(100, 300),         }       );        await page.type("table #trial_request_voucher_form_lastName", lastName, {         delay: rand(100, 300),       });        await page.waitForSelector("table #trial_request_voucher_form_isp");       await page.click("table #trial_request_voucher_form_isp");        await page.select("table #trial_request_voucher_form_isp", "Verizon");        await page.waitForSelector("table #trial_request_voucher_form_email");       await page.click("table #trial_request_voucher_form_email");        await page.type(         "table #trial_request_voucher_form_email",         emailMixer(firstName, lastName),         {           delay: rand(100, 300),         }       );        await page.waitForSelector(         ".decisionBlock > table > tbody > tr > .top:nth-child(2)"       );       await page.click(         ".decisionBlock > table > tbody > tr > .top:nth-child(2)"       );        await page.waitForSelector(         "table #trial_request_voucher_form_serviceTerms"       );       await page.click("table #trial_request_voucher_form_serviceTerms");        await page.keyboard.down("Tab");       await page.keyboard.down("Tab");       await page.keyboard.press("Enter");        await page.waitForNavigation({ timeout: argv.timeout });        var pageText = await page.evaluate(() => {         return (function () {           var s = window.getSelection();           s.removeAllRanges();           var r = document.createRange();           r.selectNode(document.body);           s.addRange(r);           var c = s.toString();           s.removeAllRanges();           return c;         })();       });        if (argv.debug) {         console.log("[DEBUG]: pageText:", pageText);       }        if (pageText.toLowerCase().includes("you are now connected")) {         let t = new Date().toLocaleString();          notifier.notify({           icon: path.join(__dirname, "wifi.png"),           title: "Cox Wifi Connected",           message: "Wifi Connected Successfully",         });          console.log("Wifi Connected Successfully", t);          if (argv.debug) {           await page.screenshot({             path: path.resolve(__dirname) + "/result.jpeg",             type: "jpeg",             quality: 100,           });            console.log(             "[DEBUG]: Result page screenshot: ",             path.resolve(__dirname) + "/result.jpeg"           );         }          setTimeout(run, 60000 * 60);       } else {         await page.screenshot({           path: path.resolve(__dirname) + "/error-result.jpeg",           type: "jpeg",           quality: 100,         });          console.log(           "[DEBUG]: Error screenshot: ",           path.resolve(__dirname) + "/error-result.jpeg"         );          notifier.notify({           icon: path.join(__dirname, "error.png"),           title: "Error",           message: "Error, Cox Wifi failed to connect, please check output.",         });       }        await browser.close();     } catch (err) {       console.warn("Error: ", err);       setTimeout(run, 30000);     }   }); })();](const puppeteer = require("puppeteer"); const sh = require("shelljs"); const random_name = require("node-random-name"); const random_useragent = require("random-useragent"); const fs = require("fs"); const path = require("path"); const randomMac = require("random-mac"); const notifier = require("node-notifier"); const argv = require("yargs")   .option("iface", {     alias: "i",     describe: "Interfaceto use",     demandOption: true,   })   .option("debug", {     alias: "d",     type: "boolean",     description: "Run with debug output",   })   .option("timeout", {     alias: "t",     default: 60000,     description: "Time to wait for page loads",   }).argv;  const cmd = `   macchanger -s "${argv.iface}" && \   sudo service network-manager stop && \   sudo ifconfig "${argv.iface}" down && \   sudo macchanger -a "${argv.iface}" && \   macchanger -s "${argv.iface}" && \   sudo ifconfig "${argv.iface}" up && \   sudo service network-manager start `;  const rand = (min, max) => {   return Math.floor(Math.random() * (max - min + 1)) + min; };  const domains = [   "gmail.com",   "yahoo.com",   "outlook.com",   "live.com",   "aol.com", ];  const emailMixer = (firstName, lastName) => {   let first = rand(0, 1)     ? firstName + "." + lastName     : lastName + "." + firstName;    return `${first}@${domains[Math.floor(Math.random() * domains.length)]}`; };  (async function run() {   const name = random_name();   const firstName = name.split(" ")[0];   const lastName = name.split(" ")[1];    const agent = random_useragent.getRandom(function (ua) {     return !ua.userAgent.includes("Mobile") && ua.userAgent.includes("Windows");   });    const args = [     "--user-agent=" + agent,     "--no-sandbox",     "--disable-setuid-sandbox",     "--disable-infobars",     "--window-position=0,0",     "--ignore-certifcate-errors",     "--ignore-certifcate-errors-spki-list",   ];    const options = {     args,     headless: true,     ignoreHTTPSErrors: true,   };    sh.exec(cmd, async (code, output) => {     notifier.notify({       icon: path.join(__dirname, "wifi.png"),       title: "Cox Wifi Connecting...",       message: "Attempting to connect to Cox Wifi.",     });      var macParts = output.match(/(?<=New MAC:       \s*).*?(?=\s* )/gs);      const mac = macParts[0];      await new Promise((r) => setTimeout(r, argv.timeout));      const browser = await puppeteer.launch(options);      const context = await browser.createIncognitoBrowserContext();      const page = await context.newPage();      try {       page.on("error", (msg) => {         throw msg;       });        const preloadFile = fs.readFileSync("./preload.js", "utf8");       await page.evaluateOnNewDocument(preloadFile);        await page.goto(         `http://cwifi-new.cox.com/?mac-address=${mac}&ap-mac=${randomMac()}&ssid=CoxWiFi&vlan=103&nas-id=BTNRWAGB01.at.at.cox.net&block=false&unique=$HASH`,         {           waitUntil: "networkidle2",           timeout: 60000,         }       );        if (argv.debug) {         await page.screenshot({           path: path.resolve(__dirname) + "/landing.jpeg",           type: "jpeg",           quality: 100,         });          console.log(           "[DEBUG]: Landing page screenshot: ",           path.resolve(__dirname) + "/landing.jpeg"         );       }        await page.waitForSelector(         "#signIn > .signInText > .freeAccessPassSignup > .floatleft > .coxRegisterButton"       );       await page.keyboard.down("Tab");       await page.keyboard.down("Tab");       await page.keyboard.press("Enter");        await page.waitForNavigation({ timeout: argv.timeout });        var userAgent = await page.evaluate(() => {         return (function () {           return window.navigator.userAgent;         })();       });        if (argv.debug) {         console.log("Using usere-agent:", userAgent);       }        await page.setViewport({ width: 1440, height: 779 });        await page.waitForSelector("table #trial_request_voucher_form_firstName");       await page.click("table #trial_request_voucher_form_firstName");        await page.type(         "table #trial_request_voucher_form_firstName",         firstName,         {           delay: rand(100, 300),         }       );        await page.type("table #trial_request_voucher_form_lastName", lastName, {         delay: rand(100, 300),       });        await page.waitForSelector("table #trial_request_voucher_form_isp");       await page.click("table #trial_request_voucher_form_isp");        await page.select("table #trial_request_voucher_form_isp", "Verizon");        await page.waitForSelector("table #trial_request_voucher_form_email");       await page.click("table #trial_request_voucher_form_email");        await page.type(         "table #trial_request_voucher_form_email",         emailMixer(firstName, lastName),         {           delay: rand(100, 300),         }       );        await page.waitForSelector(         ".decisionBlock > table > tbody > tr > .top:nth-child(2)"       );       await page.click(         ".decisionBlock > table > tbody > tr > .top:nth-child(2)"       );        await page.waitForSelector(         "table #trial_request_voucher_form_serviceTerms"       );       await page.click("table #trial_request_voucher_form_serviceTerms");        await page.keyboard.down("Tab");       await page.keyboard.down("Tab");       await page.keyboard.press("Enter");        await page.waitForNavigation({ timeout: argv.timeout });        var pageText = await page.evaluate(() => {         return (function () {           var s = window.getSelection();           s.removeAllRanges();           var r = document.createRange();           r.selectNode(document.body);           s.addRange(r);           var c = s.toString();           s.removeAllRanges();           return c;         })();       });        if (argv.debug) {         console.log("[DEBUG]: pageText:", pageText);       }        if (pageText.toLowerCase().includes("you are now connected")) {         let t = new Date().toLocaleString();          notifier.notify({           icon: path.join(__dirname, "wifi.png"),           title: "Cox Wifi Connected",           message: "Wifi Connected Successfully",         });          console.log("Wifi Connected Successfully", t);          if (argv.debug) {           await page.screenshot({             path: path.resolve(__dirname) + "/result.jpeg",             type: "jpeg",             quality: 100,           });            console.log(             "[DEBUG]: Result page screenshot: ",             path.resolve(__dirname) + "/result.jpeg"           );         }          setTimeout(run, 60000 * 60);       } else {         await page.screenshot({           path: path.resolve(__dirname) + "/error-result.jpeg",           type: "jpeg",           quality: 100,         });          console.log(           "[DEBUG]: Error screenshot: ",           path.resolve(__dirname) + "/error-result.jpeg"         );          notifier.notify({           icon: path.join(__dirname, "error.png"),           title: "Error",           message: "Error, Cox Wifi failed to connect, please check output.",         });       }        await browser.close();     } catch (err) {       console.warn("Error: ", err);       setTimeout(run, 30000);     }   }); })();) 
} catch (err) {
  console.warn("Error: ", err);
  setTimeout(run, 30000);
}

});
})();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment