NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name noCaptchaAI hCaptcha Solver // @namespace https://nocaptchaai.com // @version 1.1.4 // @description hCaptcha Solver automated Captcha Solver bypass Ai service. Free 6000 🔥solves/month! 50x⚡ faster than 2Captcha & others // @author noCaptcha AI and Diego // @match https://*.hcaptcha.com/* // @match https://config.nocaptchaai.com/* // @updateURL https://github.com/noCaptchaAi/hCaptchaSolver.user.js/raw/main/hCaptchaSolver.user.js // @downloadURL https://github.com/noCaptchaAi/hCaptchaSolver.user.js/raw/main/hCaptchaSolver.user.js // @icon https://docs.nocaptchaai.com/img/nocaptchaai.com.png // @name:ar noCaptchaAI hCaptcha Solver حلال // @description:ar تجاوز برنامج Captcha Solver الآلي لخدمة hCaptcha Solver خدمة Ai. 6000 🔥 حل / شهر مجاني! 50x⚡ أسرع من 2Captcha وغيرها // @name:ru noCaptchaAI Решатель капчи hCaptcha // @description:ru hCaptcha Solver автоматизирует решение Captcha Solver в обход сервиса Ai. Бесплатно 6000 🔥решений/месяц! В 50 раз⚡ быстрее, чем 2Captcha и другие // @name:zh-CN noCaptchaAI 验证码求解器 // @description:zh-CN hCaptcha Solver 自动绕过 Ai 服务的 Captcha Solver。 免费 6000 🔥解决/月! 比 2Captcha 和其他人快 50x⚡ // @grant GM_setValue // @grant GM_getValue // @grant GM_openInTab // @grant GM_registerMenuCommand // @inject-into content // @license MIT // ==/UserScript== if (location.origin === "https://config.nocaptchaai.com") { const broadcastChannel = new BroadcastChannel("nocaptcha"); broadcastChannel.postMessage({ uid: GM_getValue("uid"), apikey: GM_getValue("apikey"), }); broadcastChannel.addEventListener("message", function ({ data }) { console.log("Got message", data); GM_setValue("uid", data.uid); GM_setValue("apikey", data.apikey); }); return; } GM_registerMenuCommand( "Open Config Webpage", function () { GM_openInTab("https://config.nocaptchaai.com"); }, "O" ); if (!navigator.onLine) return; if (!GM_getValue("uid") || !GM_getValue("apikey")) { if (!GM_getValue("notified")) { GM_openInTab( "https://config.nocaptchaai.com?msg=Please enter your details on the page before starting to use the userscript", "active" ); GM_setValue("notified", true); } log("❌ uid and apikey not found"); return; } // navigator.__defineGetter__('language', () => 'en'); function random(min, max) { return Math.floor(Math.random() * (max - min) + min); } function sleep(ms) { return new Promise((resolve) => setTimeout(resolve, ms)); } function log(msg) { console.log( "%cnoCaptchaAi.com ~ %c" + msg, "background: #222; color: #bada55", "" ); } async function getBase64FromUrl(url) { const blob = await (await fetch(url)).blob(); return new Promise(function (resolve) { const reader = new FileReader(); reader.readAsDataURL(blob); reader.addEventListener("loadend", function () { resolve(reader.result.replace(/^data:image\/(png|jpeg);base64,/, "")); }); reader.addEventListener("error", function () { log("❌ Failed to convert url to base64"); }); }); } (async function noCaptcha(secondTime = false) { const baseUrl = "https://free.nocaptchaai.com/api/solve", searchParams = new URLSearchParams(location.hash), images = {}; console.time("noCaptchaAi.com ~ ⌛ solved in"); if (!secondTime) { await sleep(1000); document.querySelector("#checkbox")?.click(); await sleep(2000); } const imgs = document.querySelectorAll(".task-image .image"), target = document.querySelector(".prompt-text")?.textContent; // const images = {...[...imgs].map(ele => ele.style.background.match(/url\("(.*)"/)[1] || 0)}; // const images = await [...imgs].reduce(async function(acc, element, index) { // const url = element.style.background.match(/url\("(.*)"/)[1] // if (!url) return; // return { [index]: await getBase64FromUrl(url), ...acc }; // }, {}) if (!target) { return log("❌ Couldn't find the target"); } const start = performance.now() / 1000; for (let i = 0; i < imgs.length; i++) { const url = imgs[i].style.background.match(/url\("(.*)"/)[1]; if (!url) break; images[i] = await getBase64FromUrl(url); } if (Object.keys(images).length === 0) { return log("❌ Couldn't find the pictures"); } const end = performance.now() / 1000; log("☑️ converted to base64 ~ " + (end - start).toFixed(2) + "s"); // if script not working with your language, use code below commented // let frameLang = document.querySelector( // "body > div.challenge-interface > div.language-selector > div.display-language.button > div" // ); // console.log(frameLang.innerHTML.toLowerCase()); // console.log(navigator.language); try { let response = await fetch(baseUrl, { method: "POST", headers: { "Content-Type": "application/json", uid: GM_getValue("uid"), apikey: GM_getValue("apikey"), }, body: JSON.stringify({ images, target: document.querySelector(".prompt-text").textContent, method: "hcaptcha_base64", sitekey: searchParams.get("sitekey"), site: searchParams.get("host"), ln: document.documentElement.lang, softid: "UserScript", }), }); response = await response.json(); if (response.status == "new") { await sleep(2000); let status = await (await fetch(response.url)).json(); if (status.status == "in queue") { log("🕘 waiting for response"); await sleep(2000); status = await (await fetch(response.url)).json(); } if (status.status == "solved") { log("☑️ solved"); for (const index of status.solution) { imgs[index].click(); await sleep(200); } } console.log(response, status); } else if (response.status === "solved") { log("☑️ solved"); for (const index of response.solution) { imgs[index].click(); await sleep(random(280, 350)); } } else { // return alert(response.status); // document.querySelector(".button-submit").click(); } } catch (error) { log("❌ error sending request"); } log("🕓 waiting 2-3s"); await sleep(random(2000, 3000)); document.querySelector(".button-submit").click(); console.timeEnd("noCaptchaAi.com ~ ⌛ solved in"); log("☑️ verifiying"); await sleep(1000); noCaptcha(true); })();