scrapper-tools
Version:
Its in development but I use it in all my web automation project.
83 lines • 3.7 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const delay_1 = __importDefault(require("delay"));
const consoleMessage_1 = __importDefault(require("./consoleMessage"));
const waitForFrames_1 = __importDefault(require("./waitForFrames"));
function getCaptchaFrame(page) {
return __awaiter(this, void 0, void 0, function* () {
return yield waitForFrames_1.default(page, "https://www.google.com/recaptcha/api2/anchor");
});
}
function getBusterCaptchaFrame(page) {
return __awaiter(this, void 0, void 0, function* () {
return yield waitForFrames_1.default(page, "https://www.google.com/recaptcha/api2/bframe");
});
}
function solver(page) {
return __awaiter(this, void 0, void 0, function* () {
consoleMessage_1.default.success("Buster", "Clicking on captcha btn");
let captchaFrame = yield getCaptchaFrame(page);
yield (yield captchaFrame.waitForSelector("#recaptcha-anchor > div.recaptcha-checkbox-border", { visible: true })).click();
consoleMessage_1.default.success("Buster", "Waiting for buster frames");
let bCaptchaFrame = yield getBusterCaptchaFrame(page);
consoleMessage_1.default.success("Buster", "Clicking on buster solver icon");
while (true) {
try {
const recaptchaSolveButton = yield bCaptchaFrame.waitForSelector("#solver-button", {
visible: true,
timeout: 1000
});
yield recaptchaSolveButton.click();
}
catch (e) {
break;
}
}
try {
const recaptchaReload = yield bCaptchaFrame.waitForSelector("#reset-button", {
visible: true,
timeout: 500
});
yield recaptchaReload.click();
}
catch (e) { }
});
}
function default_1(page) {
return __awaiter(this, void 0, void 0, function* () {
while (true) {
console.log("ssss");
yield solver(page);
console.log("get captcha frame");
try {
let captchaFrame = yield getCaptchaFrame(page);
let captchaClasses = yield captchaFrame.evaluate(() => {
if (document.querySelector(".recaptcha-checkbox")) {
return document.querySelector(".recaptcha-checkbox").className;
}
return false;
});
if (captchaClasses.includes("recaptcha-checkbox-checked")) {
break;
}
}
catch (e) { }
yield delay_1.default(1000);
}
consoleMessage_1.default.success("Buster", "Captcha should be solved");
});
}
exports.default = default_1;
//# sourceMappingURL=solveCaptchaByBuster.js.map