Skip to content

Instantly share code, notes, and snippets.

@Klaster1
Last active August 5, 2023 19:41
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Klaster1/dd7991d59fc8e6a7ec2544b47a12e4e9 to your computer and use it in GitHub Desktop.
Save Klaster1/dd7991d59fc8e6a7ec2544b47a12e4e9 to your computer and use it in GitHub Desktop.
Rarbg automatic captcha solver
// ==UserScript==
// @name Rarbg captcha solver
// @version 1.2
// @grant none
// @match https://*/threat_defence.php?defence=2*
// @require https://unpkg.com/tesseract.js@v2.1.0/dist/tesseract.min.js
// @run-at document-idle
// @author Klaster_1
// @icon https://rarbgenter.org/favicon.ico
// @downloadURL https://gist.github.com/Klaster1/dd7991d59fc8e6a7ec2544b47a12e4e9/raw/rarbg-captcha-solver.user.js
// @updateURL https://gist.github.com/Klaster1/dd7991d59fc8e6a7ec2544b47a12e4e9/raw/rarbg-captcha-solver.user.js
// ==/UserScript==
/**
* @param {HTMLImageElement} img
*/
const waitForImage = async (img) => {
if (img.complete) return
await new Promise(resolve => img.addEventListener('load', resolve))
}
/**
* @param {HTMLImageElement} img
*/
const imageToDataURL = async (img) => {
const canvas = document.createElement('canvas')
canvas.width = img.width
canvas.height = img.height
const ctx = canvas.getContext('2d')
ctx.drawImage(img, 0, 0)
return canvas.toDataURL()
}
/**
* @param {string} url
* @returns Promise<string>
*/
const solveImageAtURL = async (url) => {
const worker = Tesseract.createWorker();
await worker.load();
await worker.loadLanguage('eng');
await worker.initialize('eng');
const { data: { text } } = await worker.recognize(url);
await worker.terminate();
return text
}
(async () => {
/**
* @type {HTMLImageElement}
*/
const img = document.querySelector('img[src*="captcha"]')
await waitForImage(img)
document.querySelector('#solve_string').value = await solveImageAtURL(await imageToDataURL(img))
document.querySelector('form').submit()
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment